24 static char key[100], data[500];
 
   37     G_debug(3, 
"  get_key_data(): %s", buf);
 
   53     G_debug(3, 
"  key = %s data = %s", key, data);
 
  192     while (
G_getl2(buf, 500, fp) != 0) {
 
  196         if ((buf[0] == 
'#') || (buf[0] == 
'\0'))
 
  201         if (strcmp(key, 
"END") == 0) {
 
  206         if (sscanf(buf, 
"%lf %lf", &
x, &y) != 2) {
 
  207             G_warning(
_(
"Cannot read symbol line coordinates: %s"), buf);
 
  235     char group[500], 
name[500], buf[2001], buf2[2048];
 
  238     double x, y, x2, y2, rad, ang1, ang2;
 
  249     G_debug(3, 
"S_read(): sname = %s", sname);
 
  254     c = strchr(group, 
'/');
 
  256         G_warning(
_(
"Incorrect symbol name: '%s' (should be: group/name or " 
  257                     "group/name@mapset)"),
 
  266     G_debug(3, 
"  group: '%s' name: '%s'", group, 
name);
 
  269     snprintf(buf, 
sizeof(buf), 
"symbol/%s", group);
 
  276         snprintf(buf, 
sizeof(buf), 
"%s/etc/symbol/%s", 
G_gisbase(), sname);
 
  277         fp = fopen(buf, 
"r");
 
  281         G_warning(
_(
"Cannot find/open symbol: '%s'"), sname);
 
  291     while (
G_getl2(buf, 2000, fp) != 0) {
 
  296         if ((buf[0] == 
'#') || (buf[0] == 
'\0'))
 
  301         if (strcmp(key, 
"VERSION") == 0) {
 
  302             if (strcmp(data, 
"1.0") != 0) {
 
  303                 snprintf(buf, 
sizeof(buf), 
"Wrong symbol version: '%s'", data);
 
  304                 return (
err(fp, symb, buf));
 
  307         else if (strcmp(key, 
"BOX") == 0) {
 
  308             if (sscanf(data, 
"%lf %lf %lf %lf", &
x, &y, &x2, &y2) != 4) {
 
  309                 snprintf(buf, 
sizeof(buf), 
"Incorrect box definition: '%s'",
 
  311                 return (
err(fp, symb, buf));
 
  314             symb->
yscale = 1 / (y2 - y);
 
  315             if (x2 - 
x > y2 - y) {
 
  322         else if (strcmp(key, 
"STRING") == 0) {
 
  331         else if (strcmp(key, 
"POLYGON") == 0) {
 
  337         else if (strcmp(key, 
"RING") == 0) {
 
  343         else if (strcmp(key, 
"LINE") == 0) {
 
  349         else if (strcmp(key, 
"ARC") == 0) {
 
  351             ret = sscanf(data, 
"%lf %lf %lf %lf %lf %c", &
x, &y, &rad, &ang1,
 
  354                 snprintf(buf2, 
sizeof(buf2), 
"Incorrect arc definition: '%s'",
 
  356                 return (
err(fp, symb, buf2));
 
  358             if (ret == 6 && (clock == 
'c' || clock == 
'C'))
 
  362             elem = 
new_arc(
x, y, rad, ang1, ang2, i);
 
  365         else if (strcmp(key, 
"END") == 0) {
 
  381         else if (strcmp(key, 
"COLOR") == 0) {
 
  385             else if (sscanf(data, 
"%d %d %d", &
r, &
g, &
b) == 3) {
 
  386                 if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255)
 
  387                     G_warning(
_(
"Incorrect symbol color: '%s', using default."),
 
  400                     G_debug(4, 
"  color [%d %d %d] = [%.3f %.3f %.3f]", 
r, 
g, 
b,
 
  405                 G_warning(
_(
"Incorrect symbol color: '%s', using default."),
 
  409         else if (strcmp(key, 
"FCOLOR") == 0) {
 
  413             else if (sscanf(data, 
"%d %d %d", &
r, &
g, &
b) == 3) {
 
  414                 if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255)
 
  415                     G_warning(
_(
"Incorrect symbol color: '%s', using default."),
 
  428                     G_debug(4, 
"  color [%d %d %d] = [%.3f %.3f %.3f]", 
r, 
g, 
b,
 
  433                 G_warning(
_(
"Incorrect symbol color: '%s', using default."),
 
  438             snprintf(buf2, 
sizeof(buf2), 
"Unknown keyword in symbol: '%s'",
 
  440             return (
err(fp, symb, buf2));
 
  448     for (i = 0; i < symb->
count; i++) {
 
  449         part = symb->
part[i];
 
  450         G_debug(4, 
"  Part %d: type: %d number of chains: %d", i, part->
type,
 
  454         for (j = 0; j < part->
count; j++) {
 
  455             chain = part->
chain[j];
 
  456             G_debug(4, 
"    Chain %d: number of elements: %d", j, chain->
count);
 
  457             for (k = 0; k < chain->
count; k++) {
 
  458                 elem = chain->
elem[k];
 
  459                 G_debug(4, 
"      Element %d: type: %d", k, elem->
type);
 
  461                     G_debug(4, 
"        Number of points %d",
 
FILE * G_fopen_old(const char *, const char *, const char *)
Open a database file for reading.
int G_getl2(char *, int, FILE *)
Gets a line of text from a file of any pedigree.
void G_free(void *)
Free allocated memory.
void G_warning(const char *,...) __attribute__((format(printf
int int G_strcasecmp(const char *, const char *)
String compare ignoring case (upper or lower)
const char * G_gisbase(void)
Get full path name of the top level module directory.
char * G_chop(char *)
Chop leading and trailing white spaces.
int G_debug(int, const char *,...) __attribute__((format(printf
const char * G_find_file(const char *, char *, const char *)
Searches for a file from the mapset search list or in a specified mapset.
struct SYMBEL::@6::@8 arc
struct SYMBEL::@6::@7 line
void get_key_data(char *buf)
SYMBPART * new_part(int type)
SYMBOL * S_read(const char *sname)
SYMBEL * new_arc(double x, double y, double r, double a1, double a2, int c)
SYMBOL * err(FILE *fp, SYMBOL *s, char *msg)
SYMBCHAIN * new_chain(void)
void add_part(SYMBOL *s, SYMBPART *p)
void add_chain(SYMBPART *p, SYMBCHAIN *s)
SYMBOL * new_symbol(void)
void read_coor(FILE *fp, SYMBEL *e)
void add_point(SYMBEL *el, double x, double y)
void add_element(SYMBCHAIN *s, SYMBEL *e)