Пример #1
0
static char *GuessWeight(char *fontname) {
   int i;

   for (i=0; knownweights[i] != NULL; ++i)
      if (strstr(fontname, knownweights[i]) != NULL)
	 return (fastrdup(realweights[i]));

   return (fastrdup("Regular"));
}
Пример #2
0
char *getFontAnvilShareDir(void) {
#if defined(__MINGW32__)
#   ifndef MAX_PATH
#      define MAX_PATH 4096
#   endif
   static char *sharedir=NULL;

   if (!sharedir) {
      char path[MAX_PATH+32];
      char *c=path;
      char *tail=0;
      unsigned int len=GetModuleFileNameA(NULL, path, MAX_PATH);

      path[len]='\0';
      for (; *c; *c++) {
	 if (*c=='\\') {
	    tail=c;
	    *c='/';
	 }
      }
      if (!tail)
	 tail=c;
      strcpy(tail, "/share/fontanvil");
      sharedir=fastrdup(path);
   }
   return sharedir;
#elif defined(SHAREDIR)
   return (SHAREDIR "/fontanvil");
#elif defined(PREFIX)
   return (PREFIX "/share/fontanvil");
#else
   return (NULL);
#endif
}
Пример #3
0
static char *despace(char *fontname) {
   char *pt, *npt;

   fontname=fastrdup(fontname);
   for (pt=npt=fontname; *pt; ++pt)
      if (*pt != ' ')
	 *npt++=*pt;
   *npt='\0';
   return (fontname);
}
Пример #4
0
int GetPrefs(char *name, Val * val) {
   int i, j;

   for (i=0; prefs_list[i] != NULL; ++i)
      for (j=0; prefs_list[i][j].name != NULL; ++j) {
	 if (strcmp(prefs_list[i][j].name, name)==0) {
	    struct prefs_list *pf=&prefs_list[i][j];

	    if (pf->type==pr_bool || pf->type==pr_int
		|| pf->type==pr_unicode) {
	       val->type=v_int;
	       val->u.ival=*((int *) (pf->val));
	    } else if (pf->type==pr_string || pf->type==pr_file) {
	       val->type=v_str;
	       char *tmpstr =
		  pf->val?*((char **) (pf->val)):(char *) (pf->get) ();
	       val->u.sval=fastrdup(tmpstr?tmpstr:"");

	       if (!pf->val)
		  free(tmpstr);
	    } else if (pf->type==pr_encoding) {
	       val->type=v_str;
	       if (*((NameList **) (pf->val))==NULL)
		  val->u.sval=fastrdup("NULL");
	       else
		  val->u.sval=fastrdup((*((Encoding **) (pf->val)))->enc_name);
	    } else if (pf->type==pr_namelist) {
	       val->type=v_str;
	       val->u.sval=fastrdup((*((NameList **) (pf->val)))->title);
	    } else if (pf->type==pr_real) {
	       val->type=v_real;
	       val->u.fval=*((float *) (pf->val));
	    } else
	       return (false);

	    return (true);
	 }
      }
   return (false);
}
Пример #5
0
static char *GuessFamily(char *fontname) {
   char *fpt, *pt;
   int i, j;

   if ((fpt=strchr(fontname, '-')) != NULL && fpt != fontname)
      return (copyn(fontname, fpt - fontname));
   if ((fpt=strchr(fontname, '.')) != NULL && fpt != fontname)
      return (copyn(fontname, fpt - fontname));

   for (i=0; mods[i] != NULL; ++i)
      for (j=0; mods[i][j] != NULL; ++j) {
	 pt=strstr(fontname, mods[i][j]);
	 if (pt != NULL && (fpt==NULL || pt < fpt))
	    fpt=pt;
      }

   if (fpt==NULL)
      return (fastrdup(fontname));

   return (copyn(fontname, fpt - fontname));
}
Пример #6
0
char *GFileMakeAbsoluteName(char *name) {
   char buffer[1025];

   GFileGetAbsoluteName(name, buffer, sizeof(buffer));
   return (fastrdup(buffer));
}
Пример #7
0
int SetPrefs(char *name, Val * val1, Val * val2) {
   int i, j;

   for (i=0; prefs_list[i] != NULL; ++i)
      for (j=0; prefs_list[i][j].name != NULL; ++j) {
	 if (strcmp(prefs_list[i][j].name, name)==0) {
	    struct prefs_list *pf=&prefs_list[i][j];

	    if (pf->type==pr_bool || pf->type==pr_int
		|| pf->type==pr_unicode) {
	       if ((val1->type != v_int && val1->type != v_unicode)
		   || val2 != NULL)
		  return (-1);
	       *((int *) (pf->val))=val1->u.ival;
	    } else if (pf->type==pr_real) {
	       if (val1->type==v_real && val2==NULL)
		  *((float *) (pf->val))=val1->u.fval;
	       else if (val1->type != v_int
			|| (val2 != NULL && val2->type != v_int))
		  return (-1);
	       else
		  *((float *) (pf->val)) =
		     (val2 ==
		      NULL?val1->u.ival:val1->u.ival /
		      (double) val2->u.ival);
	    } else if (pf->type==pr_string || pf->type==pr_file) {
	       if (val1->type != v_str || val2 != NULL)
		  return (-1);
	       if (pf->set) {
		  pf->set(val1->u.sval);
	       } else {
		  free(*((char **) (pf->val)));
		  *((char **) (pf->val))=fastrdup(val1->u.sval);
	       }
	    } else if (pf->type==pr_encoding) {
	       if (val2 != NULL)
		  return (-1);
	       else if (val1->type==v_str && pf->val==&default_encoding) {
		  Encoding *enc=FindOrMakeEncoding(val1->u.sval);

		  if (enc==NULL)
		     return (-1);
		  *((Encoding **) (pf->val))=enc;
	       } else
		  return (-1);
	    } else if (pf->type==pr_namelist) {
	       if (val2 != NULL)
		  return (-1);
	       else if (val1->type==v_str) {
		  NameList *nl=NameListByName(val1->u.sval);

		  if (strcmp(val1->u.sval, "NULL")==0
		      && pf->val != &namelist_for_new_fonts)
		     nl=NULL;
		  else if (nl==NULL)
		     return (-1);
		  *((NameList **) (pf->val))=nl;
	       } else
		  return (-1);
	    } else
	       return (false);

	    return (true);
	 }
      }
   return (false);
}