| 143 | |
| 144 | |
| 145 | faceCacheObj *getFontFace(cairoCacheData *cache, char *font) { |
| 146 | faceCacheObj *newface = NULL; |
| 147 | faceCacheObj *cur=cache->facecache; |
| 148 | while(cur) { |
| 149 | if(!strcmp(cur->path,font)) |
| 150 | return cur; |
| 151 | cur = cur->next; |
| 152 | } |
| 153 | newface = malloc(sizeof(faceCacheObj)); |
| 154 | |
| 155 | if(FT_New_Face(cache->library, font, 0, &(newface->ftface))) { |
| 156 | msSetError(MS_RENDERERERR,"Freetype failed to open font %s","getFontFace()",font); |
| 157 | free(newface); |
| 158 | return NULL; |
| 159 | } |
| 160 | newface->next = cache->facecache; |
| 161 | cache->facecache = newface; |
| 162 | newface->face = cairo_ft_font_face_create_for_ft_face(newface->ftface, 0); |
| 163 | |
| 164 | cairo_font_face_set_user_data (newface->face, &newface->facekey, |
| 165 | &(newface->ftface), (cairo_destroy_func_t) FT_Done_Face); |
| 166 | |
| 167 | newface->path = msStrdup(font); |
| 168 | return newface; |
| 169 | } |
| 170 | |
| 171 | #define msCairoSetSourceColor(cr, c) cairo_set_source_rgba((cr),(c)->red/255.0,(c)->green/255.0,(c)->blue/255.0,(c)->alpha/255.0); |
| 172 |
no test coverage detected