;; Namespace Gsk

;; Enums

(define-enum-extended BlendMode
  (in-module "Gsk")
  (c-name "GskBlendMode")
  (values
    '("default" "GSK_BLEND_MODE_DEFAULT" "0")
    '("multiply" "GSK_BLEND_MODE_MULTIPLY" "1")
    '("screen" "GSK_BLEND_MODE_SCREEN" "2")
    '("overlay" "GSK_BLEND_MODE_OVERLAY" "3")
    '("darken" "GSK_BLEND_MODE_DARKEN" "4")
    '("lighten" "GSK_BLEND_MODE_LIGHTEN" "5")
    '("color-dodge" "GSK_BLEND_MODE_COLOR_DODGE" "6")
    '("color-burn" "GSK_BLEND_MODE_COLOR_BURN" "7")
    '("hard-light" "GSK_BLEND_MODE_HARD_LIGHT" "8")
    '("soft-light" "GSK_BLEND_MODE_SOFT_LIGHT" "9")
    '("difference" "GSK_BLEND_MODE_DIFFERENCE" "10")
    '("exclusion" "GSK_BLEND_MODE_EXCLUSION" "11")
    '("color" "GSK_BLEND_MODE_COLOR" "12")
    '("hue" "GSK_BLEND_MODE_HUE" "13")
    '("saturation" "GSK_BLEND_MODE_SATURATION" "14")
    '("luminosity" "GSK_BLEND_MODE_LUMINOSITY" "15")
  )
)

(define-enum-extended Corner
  (in-module "Gsk")
  (c-name "GskCorner")
  (values
    '("top-left" "GSK_CORNER_TOP_LEFT" "0")
    '("top-right" "GSK_CORNER_TOP_RIGHT" "1")
    '("bottom-right" "GSK_CORNER_BOTTOM_RIGHT" "2")
    '("bottom-left" "GSK_CORNER_BOTTOM_LEFT" "3")
  )
)

(define-enum-extended FillRule
  (in-module "Gsk")
  (c-name "GskFillRule")
  (values
    '("winding" "GSK_FILL_RULE_WINDING" "0")
    '("even-odd" "GSK_FILL_RULE_EVEN_ODD" "1")
  )
)

(define-enum-extended GLUniformType
  (in-module "Gsk")
  (c-name "GskGLUniformType")
  (values
    '("none" "GSK_GL_UNIFORM_TYPE_NONE" "0")
    '("float" "GSK_GL_UNIFORM_TYPE_FLOAT" "1")
    '("int" "GSK_GL_UNIFORM_TYPE_INT" "2")
    '("uint" "GSK_GL_UNIFORM_TYPE_UINT" "3")
    '("bool" "GSK_GL_UNIFORM_TYPE_BOOL" "4")
    '("vec2" "GSK_GL_UNIFORM_TYPE_VEC2" "5")
    '("vec3" "GSK_GL_UNIFORM_TYPE_VEC3" "6")
    '("vec4" "GSK_GL_UNIFORM_TYPE_VEC4" "7")
  )
)

(define-enum-extended LineCap
  (in-module "Gsk")
  (c-name "GskLineCap")
  (values
    '("butt" "GSK_LINE_CAP_BUTT" "0")
    '("round" "GSK_LINE_CAP_ROUND" "1")
    '("square" "GSK_LINE_CAP_SQUARE" "2")
  )
)

(define-enum-extended LineJoin
  (in-module "Gsk")
  (c-name "GskLineJoin")
  (values
    '("miter" "GSK_LINE_JOIN_MITER" "0")
    '("round" "GSK_LINE_JOIN_ROUND" "1")
    '("bevel" "GSK_LINE_JOIN_BEVEL" "2")
  )
)

(define-enum-extended MaskMode
  (in-module "Gsk")
  (c-name "GskMaskMode")
  (values
    '("alpha" "GSK_MASK_MODE_ALPHA" "0")
    '("inverted-alpha" "GSK_MASK_MODE_INVERTED_ALPHA" "1")
    '("luminance" "GSK_MASK_MODE_LUMINANCE" "2")
    '("inverted-luminance" "GSK_MASK_MODE_INVERTED_LUMINANCE" "3")
  )
)

(define-enum-extended PathDirection
  (in-module "Gsk")
  (c-name "GskPathDirection")
  (values
    '("from-start" "GSK_PATH_FROM_START" "0")
    '("to-start" "GSK_PATH_TO_START" "1")
    '("to-end" "GSK_PATH_TO_END" "2")
    '("from-end" "GSK_PATH_FROM_END" "3")
  )
)

