# external references that will be documented eventually ...
#External
 DirectWrite TrueType Windows Linux Android iOS __ANDROID_API__ AHardwareBuffer
 FreeType FreeType-based Harfbuzz
 LCD RGB sRGB ARGB BGR YUV SDTV HDTV
 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 
 PDF XPS
 RFC
 NaN NaNs
 
 C C++ SIZE_MAX
 CSS HTML

 Sa Da Sc Dc max min # temporary until figure out what to do

 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_SUPPORT_GPU # ditto
 SK_HAS_JPEG_LIBRARY # ditto
 SK_HAS_PNG_LIBRARY # ditto
 SK_HAS_WEBP_LIBRARY # ditto
 SK_IGNORE_GPU_DITHER # ditto
 SK_PMCOLOR_BYTE_ORDER # ditto
 SK_WARN_UNUSED_RESULT # 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 ##

# this jargon requires a substitute to lower-case the word. The word is uppercase because
# it is not a dictionary word. An alternative would be to put this in an exception list
# in the spell checker
#Topic Destructor
#Substitute destructor
##

# see comment for Destructor above
#Topic Subclasses
#Substitute subclasses
##

# see comment for Destructor above
#Topic Descenders
#Substitute descenders
##

# see comment for Destructor above
#Topic Grayscale
#Substitute grayscale
##

# see comment for Destructor above
#Topic Kerning
#Substitute kerning
##

# see comment for Destructor above
#Topic Unhinted
#Substitute unhinted
##

# this jargon requires a substitute to space the phrase. 
#Topic Little_Endian 
#Substitute little endian
##

#Topic Big_Endian
#Substitute big endian
##

#Topic YUV_Component_Y 
#Substitute YUV component y
##

#Topic YUV_Component_U 
#Substitute YUV component u
##

#Topic YUV_Component_V
#Substitute YUV component v
##

#Topic UV_Mapping
#Substitute UV mapping
##

#Topic Multi_Sample_Anti_Aliasing 
#Substitute multi-sample anti-aliasing
##

#Topic GPU_Share_Group
#Substitute GPU share group
##

#Topic Bezier_Curve 
#Substitute Bezier cruve
##

#Topic Coons_Patch 
#Substitute Coons patch
##

#Topic Cartesian_Coordinate 
#Substitute Cartesian coordinate
##

#Topic Euclidean_Distance 
#Substitute Euclidean distance
##

#Topic Euclidean_Space 
#Substitute Euclidean space
##

#Topic HTML_Gray 
#Substitute HTML gray
##

#Topic HTML_Silver 
#Substitute HTML silver
##

#Topic HTML_Lime 
#Substitute HTML lime
##

#Topic HTML_Green 
#Substitute HTML green
##

#Topic HTML_Aqua 
#Substitute HTML aqua
##

#Topic HTML_Fuchsia
#Substitute HTML fuchsia
##

#Topic SVG_lightgray 
#Substitute SVG light gray
##

#Topic SVG_darkgray
#Substitute SVG dark gray
##

# start of topics to be documented in the future

#Topic Alias
#Alias Aliased ##
#Alias Aliasing ##
##

#Topic Arc
#Alias Arcs ##
#Topic ##

#Topic Backend_Semaphore
#Alias Backend_Semaphores ##
#Class GrBackendSemaphore
##
##

#Topic BBH_Factory
#Class SkBBHFactory
##
##


#Topic Circle
#Alias Circles ##
#Topic ##

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

#Topic Color_Filter
#Class SkColorFilter
#Class ##
##

#Topic Color_Space
#Class SkColorSpace
    #Method static sk_sp<SkColorSpace> MakeSRGBLinear()
    ##
    #Method bool gammaCloseToSRGB() const
    ##
    #Method static bool Equals(const SkColorSpace* src, const SkColorSpace* dst)
    ##
##
##

#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 Debug_Canvas
#Class SkDebugCanvas
##
##

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

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

#Topic Deserial_Procs
#Struct SkDeserialProcs
##
##

#Topic Device
#Class SkBaseDevice
##
##

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

#Topic Draw_Layer
##

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

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

# to be in 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
    ##
##
# end of topic Encoded_Image_Format

#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
#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
#Class SkImageFilter
#Class ##
#Topic ##

#Class SkImageGenerator
##

#Topic Image_Scaling
##

#Topic ISize
#Struct SkISize
##
##

#Topic Left_Side_Bearing
##

#Topic Line
#Alias Lines ##
#Topic ##

# to be in 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)
    ##
##
# end of Topic Malloc_Pixel_Ref

#Struct SkMask
##

#Topic Mask_Alpha
#Topic ##

#Topic Mask_Filter
#Class SkMaskFilter
#Class ##
#Topic ##

# to be in 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)
    ##
# end of Topic Math

#Topic Meta_Data
#Class SkMetaData
##
##

#Topic Mip_Map
#Substitute mip map
##

#Topic Nine_Patch
##

# to be in 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_ScalarNearlyZero
    to be written
    ##
    #Const SK_MinS32
    to be written
    ##
    #Const SK_MaxS32
    to be written
    ##
    #Typedef int32_t SkUnichar
    #Typedef ##
    #Typedef unsigned U8CPU
    #Typedef ##
# end of Topic Number_Types

#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
    #Class ##
#Topic ##

# to be in Topic Path_Measure
    #Class SkPathMeasure
            #Method void dump() const
            ##
    ##
# end of Topic Path_Measure

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

#Topic Picture_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 Point3
#Struct SkPoint3
##
#Topic ##

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

#Topic Premultiply
#Alias Premultiplied ##
#Alias Premultiplies ##
##

#Topic Raster_Engine
##

#Topic Raster_Handle_Allocator
#Class SkRasterHandleAllocator
    #Typedef void* Handle
    ##
    #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
##

# to be in Topic Rasterizer
#Class SkRasterizer
#Class ##
# end of Topic Rasterizer

#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 RSXform
#Struct SkRSXform
##
##

#Topic Serial_Procs
#Struct SkSerialProcs
##
##

#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)
    ##
    #Method static sk_sp<SkShader> MakeCompose(sk_sp<SkShader> dst, sk_sp<SkShader> src,
                                       SkBlendMode mode, float lerp = 1)
    ##
#Class ##
#Topic ##

#Topic Size
#Struct SkSize
##
##

#Topic Sprite
#Alias Sprites ##
#Topic ##

#Topic Stream
#Class SkStream
##
##

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

#Topic Supersampling
##

#Topic Surface_Characterization
#Class SkSurfaceCharacterization
##
##

#Topic Surface_Properties
    #Class SkSurfaceProps
        #Subtopic 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
    #Method bool isValid() const
    ##
##
##

#Topic RenderTarget
#Class GrBackendRenderTarget
    #Method bool isValid() const
    ##
##
##

#Topic Transfer_Mode
##

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

# to be defined in types
    #Typedef intptr_t GrBackendObject
    #Typedef ##

    #EnumClass GrMipMapped
    #Const kNo 0
    ##
    #Const kYes 1
    ##
    #EnumClass ##

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

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

    #EnumClass GrSemaphoresSubmitted
    #Const kNo 0
    ##
    #Const kYes 1
    ##
    #EnumClass ##
# end of defined in types

#Topic Unpremultiply
#Alias Unpremultiplied ##
##

#Topic Vertices
#Class SkVertices
##
#Subtopic Colors
##
#Subtopic Texs
##
#Topic ##

#Topic WStream
#Class SkWStream
##
#Topic ##

#Topic Xfermode_Image_Filter
#Class SkXfermodeImageFilter
##
##
