# external references that will be documented eventually ...
#External
 DirectWrite TrueType Windows Linux Android iOS __ANDROID_API__ AHardwareBuffer
 FreeType FreeType-based Harfbuzz   
 Descenders Kerning Unhinted 
 LCD RGB sRGB YUV
 YUV_Component_Y YUV_Component_U YUV_Component_V
 Unicode Unicode5 UTF-8 UTF-16 UTF-32 ASCII Unichar
 API
 BMP GIF HEIF ICO JPEG PNG WBMP WebP
 CPU
 GPU GPU-backed OpenGL Vulkan I/O MSAA UV_Mapping Multi_Sample_Anti_Aliasing GPU_Share_Group
 PDF XPS
 RFC
 NaN NaNs
 Bezier_Curve Coons_Patch Cartesian_Coordinate Euclidean_Distance Euclidean_Space
 C C++ Destructor Subclasses
 SkUserConfig  # not external, but still thinking about how markup refers to this
 SkXXX.h        # ditto
 SkXXX_Reference # ditto
 Skia           # ditto
 SK_ABORT       # ditto
 SK_API         # ditto
 SK_DEBUG       # ditto
 SK_RELEASE     # ditto
 SK_USE_FREETYPE_EMBOLDEN # ditto
 SK_SUPPORT_LEGACY_PAINT_TEXTDECORATION # ditto
 SK_BUILD_FOR_ANDROID_FRAMEWORK # ditto
 SK_BUILD_FOR_MAC # ditto
 SK_BUILD_FOR_IOS # ditto
 SK_IGNORE_TO_STRING #  ditto
 SK_SUPPORT_GPU # ditto
 SK_HAS_JPEG_LIBRARY # ditto
 SK_HAS_PNG_LIBRARY # ditto
 SK_HAS_WEBP_LIBRARY # ditto

# FreeType related
FT_LOAD_TARGET_LIGHT
FT_LOAD_TARGET_NORMAL
FT_LOAD_TARGET_LCD
FT_LOAD_TARGET_LCD_V
FT_LOAD_NO_HINTING
FT_Load_Glyph

#External ##

#Topic Alias
#Alias Aliased
#Alias Aliasing
##

#Topic Anti-alias
#Alias Anti-aliased
#Alias Anti-aliasing
##

#Topic Arc
#Alias Arcs
#Topic ##

#Topic Backend_Semaphore
#Class GrBackendSemaphore
#Alias GrBackendSemaphores
##
##

#Topic BBH_Factory
#Class SkBBHFactory
##
##

#Topic Blend_Mode
#EnumClass SkBlendMode
    #Const kSrc 1
    ##
    #Const kSrcOver 3
    ##
    #Const kPlus 12
    ##
#EnumClass ##
#Topic ##

#Topic Circle
#Alias Circles
#Topic ##

#Topic Clip_Op
#EnumClass SkClipOp
    #Const kDifference 0
    ##
    #Const kIntersect 1
    ##
##
##

#Topic Color
    #Typedef uint32_t SkColor
    #Typedef ##

    #Typedef uint32_t SkPMColor
    #Typedef ##

    # fixme: defines, not methods, need new markup type
    #Method int SkColorGetA(color)
    ##
    #Method int SkColorGetR(color)
    ##
    #Method int SkColorGetG(color)
    ##
    #Method int SkColorGetB(color)
    ##
    #Method int SkColorSetARGB(a, r, g, b)
    ##

    #Const SK_ColorBLACK 0xFF000000 
    ##
    #Const SK_ColorBLUE 0xFF0000FF 
    ##
    #Const SK_ColorGREEN 0xFF00FF00 
    ##
    #Const SK_ColorRED 0xFFFF0000 
    ##
    #Const SK_ColorWHITE 0xFFFFFFFF 
    ##
    #Subtopic Alpha
        #Alias Alpha
    #Subtopic ##
    #Subtopic RGB
    #Substitute RGB
        #Subtopic Red
            #Alias Red
        #Subtopic ##
        #Subtopic Blue
            #Alias Blue
        #Subtopic ##
        #Subtopic Green
            #Alias Green
        #Subtopic ##
    #Subtopic ##
    #Subtopic ARGB
    #Substitute ARGB
    #Subtopic ##

    #Subtopic RBG
    #Substitute RBG
    #Subtopic ##

    #Subtopic RGB-565
    #Substitute RGB-565
    #Alias Color_RGB-565 # quit changing - to _ !
    #Subtopic ##
