2 * Copyright 2014 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL
9 // DO NOT USE -- FOR INTERNAL TESTING ONLY
11 #ifndef sk_types_DEFINED
12 #define sk_types_DEFINED
18 #define SK_C_PLUS_PLUS_BEGIN_GUARD extern "C" {
19 #define SK_C_PLUS_PLUS_END_GUARD }
22 #define SK_C_PLUS_PLUS_BEGIN_GUARD
23 #define SK_C_PLUS_PLUS_END_GUARD
26 #if !defined(SK_C_API)
27 #if defined(SKIA_C_DLL)
29 #if SKIA_IMPLEMENTATION
30 #define SK_C_API __declspec(dllexport)
32 #define SK_C_API __declspec(dllimport)
35 #define SK_C_API __attribute__((visibility("default")))
42 ///////////////////////////////////////////////////////////////////////////////////////
44 SK_C_PLUS_PLUS_BEGIN_GUARD
46 typedef uint32_t sk_color_t;
47 typedef uint32_t sk_pmcolor_t;
49 /* This macro assumes all arguments are >=0 and <=255. */
50 #define sk_color_set_argb(a, r, g, b) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
51 #define sk_color_get_a(c) (((c) >> 24) & 0xFF)
52 #define sk_color_get_r(c) (((c) >> 16) & 0xFF)
53 #define sk_color_get_g(c) (((c) >> 8) & 0xFF)
54 #define sk_color_get_b(c) (((c) >> 0) & 0xFF)
57 UNKNOWN_SK_COLORTYPE = 0,
60 ARGB_4444_SK_COLORTYPE,
61 RGBA_8888_SK_COLORTYPE,
62 BGRA_8888_SK_COLORTYPE,
65 RGBA_F16_SK_COLORTYPE,
72 UNPREMUL_SK_ALPHATYPE,
76 UNKNOWN_SK_PIXELGEOMETRY,
77 RGB_H_SK_PIXELGEOMETRY,
78 BGR_H_SK_PIXELGEOMETRY,
79 RGB_V_SK_PIXELGEOMETRY,
80 BGR_V_SK_PIXELGEOMETRY,
84 USE_DEVICE_INDEPENDENT_FONTS_SK_SURFACE_PROPS_FLAGS = 1 << 0,
85 } sk_surfaceprops_flags_t;
88 sk_pixelgeometry_t pixelGeometry;
89 sk_surfaceprops_flags_t flags;
97 typedef sk_point_t sk_vector_t;
117 typedef struct sk_matrix44_t sk_matrix44_t;
120 IDENTITY_SK_MATRIX44_TYPE_MASK = 0,
121 TRANSLATE_SK_MATRIX44_TYPE_MASK = 0x01,
122 SCALE_SK_MATRIX44_TYPE_MASK = 0x02,
123 AFFINE_SK_MATRIX44_TYPE_MASK = 0x04,
124 PERSPECTIVE_SK_MATRIX44_TYPE_MASK = 0x08
125 } sk_matrix44_type_mask_t;
128 A sk_canvas_t encapsulates all of the state about drawing into a
129 destination This includes a reference to the destination itself,
130 and a stack of matrix/clip values.
132 typedef struct sk_canvas_t sk_canvas_t;
134 A sk_data_ holds an immutable data buffer.
136 typedef struct sk_data_t sk_data_t;
138 A sk_image_t is an abstraction for drawing a rectagle of pixels.
139 The content of the image is always immutable, though the actual
140 storage may change, if for example that image can be re-created via
141 encoded data or other means.
143 typedef struct sk_image_t sk_image_t;
145 A sk_maskfilter_t is an object that perform transformations on an
146 alpha-channel mask before drawing it; it may be installed into a
147 sk_paint_t. Each time a primitive is drawn, it is first
148 scan-converted into a alpha mask, which os handed to the
149 maskfilter, which may create a new mask is to render into the
152 typedef struct sk_maskfilter_t sk_maskfilter_t;
154 A sk_paint_t holds the style and color information about how to
155 draw geometries, text and bitmaps.
157 typedef struct sk_paint_t sk_paint_t;
159 A sk_path_t encapsulates compound (multiple contour) geometric
160 paths consisting of straight line segments, quadratic curves, and
163 typedef struct sk_path_t sk_path_t;
165 A sk_picture_t holds recorded canvas drawing commands to be played
166 back at a later time.
168 typedef struct sk_picture_t sk_picture_t;
170 A sk_picture_recorder_t holds a sk_canvas_t that records commands
171 to create a sk_picture_t.
173 typedef struct sk_picture_recorder_t sk_picture_recorder_t;
175 A sk_shader_t specifies the source color(s) for what is being drawn. If a
176 paint has no shader, then the paint's color is used. If the paint
177 has a shader, then the shader's color(s) are use instead, but they
178 are modulated by the paint's alpha.
180 typedef struct sk_shader_t sk_shader_t;
182 A sk_surface_t holds the destination for drawing to a canvas. For
183 raster drawing, the destination is an array of pixels in memory.
184 For GPU drawing, the destination is a texture or a framebuffer.
186 typedef struct sk_surface_t sk_surface_t;
188 The sk_region encapsulates the geometric region used to specify
189 clipping areas for drawing.
191 typedef struct sk_region_t sk_region_t;
197 SRCOVER_SK_BLENDMODE,
198 DSTOVER_SK_BLENDMODE,
203 SRCATOP_SK_BLENDMODE,
204 DSTATOP_SK_BLENDMODE,
207 MODULATE_SK_BLENDMODE,
209 OVERLAY_SK_BLENDMODE,
211 LIGHTEN_SK_BLENDMODE,
212 COLORDODGE_SK_BLENDMODE,
213 COLORBURN_SK_BLENDMODE,
214 HARDLIGHT_SK_BLENDMODE,
215 SOFTLIGHT_SK_BLENDMODE,
216 DIFFERENCE_SK_BLENDMODE,
217 EXCLUSION_SK_BLENDMODE,
218 MULTIPLY_SK_BLENDMODE,
220 SATURATION_SK_BLENDMODE,
222 LUMINOSITY_SK_BLENDMODE,
225 //////////////////////////////////////////////////////////////////////////////////////////
249 uint32_t fFlags; // Bit field to identify which values are unknown
250 float fTop; // The greatest distance above the baseline for any glyph (will be <= 0)
251 float fAscent; // The recommended distance above the baseline (will be <= 0)
252 float fDescent; // The recommended distance below the baseline (will be >= 0)
253 float fBottom; // The greatest distance below the baseline for any glyph (will be >= 0)
254 float fLeading; // The recommended distance to add between lines of text (will be >= 0)
255 float fAvgCharWidth; // the average character width (>= 0)
256 float fMaxCharWidth; // the max character width (>= 0)
257 float fXMin; // The minimum bounding box x value for all glyphs
258 float fXMax; // The maximum bounding box x value for all glyphs
259 float fXHeight; // The height of an 'x' in px, or 0 if no 'x' in face
260 float fCapHeight; // The cap height (> 0), or 0 if cannot be determined.
261 float fUnderlineThickness; // underline thickness, or 0 if cannot be determined
262 float fUnderlinePosition; // underline position, or 0 if cannot be determined
265 // Flags for fFlags member of sk_fontmetrics_t
266 #define FONTMETRICS_FLAGS_UNDERLINE_THICKNESS_IS_VALID (1U << 0)
267 #define FONTMETRICS_FLAGS_UNDERLINE_POSITION_IS_VALID (1U << 1)
270 A lightweight managed string.
272 typedef struct sk_string_t sk_string_t;
275 A sk_bitmap_t is an abstraction that specifies a raster bitmap.
277 typedef struct sk_bitmap_t sk_bitmap_t;
278 typedef struct sk_pixmap_t sk_pixmap_t;
279 typedef struct sk_colorfilter_t sk_colorfilter_t;
280 typedef struct sk_imagefilter_t sk_imagefilter_t;
281 typedef struct sk_imagefilter_croprect_t sk_imagefilter_croprect_t;
284 A sk_typeface_t pecifies the typeface and intrinsic style of a font.
285 This is used in the paint, along with optionally algorithmic settings like
286 textSize, textSkewX, textScaleX, kFakeBoldText_Mask, to specify
287 how text appears when drawn (and measured).
289 Typeface objects are immutable, and so they can be shared between threads.
291 typedef struct sk_typeface_t sk_typeface_t;
292 typedef uint32_t sk_font_table_tag_t;
293 typedef struct sk_fontmgr_t sk_fontmgr_t;
295 * Abstraction layer directly on top of an image codec.
297 typedef struct sk_codec_t sk_codec_t;
298 typedef struct sk_colorspace_t sk_colorspace_t;
302 typedef struct sk_stream_t sk_stream_t;
303 typedef struct sk_stream_filestream_t sk_stream_filestream_t;
304 typedef struct sk_stream_asset_t sk_stream_asset_t;
305 typedef struct sk_stream_memorystream_t sk_stream_memorystream_t;
306 typedef struct sk_stream_streamrewindable_t sk_stream_streamrewindable_t;
307 typedef struct sk_wstream_t sk_wstream_t;
308 typedef struct sk_wstream_filestream_t sk_wstream_filestream_t;
309 typedef struct sk_wstream_dynamicmemorystream_t sk_wstream_dynamicmemorystream_t;
311 High-level API for creating a document-based canvas.
313 typedef struct sk_document_t sk_document_t;
322 POINTS_SK_POINT_MODE,
324 POLYGON_SK_POINT_MODE
329 CENTER_SK_TEXT_ALIGN,
334 UTF8_SK_TEXT_ENCODING,
335 UTF16_SK_TEXT_ENCODING,
336 UTF32_SK_TEXT_ENCODING,
337 GLYPH_ID_SK_TEXT_ENCODING
338 } sk_text_encoding_t;
341 WINDING_SK_PATH_FILLTYPE,
342 EVENODD_SK_PATH_FILLTYPE,
343 INVERSE_WINDING_SK_PATH_FILLTYPE,
344 INVERSE_EVENODD_SK_PATH_FILLTYPE,
345 } sk_path_filltype_t;
348 NORMAL_TYPEFACE_STYLE = 0,
349 BOLD_TYPEFACE_STYLE = 0x01,
350 ITALIC_TYPEFACE_STYLE = 0x02,
351 BOLD_ITALIC_TYPEFACE_STYLE = 0x03
352 } sk_typeface_style_t;
355 UPRIGHT_SK_FONT_STYLE_SLANT = 0,
356 ITALIC_SK_FONT_STYLE_SLANT = 1,
357 OBLIQUE_SK_FONT_STYLE_SLANT = 2,
358 } sk_font_style_slant_t;
361 NONE_SK_FILTER_QUALITY,
362 LOW_SK_FILTER_QUALITY,
363 MEDIUM_SK_FILTER_QUALITY,
364 HIGH_SK_FILTER_QUALITY
365 } sk_filter_quality_t;
368 HAS_LEFT_SK_CROP_RECT_FLAG = 0x01,
369 HAS_TOP_SK_CROP_RECT_FLAG = 0x02,
370 HAS_WIDTH_SK_CROP_RECT_FLAG = 0x04,
371 HAS_HEIGHT_SK_CROP_RECT_FLAG = 0x08,
372 HAS_ALL_SK_CROP_RECT_FLAG = 0x0F,
373 } sk_crop_rect_flags_t;
376 DRAW_SHADOW_AND_FOREGROUND_SK_DROP_SHADOW_IMAGE_FILTER_SHADOW_MODE,
377 DRAW_SHADOW_ONLY_SK_DROP_SHADOW_IMAGE_FILTER_SHADOW_MODE,
378 } sk_drop_shadow_image_filter_shadow_mode_t;
381 UNKNOWN_SK_DISPLACEMENT_MAP_EFFECT_CHANNEL_SELECTOR_TYPE,
382 R_SK_DISPLACEMENT_MAP_EFFECT_CHANNEL_SELECTOR_TYPE,
383 G_SK_DISPLACEMENT_MAP_EFFECT_CHANNEL_SELECTOR_TYPE,
384 B_SK_DISPLACEMENT_MAP_EFFECT_CHANNEL_SELECTOR_TYPE,
385 A_SK_DISPLACEMENT_MAP_EFFECT_CHANNEL_SELECTOR_TYPE,
386 } sk_displacement_map_effect_channel_selector_type_t;
389 CLAMP_SK_MATRIX_CONVOLUTION_TILEMODE,
390 REPEAT_SK_MATRIX_CONVOLUTION_TILEMODE,
391 CLAMP_TO_BLACK_SK_MATRIX_CONVOLUTION_TILEMODE,
392 } sk_matrix_convolution_tilemode_t;
395 The logical operations that can be performed when combining two regions.
398 DIFFERENCE_SK_REGION_OP, //!< subtract the op region from the first region
399 INTERSECT_SK_REGION_OP, //!< intersect the two regions
400 UNION_SK_REGION_OP, //!< union (inclusive-or) the two regions
401 XOR_SK_REGION_OP, //!< exclusive-or the two regions
402 REVERSE_DIFFERENCE_SK_REGION_OP, //!< subtract the first region from the op region
403 REPLACE_SK_REGION_OP, //!< replace the dst region with the op region
407 DIFFERENCE_SK_CLIPOP,
412 * Enum describing format of encoded data.
415 BMP_SK_ENCODED_FORMAT,
416 GIF_SK_ENCODED_FORMAT,
417 ICO_SK_ENCODED_FORMAT,
418 JPEG_SK_ENCODED_FORMAT,
419 PNG_SK_ENCODED_FORMAT,
420 WBMP_SK_ENCODED_FORMAT,
421 WEBP_SK_ENCODED_FORMAT,
422 PKM_SK_ENCODED_FORMAT,
423 KTX_SK_ENCODED_FORMAT,
424 ASTC_SK_ENCODED_FORMAT,
425 DNG_SK_ENCODED_FORMAT
426 } sk_encoded_image_format_t;
429 TOP_LEFT_SK_CODEC_ORIGIN = 1, // Default
430 TOP_RIGHT_SK_CODEC_ORIGIN = 2, // Reflected across y-axis
431 BOTTOM_RIGHT_SK_CODEC_ORIGIN = 3, // Rotated 180
432 BOTTOM_LEFT_SK_CODEC_ORIGIN = 4, // Reflected across x-axis
433 LEFT_TOP_SK_CODEC_ORIGIN = 5, // Reflected across x-axis, Rotated 90 CCW
434 RIGHT_TOP_SK_CODEC_ORIGIN = 6, // Rotated 90 CW
435 RIGHT_BOTTOM_SK_CODEC_ORIGIN = 7, // Reflected across x-axis, Rotated 90 CW
436 LEFT_BOTTOM_SK_CODEC_ORIGIN = 8, // Rotated 90 CCW
440 SUCCESS_SK_CODEC_RESULT,
441 INCOMPLETE_INPUT_SK_CODEC_RESULT,
442 INVALID_CONVERSION_SK_CODEC_RESULT,
443 INVALID_SCALE_SK_CODEC_RESULT,
444 INVALID_PARAMETERS_SK_CODEC_RESULT,
445 INVALID_INPUT_SK_CODEC_RESULT,
446 COULD_NOT_REWIND_SK_CODEC_RESULT,
447 UNIMPLEMENTED_SK_CODEC_RESULT,
451 YES_SK_CODEC_ZERO_INITIALIZED,
452 NO_SK_CODEC_ZERO_INITIALIZED,
453 } sk_codec_zero_initialized_t;
456 sk_codec_zero_initialized_t fZeroInitialized;
460 } sk_codec_options_t;
463 TOP_DOWN_SK_CODEC_SCANLINE_ORDER,
464 BOTTOM_UP_SK_CODEC_SCANLINE_ORDER,
465 } sk_codec_scanline_order_t;
467 // The verbs that can be foudn on a path
478 typedef struct sk_path_iterator_t sk_path_iterator_t;
479 typedef struct sk_path_rawiterator_t sk_path_rawiterator_t;
482 APPEND_SK_PATH_ADD_MODE,
483 EXTEND_SK_PATH_ADD_MODE,
484 } sk_path_add_mode_t;
487 LINE_SK_PATH_SEGMENT_MASK = 1 << 0,
488 QUAD_SK_PATH_SEGMENT_MASK = 1 << 1,
489 CONIC_SK_PATH_SEGMENT_MASK = 1 << 2,
490 CUBIC_SK_PATH_SEGMENT_MASK = 1 << 3,
491 } sk_path_segment_mask_t;
494 TRANSLATE_SK_PATH_EFFECT_1D_STYLE,
495 ROTATE_SK_PATH_EFFECT_1D_STYLE,
496 MORPH_SK_PATH_EFFECT_1D_STYLE,
497 } sk_path_effect_1d_style_t;
499 typedef struct sk_path_effect_t sk_path_effect_t;
508 MITER_SK_STROKE_JOIN,
509 ROUND_SK_STROKE_JOIN,
514 CLAMP_SK_SHADER_TILEMODE,
515 REPEAT_SK_SHADER_TILEMODE,
516 MIRROR_SK_SHADER_TILEMODE,
517 } sk_shader_tilemode_t;
520 NORMAL_SK_BLUR_STYLE, //!< fuzzy inside and outside
521 SOLID_SK_BLUR_STYLE, //!< solid inside, fuzzy outside
522 OUTER_SK_BLUR_STYLE, //!< nothing inside, fuzzy outside
523 INNER_SK_BLUR_STYLE, //!< fuzzy inside, nothing outside
527 NONE_SK_BLUR_MASK_FILTER_BLUR_FLAGS = 0x00,
528 IGNORE_TRANSFORM_SK_BLUR_MASK_FILTER_BLUR_FLAGS = 0x01,
529 HIGHT_QUALITY_SK_BLUR_MASK_FILTER_BLUR_FLAGS = 0x02,
530 ALL_SK_BLUR_MASK_FILTER_BLUR_FLAGS = 0x03,
531 } sk_blurmaskfilter_blurflags_t;
534 CW_SK_PATH_DIRECTION,
535 CCW_SK_PATH_DIRECTION,
536 } sk_path_direction_t;
539 SMALL_SK_PATH_ARC_SIZE,
540 LARGE_SK_PATH_ARC_SIZE,
541 } sk_path_arc_size_t;
545 STROKE_SK_PAINT_STYLE,
546 STROKE_AND_FILL_SK_PAINT_STYLE,
550 NO_HINTING_SK_PAINT_HINTING,
551 SLIGHT_HINTING_SK_PAINT_HINTING,
552 NORMAL_HINTING_SK_PAINT_HINTING,
553 FULL_HINTING_SK_PAINT_HINTING,
554 } sk_paint_hinting_t;
556 typedef struct sk_colortable_t sk_colortable_t;
558 typedef struct sk_pixelref_factory_t sk_pixelref_factory_t;
561 BOX_SK_BITMAP_SCALER_RESIZE_METHOD,
562 TRIANGLE_SK_BITMAP_SCALER_RESIZE_METHOD,
563 LANCZOS3_SK_BITMAP_SCALER_RESIZE_METHOD,
564 HAMMING_SK_BITMAP_SCALER_RESIZE_METHOD,
565 MITCHELL_SK_BITMAP_SCALER_RESIZE_METHOD,
566 } sk_bitmapscaler_resizemethod_t;
569 TOP_LEFT_GR_SURFACE_ORIGIN = 1,
570 BOTTOM_LEFT_GR_SURFACE_ORIGIN,
571 } gr_surfaceorigin_t;
574 UNKNOWN_GR_PIXEL_CONFIG,
575 ALPHA_8_GR_PIXEL_CONFIG,
576 GRAY_8_GR_PIXEL_CONFIG,
577 RGB_565_GR_PIXEL_CONFIG,
578 RGBA_4444_GR_PIXEL_CONFIG,
579 RGBA_8888_GR_PIXEL_CONFIG,
580 BGRA_8888_GR_PIXEL_CONFIG,
581 SRGBA_8888_GR_PIXEL_CONFIG,
582 SBGRA_8888_GR_PIXEL_CONFIG,
583 RGBA_8888_SINT_GR_PIXEL_CONFIG,
584 ETC1_GR_PIXEL_CONFIG,
585 RGBA_FLOAT_GR_PIXEL_CONFIG,
586 RG_FLOAT_GR_PIXEL_CONFIG,
587 ALPHA_HALF_GR_PIXEL_CONFIG,
588 RGBA_HALF_GR_PIXEL_CONFIG,
592 BW_SK_MASK_FORMAT, //!< 1bit per pixel mask (e.g. monochrome)
593 A8_SK_MASK_FORMAT, //!< 8bits per pixel mask (e.g. antialiasing)
594 THREE_D_SK_MASK_FORMAT, //!< 3 8bit per pixl planes: alpha, mul, add
595 ARGB32_SK_MASK_FORMAT, //!< SkPMColor
596 LCD16_SK_MASK_FORMAT, //!< 565 alpha for r/g/b
603 sk_mask_format_t fFormat;
607 NONE_GR_CONTEXT_FLUSHBITS = 0,
608 DISCARD_GR_CONTEXT_FLUSHBITS = 0x2,
609 } gr_context_flushbits_t;
611 typedef intptr_t gr_backendobject_t;
616 gr_pixelconfig_t fConfig;
617 gr_surfaceorigin_t fOrigin;
620 gr_backendobject_t fRenderTargetHandle;
621 } gr_backend_rendertarget_desc_t;
624 NONE_GR_BACKEND_TEXTURE_FLAGS = 0,
625 RENDER_TARGET_GR_BACKEND_TEXTURE_FLAGS = 1,
626 } gr_backendtexture_flags_t;
629 gr_backendtexture_flags_t fFlags;
630 gr_surfaceorigin_t fOrigin;
633 gr_pixelconfig_t fConfig;
635 gr_backendobject_t fTextureHandle;
636 } gr_backend_texture_desc_t;
638 typedef struct gr_context_t gr_context_t;
641 NONE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 0,
642 DASHLINE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 0,
643 STENCIL_AND_COVER_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 1,
644 MSAA_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 2,
645 AA_HAIRLINE_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 3,
646 AA_CONVEX_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 4,
647 AA_LINEARIZING_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 5,
648 PLS_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 6,
649 DISTANCE_FIELD_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 7,
650 TESSELLATING_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 8,
651 DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = 1 << 9,
653 ALL_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS = DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS | (DEFAULT_GR_CONTEXT_OPTIONS_GPU_PATH_RENDERERS - 1)
654 } gr_contextoptions_gpupathrenderers_t;
657 bool fSuppressPrints;
658 int fMaxTextureSizeOverride;
659 int fMaxTileSizeOverride;
660 bool fSuppressDualSourceBlending;
661 int fBufferMapThreshold;
662 bool fUseDrawInsteadOfPartialRenderTargetWrite;
664 bool fClipDrawOpsToBounds;
665 int fMaxOpCombineLookback;
666 int fMaxOpCombineLookahead;
667 bool fUseShaderSwizzling;
668 bool fDoManualMipmapping;
669 bool fEnableInstancedRendering;
670 bool fAllowPathMaskCaching;
671 bool fRequireDecodeDisableForSRGB;
672 bool fDisableGpuYUVConversion;
673 bool fSuppressPathRendering;
674 gr_contextoptions_gpupathrenderers_t fGpuPathRenderers;
675 } gr_context_options_t;
682 typedef intptr_t gr_backendcontext_t;
684 typedef struct gr_glinterface_t gr_glinterface_t;
686 typedef void (*gr_gl_func_ptr)();
687 typedef gr_gl_func_ptr (*gr_gl_get_proc)(void* ctx, const char* name);
690 DIFFERENCE_SK_PATHOP,
694 REVERSE_DIFFERENCE_SK_PATHOP,
697 typedef struct sk_opbuilder_t sk_opbuilder_t;
700 UNKNOWN_SK_PATH_CONVEXITY,
701 CONVEX_SK_PATH_CONVEXITY,
702 CONCAVE_SK_PATH_CONVEXITY,
703 } sk_path_convexity_t;
706 DEFAULT_SK_LATTICE_FLAGS,
707 TRANSPARENT_SK_LATTICE_FLAGS = 1 << 0,
708 } sk_lattice_flags_t;
713 const sk_lattice_flags_t* fFlags;
716 const sk_irect_t* fBounds;
719 typedef struct sk_pathmeasure_t sk_pathmeasure_t;
722 GET_POSITION_SK_PATHMEASURE_MATRIXFLAGS = 0x01,
723 GET_TANGENT_SK_PATHMEASURE_MATRIXFLAGS = 0x02,
724 GET_POS_AND_TAN_SK_PATHMEASURE_MATRIXFLAGS = GET_POSITION_SK_PATHMEASURE_MATRIXFLAGS | GET_TANGENT_SK_PATHMEASURE_MATRIXFLAGS,
725 } sk_pathmeasure_matrixflags_t;
727 typedef void (*sk_bitmap_release_proc)(void* addr, void* context);
729 typedef void (*sk_data_release_proc)(const void* ptr, void* context);
731 typedef void (*sk_image_raster_release_proc)(const void* addr, void* context);
732 typedef void (*sk_image_texture_release_proc)(void* context);
735 ALLOW_SK_IMAGE_CACHING_HINT,
736 DISALLOW_SK_IMAGE_CACHING_HINT,
737 } sk_image_caching_hint_t;
740 int16_t fTimeZoneMinutes;
748 } sk_time_datetime_t;
752 sk_string_t* fAuthor;
753 sk_string_t* fSubject;
754 sk_string_t* fKeywords;
755 sk_string_t* fCreator;
756 sk_string_t* fProducer;
757 sk_time_datetime_t* fCreation;
758 sk_time_datetime_t* fModified;
759 } sk_document_pdf_metadata_t;
762 OPAQUE_SK_ENCODEDINFO_ALPHA,
763 UNPREMUL_SK_ENCODEDINFO_ALPHA,
764 BINARY_SK_ENCODEDINFO_ALPHA,
765 } sk_encodedinfo_alpha_t;
768 GRAY_SK_ENCODEDINFO_COLOR,
769 GRAY_ALPHA_SK_ENCODEDINFO_COLOR,
770 PALETTE_SK_ENCODEDINFO_COLOR,
771 RGB_SK_ENCODEDINFO_COLOR,
772 RGBA_SK_ENCODEDINFO_COLOR,
773 BGR_SK_ENCODEDINFO_COLOR,
774 BGRX_SK_ENCODEDINFO_COLOR,
775 BGRA_SK_ENCODEDINFO_COLOR,
776 YUV_SK_ENCODEDINFO_COLOR,
777 YUVA_SK_ENCODEDINFO_COLOR,
778 INVERTED_CMYK_SK_ENCODEDINFO_COLOR,
779 YCCK_SK_ENCODEDINFO_COLOR,
780 } sk_encodedinfo_color_t;
783 SRGB_SK_COLORSPACE_NAMED,
784 ADOBE_RGB_SK_COLORSPACE_NAMED,
785 SRGB_LINEAR_SK_COLORSPACE_NAMED,
786 } sk_colorspace_named_t;
789 sk_colorspace_t* colorspace;
792 sk_colortype_t colorType;
793 sk_alphatype_t alphaType;
797 sk_encodedinfo_color_t fColor;
798 sk_encodedinfo_alpha_t fAlpha;
799 uint8_t fBitsPerComponent;
803 size_t fRequiredFrame;
806 } sk_codec_frameinfo_t;
808 typedef struct sk_xmlstreamwriter_t sk_xmlstreamwriter_t;
809 typedef struct sk_xmlwriter_t sk_xmlwriter_t;
811 typedef struct sk_svgcanvas_t sk_svgcanvas_t;
813 typedef struct sk_3dview_t sk_3dview_t;
816 TRIANGLES_SK_VERTEX_MODE,
817 TRIANGLE_STRIP_SK_VERTEX_MODE,
818 TRIANGLE_FAN_SK_VERTEX_MODE,
822 LINEAR_SK_COLORSPACE_RENDER_TARGET_GAMMA,
823 SRGB_SK_COLORSPACE_RENDER_TARGET_GAMMA,
824 } sk_colorspace_render_target_gamma_t;
827 SRGB_SK_COLORSPACE_GAMUT,
828 ADOBE_RGB_SK_COLORSPACE_GAMUT,
829 DCIP3_D65_SK_COLORSPACE_GAMUT,
830 REC2020_SK_COLORSPACE_GAMUT,
831 } sk_colorspace_gamut_t;
834 NON_LINEAR_BLENDING_SK_COLORSPACE_FLAGS = 0x1,
835 } sk_colorspace_flags_t;
845 } sk_colorspace_transfer_fn_t;
852 } sk_colorspaceprimaries_t;
855 NO_INVERT_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE,
856 INVERT_BRIGHTNESS_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE,
857 INVERT_LIGHTNESS_SK_HIGH_CONTRAST_CONFIG_INVERT_STYLE,
858 } sk_highcontrastconfig_invertstyle_t;
862 sk_highcontrastconfig_invertstyle_t fInvertStyle;
864 } sk_highcontrastconfig_t;
866 SK_C_PLUS_PLUS_END_GUARD