(define-enum-extended PathIntersection
  (in-module "Gsk")
  (c-name "GskPathIntersection")
  (values
    '("none" "GSK_PATH_INTERSECTION_NONE" "0")
    '("normal" "GSK_PATH_INTERSECTION_NORMAL" "1")
    '("start" "GSK_PATH_INTERSECTION_START" "2")
    '("end" "GSK_PATH_INTERSECTION_END" "3")
  )
)

(define-enum-extended PathOperation
  (in-module "Gsk")
  (c-name "GskPathOperation")
  (values
    '("move" "GSK_PATH_MOVE" "0")
    '("close" "GSK_PATH_CLOSE" "1")
    '("line" "GSK_PATH_LINE" "2")
    '("quad" "GSK_PATH_QUAD" "3")
    '("cubic" "GSK_PATH_CUBIC" "4")
    '("conic" "GSK_PATH_CONIC" "5")
  )
)

(define-enum-extended PorterDuff
  (in-module "Gsk")
  (c-name "GskPorterDuff")
  (values
    '("source" "GSK_PORTER_DUFF_SOURCE" "0")
    '("dest" "GSK_PORTER_DUFF_DEST" "1")
    '("source-over-dest" "GSK_PORTER_DUFF_SOURCE_OVER_DEST" "2")
    '("dest-over-source" "GSK_PORTER_DUFF_DEST_OVER_SOURCE" "3")
    '("source-in-dest" "GSK_PORTER_DUFF_SOURCE_IN_DEST" "4")
    '("dest-in-source" "GSK_PORTER_DUFF_DEST_IN_SOURCE" "5")
    '("source-out-dest" "GSK_PORTER_DUFF_SOURCE_OUT_DEST" "6")
    '("dest-out-source" "GSK_PORTER_DUFF_DEST_OUT_SOURCE" "7")
    '("source-atop-dest" "GSK_PORTER_DUFF_SOURCE_ATOP_DEST" "8")
    '("dest-atop-source" "GSK_PORTER_DUFF_DEST_ATOP_SOURCE" "9")
    '("xor" "GSK_PORTER_DUFF_XOR" "10")
    '("clear" "GSK_PORTER_DUFF_CLEAR" "11")
  )
)

(define-enum-extended RenderNodeType
  (in-module "Gsk")
  (c-name "GskRenderNodeType")
  (values
    '("not-a-render-node" "GSK_NOT_A_RENDER_NODE" "0")
    '("container-node" "GSK_CONTAINER_NODE" "1")
    '("cairo-node" "GSK_CAIRO_NODE" "2")
    '("color-node" "GSK_COLOR_NODE" "3")
    '("linear-gradient-node" "GSK_LINEAR_GRADIENT_NODE" "4")
    '("repeating-linear-gradient-node" "GSK_REPEATING_LINEAR_GRADIENT_NODE" "5")
    '("radial-gradient-node" "GSK_RADIAL_GRADIENT_NODE" "6")
    '("repeating-radial-gradient-node" "GSK_REPEATING_RADIAL_GRADIENT_NODE" "7")
    '("conic-gradient-node" "GSK_CONIC_GRADIENT_NODE" "8")
    '("border-node" "GSK_BORDER_NODE" "9")
    '("texture-node" "GSK_TEXTURE_NODE" "10")
    '("inset-shadow-node" "GSK_INSET_SHADOW_NODE" "11")
    '("outset-shadow-node" "GSK_OUTSET_SHADOW_NODE" "12")
    '("transform-node" "GSK_TRANSFORM_NODE" "13")
    '("opacity-node" "GSK_OPACITY_NODE" "14")
    '("color-matrix-node" "GSK_COLOR_MATRIX_NODE" "15")
    '("repeat-node" "GSK_REPEAT_NODE" "16")
    '("clip-node" "GSK_CLIP_NODE" "17")
    '("rounded-clip-node" "GSK_ROUNDED_CLIP_NODE" "18")
    '("shadow-node" "GSK_SHADOW_NODE" "19")
    '("blend-node" "GSK_BLEND_NODE" "20")
    '("cross-fade-node" "GSK_CROSS_FADE_NODE" "21")
    '("text-node" "GSK_TEXT_NODE" "22")
    '("blur-node" "GSK_BLUR_NODE" "23")
    '("debug-node" "GSK_DEBUG_NODE" "24")
    '("gl-shader-node" "GSK_GL_SHADER_NODE" "25")
    '("texture-scale-node" "GSK_TEXTURE_SCALE_NODE" "26")
    '("mask-node" "GSK_MASK_NODE" "27")
    '("fill-node" "GSK_FILL_NODE" "28")
    '("stroke-node" "GSK_STROKE_NODE" "29")
    '("subsurface-node" "GSK_SUBSURFACE_NODE" "30")
    '("component-transfer-node" "GSK_COMPONENT_TRANSFER_NODE" "31")
    '("copy-node" "GSK_COPY_NODE" "32")
    '("paste-node" "GSK_PASTE_NODE" "33")
    '("composite-node" "GSK_COMPOSITE_NODE" "34")
    '("isolation-node" "GSK_ISOLATION_NODE" "35")
    '("displacement-node" "GSK_DISPLACEMENT_NODE" "36")
    '("arithmetic-node" "GSK_ARITHMETIC_NODE" "37")
    '("turbulence-node" "GSK_TURBULENCE_NODE" "38")
  )
)