#Topic ##

#Topic Color_Filter
#Class SkColorFilter
#Method void toString(SkString* str) const 
##
#Class ##
#Topic ##

#Topic Color_Space
#Class SkColorSpace
    #Method static sk_sp<SkColorSpace> MakeSRGBLinear()
    ##
##
#EnumClass SkTransferFunctionBehavior
#Const kRespect 0
##
#Const kIgnore 1
##
#EnumClass ##
##

#Topic Create_Color_Space_Xform_Canvas
#Method std::unique_ptr<SkCanvas> SK_API SkCreateColorSpaceXformCanvas(SkCanvas* target,
                                                                       sk_sp<SkColorSpace> targetCS)
##
##

#Topic Core_Graphics
#Substitute Core Graphics
##

#Topic Core_Text
#Substitute Core Text
##

#Topic Curve
#Alias Curves
##

#Topic Data
#Class SkData
##
##

#Topic Debugging
#Method SK_API void SkDebugf(const char format[], ...)
##
##

#Topic Deferred_Display_List
#Class SkDeferredDisplayList
##
#Subtopic Recorder
#Class SkDeferredDisplayListRecorder
##
##
##

#Topic Device
#Class SkBaseDevice
##
#Topic ##

#Topic Document
#Class SkDocument
    #Method SkCanvas* beginPage(SkScalar width, SkScalar height,
                        const SkRect* content = NULL)
    ##
##
#Subtopic PDF
##
##

#Topic Draw_Filter
#Class SkDrawFilter
##
##

#Topic Draw_Layer
##

#Topic Draw_Looper
#Class SkDrawLooper
#Class ##
#Topic ##

#Topic Drawable
#Class SkDrawable
    #Method void draw(SkCanvas*, const SkMatrix* = NULL)
    ##
##
##

#Topic Dump_Canvas
#Class SkDumpCanvas
##
#Topic ##

#Topic Encoded_Image_Format
#EnumClass SkEncodedImageFormat
    #Const kUnknown 0
    ##
    #Const kBMP 1
    ##
    #Const kGIF 2
    ##
    #Const kICO 3
    ##
    #Const kJPEG 4
    ##
    #Const kPNG 5
    ##
    #Const kWBMP 6
    ##
    #Const kWEBP 7
    ##
    #Const kPKM 8
    ##
    #Const kKTX 9
    ##
    #Const kASTC 10
    ##
    #Const kDNG 11
    ##
    #Const kHEIF 12
    ##
##
#Topic ##

#Topic Filter_Quality
#Enum SkFilterQuality
    #Const kNone_SkFilterQuality 0
    ##
    #Const kLow_SkFilterQuality 1
    ##
    #Const kMedium_SkFilterQuality 2
    ##
    #Const kHigh_SkFilterQuality 3
    ##
#Enum ##
#Subtopic Nearest_Neighbor
#Substitute nearest neighbor filter
##
#Subtopic Bilerp
#Substitute bilerp filter
##
#Subtopic MipMap
#Substitute mip-map filter
##
#Subtopic BiCubic
#Substitute bicubic filter
##
#Topic ##

#Topic Font
#Subtopic Advance
#Subtopic ##
#Subtopic Engine
##
#Topic ##

#Topic Font_Manager
#Topic ##

#Topic Glyph
#Alias Glyphs
##

#Topic GPU_Context
#Substitute GPU context
#Subtopic Resource_Cache_Limits
#Alias Resource_Cache_Limits
##
#Class GrContext
#Method void flush()
##
##
##

#Topic GPU_Surface
#Substitute GPU surface
##

#Topic GPU_Texture
#Substitute GPU texture
##

#Topic HTML_Canvas
    #Substitute HTML Canvas
    #Subtopic ArcTo
        #Substitute HTML Canvas arcTo
    ##
##

#Topic Image_Filter
#Subtopic Scaling
#Subtopic ##
#Class SkImageFilter
#Method void toString(SkString* str) const 
##
#Class ##
#Topic ##

#Topic Image_Scaling
##

#Topic ISize
#Struct SkISize
##
##

