void SkPictureRecord::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, const SkPaint* paint) { addDraw(DRAW_BITMAP_MATRIX); addPaintPtr(paint); addBitmap(bitmap); addMatrix(matrix); validate(); }
void SkPictureRecord::drawSprite(const SkBitmap& bitmap, int left, int top, const SkPaint* paint = NULL) { addDraw(DRAW_SPRITE); addPaintPtr(paint); addBitmap(bitmap); addInt(left); addInt(top); validate(); }
void SkPictureRecord::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { addDraw(DRAW_BITMAP_NINE); addPaintPtr(paint); addBitmap(bitmap); addIRect(center); addRect(dst); validate(); }
void SkPictureRecord::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src, const SkRect& dst, const SkPaint* paint) { addDraw(DRAW_BITMAP_RECT); addPaintPtr(paint); addBitmap(bitmap); addIRectPtr(src); // may be null addRect(dst); validate(); }
void SkPictureRecord::drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint = NULL) { addDraw(DRAW_BITMAP); addPaintPtr(paint); addBitmap(bitmap); addScalar(left); addScalar(top); validate(); }
bool FontManager::preloadGlyph(FontHandle _handle, CodePoint _codePoint) { BX_CHECK(bgfx::isValid(_handle), "Invalid handle used"); CachedFont& font = m_cachedFonts[_handle.idx]; FontInfo& fontInfo = font.fontInfo; GlyphHashMap::iterator iter = font.cachedGlyphs.find(_codePoint); if (iter != font.cachedGlyphs.end() ) { return true; } if (NULL != font.trueTypeFont) { GlyphInfo glyphInfo; switch (font.fontInfo.fontType) { case FONT_TYPE_ALPHA: font.trueTypeFont->bakeGlyphAlpha(_codePoint, glyphInfo, m_buffer); break; case FONT_TYPE_DISTANCE: font.trueTypeFont->bakeGlyphDistance(_codePoint, glyphInfo, m_buffer); break; case FONT_TYPE_DISTANCE_SUBPIXEL: font.trueTypeFont->bakeGlyphDistance(_codePoint, glyphInfo, m_buffer); break; default: BX_CHECK(false, "TextureType not supported yet"); } if (!addBitmap(glyphInfo, m_buffer) ) { return false; } glyphInfo.advance_x = (glyphInfo.advance_x * fontInfo.scale); glyphInfo.advance_y = (glyphInfo.advance_y * fontInfo.scale); glyphInfo.offset_x = (glyphInfo.offset_x * fontInfo.scale); glyphInfo.offset_y = (glyphInfo.offset_y * fontInfo.scale); glyphInfo.height = (glyphInfo.height * fontInfo.scale); glyphInfo.width = (glyphInfo.width * fontInfo.scale); font.cachedGlyphs[_codePoint] = glyphInfo; return true; } if (isValid(font.masterFontHandle) && preloadGlyph(font.masterFontHandle, _codePoint) ) { const GlyphInfo* glyph = getGlyphInfo(font.masterFontHandle, _codePoint); GlyphInfo glyphInfo = *glyph; glyphInfo.advance_x = (glyphInfo.advance_x * fontInfo.scale); glyphInfo.advance_y = (glyphInfo.advance_y * fontInfo.scale); glyphInfo.offset_x = (glyphInfo.offset_x * fontInfo.scale); glyphInfo.offset_y = (glyphInfo.offset_y * fontInfo.scale); glyphInfo.height = (glyphInfo.height * fontInfo.scale); glyphInfo.width = (glyphInfo.width * fontInfo.scale); font.cachedGlyphs[_codePoint] = glyphInfo; return true; } return false; }