| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrGpu.h" | 8 #include "GrGpu.h" |
| 9 #include "GrRectanizer.h" | 9 #include "GrRectanizer.h" |
| 10 #include "GrSurfacePriv.h" | 10 #include "GrSurfacePriv.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 #endif | 220 #endif |
| 221 | 221 |
| 222 /* | 222 /* |
| 223 The text strike is specific to a given font/style/matrix setup, which is | 223 The text strike is specific to a given font/style/matrix setup, which is |
| 224 represented by the GrHostFontScaler object we are given in getGlyph(). | 224 represented by the GrHostFontScaler object we are given in getGlyph(). |
| 225 | 225 |
| 226 We map a 32bit glyphID to a GrGlyph record, which in turn points to a | 226 We map a 32bit glyphID to a GrGlyph record, which in turn points to a |
| 227 atlas and a position within that texture. | 227 atlas and a position within that texture. |
| 228 */ | 228 */ |
| 229 | 229 |
| 230 GrTextStrike::GrTextStrike(GrFontCache* cache, const GrFontDescKey* key) : fPool
(64) { | 230 GrTextStrike::GrTextStrike(GrFontCache* cache, const GrFontDescKey* key) { |
| 231 fFontScalerKey = key; | 231 fFontScalerKey = key; |
| 232 fFontScalerKey->ref(); | 232 fFontScalerKey->ref(); |
| 233 | 233 |
| 234 fFontCache = cache; // no need to ref, it won't go away before we do | 234 fFontCache = cache; // no need to ref, it won't go away before we do |
| 235 | 235 |
| 236 #ifdef SK_DEBUG | 236 #ifdef SK_DEBUG |
| 237 // SkDebugf(" GrTextStrike %p %d\n", this, gCounter); | 237 // SkDebugf(" GrTextStrike %p %d\n", this, gCounter); |
| 238 gCounter += 1; | 238 gCounter += 1; |
| 239 #endif | 239 #endif |
| 240 } | 240 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 260 if (!scaler->getPackedGlyphDFBounds(packed, &bounds)) { | 260 if (!scaler->getPackedGlyphDFBounds(packed, &bounds)) { |
| 261 return NULL; | 261 return NULL; |
| 262 } | 262 } |
| 263 } else { | 263 } else { |
| 264 if (!scaler->getPackedGlyphBounds(packed, &bounds)) { | 264 if (!scaler->getPackedGlyphBounds(packed, &bounds)) { |
| 265 return NULL; | 265 return NULL; |
| 266 } | 266 } |
| 267 } | 267 } |
| 268 GrMaskFormat format = scaler->getPackedGlyphMaskFormat(packed); | 268 GrMaskFormat format = scaler->getPackedGlyphMaskFormat(packed); |
| 269 | 269 |
| 270 GrGlyph* glyph = fPool.alloc(); | 270 GrGlyph* glyph = (GrGlyph*)fPool.alloc(sizeof(GrGlyph), SK_MALLOC_THROW); |
| 271 glyph->init(packed, bounds, format); | 271 glyph->init(packed, bounds, format); |
| 272 fCache.add(glyph); | 272 fCache.add(glyph); |
| 273 return glyph; | 273 return glyph; |
| 274 } | 274 } |
| 275 | 275 |
| 276 void GrTextStrike::removePlot(const GrPlot* plot) { | 276 void GrTextStrike::removePlot(const GrPlot* plot) { |
| 277 SkTDynamicHash<GrGlyph, GrGlyph::PackedID>::Iter iter(&fCache); | 277 SkTDynamicHash<GrGlyph, GrGlyph::PackedID>::Iter iter(&fCache); |
| 278 while (!iter.done()) { | 278 while (!iter.done()) { |
| 279 if (plot == (*iter).fPlot) { | 279 if (plot == (*iter).fPlot) { |
| 280 (*iter).fPlot = NULL; | 280 (*iter).fPlot = NULL; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 glyph->width(), glyph->height(), | 336 glyph->width(), glyph->height(), |
| 337 storage.get(), &glyph->fAtlasLocation)
; | 337 storage.get(), &glyph->fAtlasLocation)
; |
| 338 | 338 |
| 339 if (NULL == plot) { | 339 if (NULL == plot) { |
| 340 return false; | 340 return false; |
| 341 } | 341 } |
| 342 | 342 |
| 343 glyph->fPlot = plot; | 343 glyph->fPlot = plot; |
| 344 return true; | 344 return true; |
| 345 } | 345 } |
| OLD | NEW |