#Topic Left_Side_Bearing 
##

#Topic Line
#Alias Lines
#Topic ##

#Topic Malloc_Pixel_Ref
#Class SkMallocPixelRef
    #Method static sk_sp<SkPixelRef> MakeZeroed(const SkImageInfo&, size_t rowBytes)
    ##
    #Method static sk_sp<SkPixelRef> MakeAllocate(const SkImageInfo&, size_t rowBytes)
    ##
##
##

#Topic Mask
#Class SkMask
    #Enum Format
        #Const kBW_Format 0
        ##
        #Const kA8_Format 1
        ##
        #Const k3D_Format 2
        ##
        #Const kARGB32_Format 3
        ##
        k#Const LCD16_Format 4
        ##
    ##
##
#Topic ##

#Topic Mask_Alpha
#Topic ##

#Topic Mask_Filter
#Class SkMaskFilter
#Method virtual bool filterMask(SkMask* dst, const SkMask& src, const SkMatrix&,
                            SkIPoint* margin) const
##
#Method void toString(SkString* str) const 
##
#Class ##
#Topic ##

#Topic Math
    #Method static inline bool sk_64_isS32(int64_t value)
    ##
    #Method SkIntToScalar(x)
    ##
    #Method SkScalarRoundToInt(x)
    ##
    #Method SkScalarFloorToInt(x)
    ##
    #Method SkScalarCeilToInt(x)
    ##
    #Method SkScalarFloorToScalar(x)
    ##
    #Method SkScalarCeilToScalar(x)
    ##
    #Method SkScalarIsFinite(x)
    ##
    #Method SkScalarIsNaN(x)
    ##
    #Method template <typename D, typename S> inline bool SkTFitsIn(S s)
    ##
##

#Topic Meta_Data
#Class SkMetaData
##
##

#Topic Mip_Map
##

#Topic Nine_Patch
##

#Topic Number_Types
    #Typedef uint16_t SkGlyphID
    #Typedef ##
    #Topic Scalar
    #Alias Scalar
    #Typedef float SkScalar
    #Typedef ##
    ##
    #Const SK_MinS32FitsInFloat
    to be written
    ##
    #Const SK_MaxS32FitsInFloat
    to be written
    ##
    #Const SK_ScalarMin
    to be written
    ##
    #Const SK_ScalarMax
    to be written
    ##
    #Const SK_ScalarInfinity
    to be written
    ##
    #Const SK_ScalarNegativeInfinity
    to be written
    ##
    #Const SK_ScalarNaN
    to be written
    ##
    #Const SK_MinS32
    to be written
    ##
    #Const SK_MaxS32
    to be written
    ##
    #Const SK_MaxSizeT
    to be written
    ##
    #Typedef int32_t SkUnichar
    #Typedef ##
    #Typedef unsigned U8CPU
    #Typedef ##
#Topic ##

#Topic OS_X
#Substitute OS X
##

#Topic Oval
#Alias Ovals
#Topic ##

#Topic Paint_Defaults
#Const SkPaintDefaults_Flags 0
##
#Const SkPaintDefaults_Hinting 2
##
#Const SkPaintDefaults_TextSize 12
##
#Const SkPaintDefaults_MiterLimit 4
##
#Topic ##

#Topic Patch
#Alias Patches
#Topic ##

#Topic Path_Effect
    #Class SkPathEffect
    #Method void toString(SkString* str) const
    ##
    #Class ##
#Topic ##

#Topic Path_Measure
    #Class SkPathMeasure
            #Method void dump() const
            ##
    ##
##

#Topic PathOps
    #Method bool SK_API Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result)
    ##
#Topic ##

#Topic Picture
#Class SkPicture
#Method virtual void playback(SkCanvas*, AbortCallback* = nullptr) const = 0
##
##
#Subtopic Recorder
    #Class SkPictureRecorder
        #Method SkCanvas* beginRecording(const SkRect& bounds,
                             SkBBHFactory* bbhFactory = NULL,
                             uint32_t recordFlags = 0)
        ##
    ##
##
##

#Topic Pixel
#Subtopic Storage
##
##

#Topic Pixel_Ref
#Class SkPixelRef
    #Method int width() const
    ##
    #Method int height() const
    ##
    #Method bool isImmutable() const
    ##
    #Method void setImmutable()
    ##
