Changeset a35b458 in mainline for uspace/lib/draw/font/bitmap_backend.c
- Timestamp:
- 2018-03-02T20:10:49Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
-
uspace/lib/draw/font/bitmap_backend.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/draw/font/bitmap_backend.c
r3061bc1 ra35b458 62 62 { 63 63 bitmap_backend_data_t *data = (bitmap_backend_data_t *) backend_data; 64 64 65 65 *font_metrics = data->font_metrics; 66 66 67 67 return EOK; 68 68 } … … 78 78 { 79 79 bitmap_backend_data_t *data = (bitmap_backend_data_t *) backend_data; 80 80 81 81 if (glyph_id >= data->glyph_count) 82 82 return ENOENT; 83 83 84 84 if (data->glyph_cache[glyph_id].metrics_loaded) { 85 85 *glyph_metrics = data->glyph_cache[glyph_id].metrics; 86 86 return EOK; 87 87 } 88 88 89 89 glyph_metrics_t gm; 90 90 91 91 errno_t rc = data->decoder->load_glyph_metrics(data->decoder_data, glyph_id, 92 92 &gm); 93 93 if (rc != EOK) 94 94 return rc; 95 95 96 96 if (data->scale) { 97 97 gm.left_side_bearing = (metric_t) … … 106 106 (data->scale_ratio * gm.height + 0.5); 107 107 } 108 109 110 108 109 110 111 111 data->glyph_cache[glyph_id].metrics = gm; 112 112 data->glyph_cache[glyph_id].metrics_loaded = true; … … 120 120 if (glyph_id >= data->glyph_count) 121 121 return ENOENT; 122 122 123 123 if (data->glyph_cache[glyph_id].surface != NULL) { 124 124 *result = data->glyph_cache[glyph_id].surface; 125 125 return EOK; 126 126 } 127 127 128 128 surface_t *raw_surface; 129 129 errno_t rc = data->decoder->load_glyph_surface(data->decoder_data, glyph_id, … … 131 131 if (rc != EOK) 132 132 return rc; 133 133 134 134 sysarg_t w; 135 135 sysarg_t h; 136 136 surface_get_resolution(raw_surface, &w, &h); 137 137 138 138 if (!data->scale) { 139 139 *result = raw_surface; 140 140 return EOK; 141 141 } 142 142 143 143 source_t source; 144 144 source_init(&source); … … 167 167 168 168 surface_destroy(raw_surface); 169 169 170 170 data->glyph_cache[glyph_id].surface = scaled_surface; 171 171 *result = scaled_surface; … … 177 177 { 178 178 bitmap_backend_data_t *data = (bitmap_backend_data_t *) backend_data; 179 179 180 180 glyph_metrics_t glyph_metrics; 181 181 errno_t rc = bb_get_glyph_metrics(backend_data, glyph_id, &glyph_metrics); 182 182 if (rc != EOK) 183 183 return rc; 184 184 185 185 surface_t *glyph_surface; 186 186 rc = get_glyph_surface(data, glyph_id, &glyph_surface); 187 187 if (rc != EOK) 188 188 return rc; 189 189 190 190 native_t x = ox + glyph_metrics.left_side_bearing; 191 191 native_t y = oy - glyph_metrics.ascender; 192 192 193 193 transform_t transform; 194 194 transform_identity(&transform); … … 230 230 if (glyph_count == 0) 231 231 return EINVAL; 232 232 233 233 bitmap_backend_data_t *data = malloc(sizeof(bitmap_backend_data_t)); 234 234 if (data == NULL) … … 275 275 return ENOMEM; 276 276 } 277 277 278 278 *out_font = font; 279 279 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.