(define-enum-extended ScalingFilter
  (in-module "Gsk")
  (c-name "GskScalingFilter")
  (values
    '("linear" "GSK_SCALING_FILTER_LINEAR" "0")
    '("nearest" "GSK_SCALING_FILTER_NEAREST" "1")
    '("trilinear" "GSK_SCALING_FILTER_TRILINEAR" "2")
  )
)

(define-enum-extended SerializationError
  (in-module "Gsk")
  (c-name "GskSerializationError")
  (values
    '("unsupported-format" "GSK_SERIALIZATION_UNSUPPORTED_FORMAT" "0")
    '("unsupported-version" "GSK_SERIALIZATION_UNSUPPORTED_VERSION" "1")
    '("invalid-data" "GSK_SERIALIZATION_INVALID_DATA" "2")
  )
)

(define-enum-extended Side
  (in-module "Gsk")
  (c-name "GskSide")
  (values
    '("top" "GSK_SIDE_TOP" "0")
    '("right" "GSK_SIDE_RIGHT" "1")
    '("bottom" "GSK_SIDE_BOTTOM" "2")
    '("left" "GSK_SIDE_LEFT" "3")
  )
)

(define-enum-extended SnapDirection
  (in-module "Gsk")
  (c-name "GskSnapDirection")
  (values
    '("none" "GSK_SNAP_NONE" "0")
    '("floor" "GSK_SNAP_FLOOR" "1")
    '("ceil" "GSK_SNAP_CEIL" "2")
    '("round" "GSK_SNAP_ROUND" "3")
  )
)

(define-enum-extended TransformCategory
  (in-module "Gsk")
  (c-name "GskTransformCategory")
  (values
    '("unknown" "GSK_TRANSFORM_CATEGORY_UNKNOWN" "0")
    '("any" "GSK_TRANSFORM_CATEGORY_ANY" "1")
    '("3d" "GSK_TRANSFORM_CATEGORY_3D" "2")
    '("2d" "GSK_TRANSFORM_CATEGORY_2D" "3")
    '("2d-affine" "GSK_TRANSFORM_CATEGORY_2D_AFFINE" "4")
    '("2d-translate" "GSK_TRANSFORM_CATEGORY_2D_TRANSLATE" "5")
    '("identity" "GSK_TRANSFORM_CATEGORY_IDENTITY" "6")
  )
)


;; Flags

(define-flags-extended Isolation
  (in-module "Gsk")
  (c-name "GskIsolation")
  (values
    '("none" "GSK_ISOLATION_NONE" "0x0")
    '("background" "GSK_ISOLATION_BACKGROUND" "1 << 0")
    '("copy_paste" "GSK_ISOLATION_COPY_PASTE" "1 << 1")
    '("all" "GSK_ISOLATION_ALL" "-0x1")
  )
)

(define-flags-extended PathForeachFlags
  (in-module "Gsk")
  (c-name "GskPathForeachFlags")
  (values
    '("only_lines" "GSK_PATH_FOREACH_ALLOW_ONLY_LINES" "0x0")
    '("quad" "GSK_PATH_FOREACH_ALLOW_QUAD" "1 << 0")
    '("cubic" "GSK_PATH_FOREACH_ALLOW_CUBIC" "1 << 1")
    '("conic" "GSK_PATH_FOREACH_ALLOW_CONIC" "1 << 2")
  )
)