##
##

#Enum SkPixelGeometry
##

# Topic Point_Array
# Substitute SkPoint arrays
# Topic ##

#Topic Point3
#Struct SkPoint3
##
#Topic ##

#Topic PostScript
#Substitute PostScript
#Subtopic Arct
#Substitute PostScript arct
##
##

#Topic Premultiply
#Alias Premultiplied
##

#Topic Raster_Engine
##

#Topic Raster_Handle_Allocator
#Class SkRasterHandleAllocator
    #Struct Rec
    ##
    #Method static std::unique_ptr<SkCanvas> MakeCanvas(std::unique_ptr<SkRasterHandleAllocator>, const SkImageInfo&, const Rec* rec = nullptr)
    ##
##
##

#Topic Raster_Bitmap
##

#Topic Raster_Surface
##

#Topic Rasterizer
#Class SkRasterizer
#Class ##
#Subtopic Layer
#Subtopic ##
#Topic ##

#Topic Reference_Count
#Substitute SkRefCnt
#Class SkRefCnt
#Class ##
#Class sk_sp
#Class ##
#Topic ##

#Topic Region
#Class SkRegion
##
#Topic ##

#Topic Render_Target
#Class GrRenderTarget
##
##

#Topic Right_Side_Bearing
##

#Topic Round_Rect
    #Class SkRRect
        #Method void dump() const
        ##
        #Method void dumpHex() const
        ##
    ##
#Topic ##

#Topic RSXform
#Struct SkRSXform
##
##

#Topic Shader
#Class SkShader
    #Enum TileMode
        #Const kClamp_TileMode 0
        ##
        #Const kRepeat_TileMode 1
        ##
        #Const kMirror_TileMode 2
        ##
    ##
    #Method static sk_sp<SkShader> MakeBitmapShader(const SkBitmap& src, TileMode tmx, TileMode tmy,
                                            const SkMatrix* localMatrix = nullptr)
    ##
#Class ##
#Subtopic Gradient
#Subtopic ##
#Topic ##

#Topic Size
#Struct SkSize
##
##

#Topic Sprite
#Alias Sprites
#Topic ##

#Topic Stream
#Class SkStream
#Class ##
#Topic ##

#Topic String
#Class SkString
#Class ##
#Topic ##

#Topic Supersampling
##

#Topic Surface_Characterization
#Class SkSurfaceCharacterization
##
##

#Topic Surface_Properties
    #Class SkSurfaceProps
        #Topic Legacy_Font_Host
        #Enum InitType
            #Const kLegacyFontHost_InitType 0
            ##
        ##
        #Topic ##
    ##
##

#Topic SVG
#Subtopic Canvas
##
#Subtopic Arc
##
##

#Topic Text
#Topic ##

#Topic Text_Blob
#Class SkTextBlob
#Class ##
#Topic ##

#Topic Texture
#Class GrBackendTexture
##
##

#Topic Typeface
#Class SkTypeface
#Class ##
#Topic ##

#Topic Types
    #Typedef intptr_t GrBackendObject
    #Typedef ##

    #Enum GrSurfaceOrigin
    #Const kBottomLeft_GrSurfaceOrigin 0 
    ##
    #Const kTopLeft_GrSurfaceOrigin 1
    ##
    #Enum ##

    #Subtopic Budgeted
    #EnumClass SkBudgeted
    #Const kNo 0
    ##
    #Const kYes 1
    ##
    #EnumClass ##
    ##

    #EnumClass GrSemaphoresSubmitted
    #Const kNo 0
    ##
    #Const kYes 1
    ##
    #EnumClass ##
#Topic ##

#Topic Unpremultiply
#Alias Unpremultiplied
##

#Topic Vertices
#Subtopic Colors
##
#Subtopic Texs
##
#Topic ##

#Topic Read_Buffer
    #Struct SkReadBuffer
    #Struct ##
##

#Topic Write_Buffer
    #Struct SkWriteBuffer
    #Struct ##
#Topic ##

#Enum YUV_ColorSpace
#Const kJPEG_SkYUVColorSpace 0
##
#Const kRec601_SkYUVColorSpace 1
##
#Const kRec709_SkYUVColorSpace 2
##
##
