Home | History | Annotate | Download | only in fonts
      1 /*
      2  * Copyright 2015 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkRandomScalerContext_DEFINED
      9 #define SkRandomScalerContext_DEFINED
     10 
     11 #include "SkScalerContext.h"
     12 #include "SkTypeface.h"
     13 
     14 /*
     15  * This scaler context is for debug only purposes.  It will 'randomly' but deterministically return
     16  * LCD / A8 / BW / RBGA masks based off of the Glyph ID
     17  */
     18 
     19 class SkRandomTypeface : public SkTypeface {
     20 public:
     21     SkRandomTypeface(sk_sp<SkTypeface> proxy, const SkPaint&, bool fakeit);
     22 
     23     SkTypeface* proxy() const { return fProxy.get(); }
     24     const SkPaint& paint() const { return fPaint; }
     25 
     26 protected:
     27     SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&,
     28                                            const SkDescriptor*) const override;
     29     void onFilterRec(SkScalerContextRec*) const override;
     30     void getGlyphToUnicodeMap(SkUnichar*) const override;
     31     std::unique_ptr<SkAdvancedTypefaceMetrics> onGetAdvancedMetrics() const override;
     32     SkStreamAsset* onOpenStream(int* ttcIndex) const override;
     33     sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override;
     34     void onGetFontDescriptor(SkFontDescriptor*, bool* isLocal) const override;
     35 
     36     int onCharsToGlyphs(const void* chars, Encoding encoding,
     37                         uint16_t glyphs[], int glyphCount) const override;
     38     int onCountGlyphs() const override;
     39     int onGetUPEM() const override;
     40 
     41     void onGetFamilyName(SkString* familyName) const override;
     42     SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override;
     43 
     44     int onGetVariationDesignPosition(SkFontArguments::VariationPosition::Coordinate coordinates[],
     45                                      int coordinateCount) const override;
     46     int onGetVariationDesignParameters(SkFontParameters::Variation::Axis parameters[],
     47                                        int parameterCount) const override;
     48     int onGetTableTags(SkFontTableTag tags[]) const override;
     49     size_t onGetTableData(SkFontTableTag, size_t offset,
     50                           size_t length, void* data) const override;
     51 
     52 private:
     53     sk_sp<SkTypeface>   fProxy;
     54     SkPaint             fPaint;
     55     bool                fFakeIt;
     56 };
     57 
     58 #endif
     59