のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

Skia

skiaをコンパイルしたときのclangのワーニング

clang 3.5をubuntu14.04にインストールした。 include $(CLEAR_VARS) LOCAL_CLANG=true <=== この行を追加した。 LOCAL_FDO_SUPPORT := true LOCAL_ARM_MODE := thumbexternal/skia/src/images/SkImageDecoder.cpp:25:7: warning: field 'fDitherImage' will…

getUniqueString

855 const char* name = ((FamilyTypeface*)face)->getUniqueString(); 856 857 stream->write8((uint8_t)face->style()); 858 859 if (NULL == name || 0 == *name) { 860 stream->writePackedUInt(0); 861 // SkDebugf("--- fonthost serialize null\n"); …

SkFontConfigInterface.hをインクルードしているファイル

/external/skia/src/ports/ SkFontConfigTypeface.h 8 #include "SkFontConfigInterface.h" SkFontHost_fontconfig.cpp 8 #include "SkFontConfigInterface.h" SkFontConfigInterface_android.cpp 9 #include "SkFontConfigInterface.h" SkFontConfigInterfa…

openStream

openStreamの流れ

SkGTypeface

SkGTypeface::SkGTypeface(SkTypeface* proxy, const SkPaint& paint) : SkTypeface(proxy->style(), SkTypefaceCache::NewFontID(), false) , fProxy(SkRef(proxy)) , fPaint(paint) {} SkGTypeface::~SkGTypeface() { fProxy->unref(); }start a wrapper f…

skia cmap その2

skia cmap その2

skia cmapその1

skia cmapその1

chromium_org/third_party/skia/src/core/SkGlyphCache.cpp

ここはchromium_orgで使用していないようだ。 makeを実行してもコンパイルが動かなかった。/external/chromium_org/third_party/skia/src/core/SkGlyphCache.cpp 56 SkGlyphCache::SkGlyphCache(SkTypeface* typeface, const SkDescriptor* desc, SkScalerCo…

SkPicture

194 SkPicture::SkPicture(SkStream* stream) : SkRefCnt() { 195 const uint32_t pictureVersion = stream->readU32(); 196 if (pictureVersion != PICTURE_VERSION_ICS && 197 pictureVersion != PICTURE_VERSION_JB) { 198 sk_throw(); 199 } 200 201 fWi…

writeTypeface

58 static size_t writeTypeface(SkWriter32* writer, SkTypeface* typeface) { 59 SkASSERT(typeface); 60 SkDynamicMemoryWStream stream; 61 typeface->serialize(&stream); 62 size_t size = stream.getOffset(); 63 if (writer) { 64 writer->write32(s…

readTypeface

1875 void SkPaint::unflatten(SkFlattenableReadBuffer& buffer) { 1876 SkASSERT(SkAlign4(kPODPaintSize) == kPODPaintSize); 1877 const void* podData = buffer.skip(kPODPaintSize); 1878 const uint32_t* pod = reinterpret_cast<const uint32_t*>(podData); 1879 1880</const>…

fCount

22 SkPicturePlayback::SkPicturePlayback(const SkPictureRecord& record) { 60 record.validate(); 61 const SkWriter32& writer = record.writeStream(); 62 init(); 63 if (writer.size() == 0) 64 return; 65 66 { 67 size_t size = writer.size(); 68 …

beginRecording

30 void PicturePileLayerContent::serialize(SkWStream* stream) 31 { 32 if (!stream) 33 return; 34 SkPicture picture; 35 draw(picture.beginRecording(width(), height(), 36 SkPicture::kUsePathBoundsForClip_RecordingFlag)); 37 picture.endRecord…

RTCHECK

3033 /* In gcc, use __builtin_expect to minimize impact of checks */ 3034 #if !INSECURE 3035 #if defined(__GNUC__) && __GNUC__ >= 3 3036 #define RTCHECK(e) __builtin_expect(e, 1) 3037 #else /* GNUC */ 3038 #define RTCHECK(e) (e) 3039 #endi…

error: 'class SkFlattenableReadBuffer' has no member named 'readPtr'

デバッグ(SK_DEBUG_DUMP)を有効にしたところ #define SK_DEBUG_DUMP #define DUMP_BUFFER_SIZE 65536 //#include "SkBuffer.h" // readPtr <=関係ないみたいだ。エラーが発生。 error: 'class SkFlattenableReadBuffer' has no member named 'readPtr' 117…

loadFontInfo

676 static void loadFontInfoLocked() { 677 resetFallbackFontListsLocked(); 678 679 SkTDArray<FontFamily*> fontFamilies; 680 getFontFamilies(fontFamilies); 681 682 gSystemFonts.reset(); 683 684 for (int i = 0; i < fontFamilies.count(); ++i) { 685 FontFa</fontfamily*>…

initSystemFontsLocked

737 static void initSystemFontsLocked() { 738 // check if we've already been called 739 if (gDefaultNormal) { 740 return; 741 } 742 743 SkASSERT(gUniqueFontID == 0); 744 745 loadFontInfoLocked(); 746 747 SkTypeface* firstInFamily = NULL; 7…

fBaseGlyphCount

148 SkScalerContext* SkScalerContext::getNextContext() { 149 SkScalerContext* next = fNextContext; 150 // if next is null, then either it isn't cached yet, or we're at the 151 // end of our possible chain 152 if (NULL == next) { 153 next =…

SkGlyphCache

34 class SkGlyphCache { 35 public: 197 198 private: 231 SkGlyphCache* fNext, *fPrev; 232 SkDescriptor* fDesc; 233 SkScalerContext* fScalerContext; 234 SkPaint::FontMetrics fFontMetricsY; 235 241 SkGlyph* fGlyphHash[kHashCount]; 242 SkTDArr…

CharGlyphRec

248 struct CharGlyphRec { 249 uint32_t fID; // unichar + subpixel 250 SkGlyph* fGlyph; 251 }; 37 struct SkGlyph { 38 void* fImage; 39 SkPath* fPath; 40 SkFixed fAdvanceX, fAdvanceY; 41 42 uint32_t fID; 43 uint16_t fWidth, fHeight; 44 int16…

SkScalerContext

164 class SkScalerContext { 165 public: 207 322 protected: 323 Rec fRec; 324 unsigned fBaseGlyphCount; 325 339 private: 342 SkPathEffect* fPathEffect; 343 SkMaskFilter* fMaskFilter; 344 SkRasterizer* fRasterizer; 345 SkScalar fDevFrameWidt…

UnicharToGlyph

145 uint16_t EmojiFont::UnicharToGlyph(int32_t unichar) { 146 // do a quick range check before calling the search routine 147 if (unichar >= GMOJI_PUA_MIN && unichar <= GMOJI_PUA_MAX) { 148 // our table is stored relative to GMOJI_PUA_MIN …

glyphData

73 GlyphPage* page; 74 if (variant == NormalVariant) { 75 // Fastest loop, for the common case (normal variant). 76 while (true) { 77 page = node->page(); 78 if (page) { 79 GlyphData data = page->glyphDataForCharacter(c); 80 if (data.fontD…

getUnicharMetrics

905 SkScalar SkPaint::measure_text(SkGlyphCache* cache, 906 const char* text, size_t byteLength, 907 int* count, SkRect* bounds) const { 908 SkASSERT(count); 909 if (byteLength == 0) { 910 *count = 0; 911 if (bounds) { 912 bounds->setEmpty…

loadFontInfoLocked

$ adb root $ adb shell ps | grep system_server $ gdbclient app_process :5039 5078 (gdb) b SkFontHost::CreateTypeface (gdb) c (gdb) b SkFontHost::CreateTypeface (gdb) b SkFontHost::GetAdvancedTypefaceMetrics (gdb) b SkGlyphCache::lookupMetr…

getContextFromChar

165 SkScalerContext* SkScalerContext::getContextFromChar(SkUnichar uni, unsigned& glyphID) { 166 SkScalerContext* ctx = this; 167 for (;;) { 168 glyphID = ctx->generateCharToGlyph(uni); 169 if (glyphID) { 170 break; // found it 171 } 172 c…

unicharToGlyph>charToGlyphID>getContextFromChar

98 uint16_t SkGlyphCache::unicharToGlyph(SkUnichar charCode) { 99 VALIDATE(); 100 uint32_t id = SkGlyph::MakeID(charCode); 101 const CharGlyphRec& rec = fCharToGlyphHash[ID2HashIndex(id)]; <===== kHashCount = 0x1000の配列 102 103 if (rec.f…

lookupMetrics

236 SkGlyph* SkGlyphCache::lookupMetrics(uint32_t id, MetricsType mtype) { 237 SkGlyph* glyph; 238 239 int hi = 0; 240 int count = fGlyphArray.count(); 241 242 if (count) { 243 SkGlyph** gptr = fGlyphArray.begin(); 244 int lo = 0; 245 246 …

SkGlyph

37 struct SkGlyph { 38 void* fImage; 39 SkPath* fPath; 40 SkFixed fAdvanceX, fAdvanceY; 41 42 uint32_t fID; 43 uint16_t fWidth, fHeight; 44 int16_t fTop, fLeft; 45 46 uint8_t fMaskFormat; 47 int8_t fRsbDelta, fLsbDelta; // used by auto-ker…

SkMeasureCacheProc

905 SkScalar SkPaint::measure_text(SkGlyphCache* cache, 906 const char* text, size_t byteLength, 907 int* count, SkRect* bounds) const { 908 SkASSERT(count); 909 if (byteLength == 0) { 910 *count = 0; 911 if (bounds) { 912 bounds->setEmpty…