Skip to main content

lib/skia/command_spec/types.ex

defmodule Skia.CommandSpec.Types do
  @moduledoc false

  def color, do: :color
  def image_filter, do: :image_filter
  def color_filter, do: :color_filter
  def mask_filter, do: :mask_filter
  def path_effect, do: :path_effect
  def sampling_options, do: :sampling_options
  def picture, do: :picture
  def text_blob, do: :text_blob
  def vertices, do: :vertices
  def paint, do: :paint
  def blend_mode, do: {:enum, :blend_mode, skia: "SkBlendMode", rust: :BlendMode}
  def clip_op, do: {:enum, :clip_op, skia: "SkClipOp", rust: :ClipOp}
  def sampling, do: {:enum, :sampling, skia: "SkFilterMode", rust: :FilterMode}
  def tile_mode, do: {:enum, :tile_mode, skia: "SkTileMode", rust: :TileMode}
  def stroke_cap, do: {:enum, :stroke_cap, skia: "SkPaint_Cap", rust: "paint::Cap"}
  def stroke_join, do: {:enum, :stroke_join, skia: "SkPaint_Join", rust: "paint::Join"}
  def fill_rule, do: {:enum, :fill_rule, skia: "SkPathFillType", rust: :PathFillType}
  def path_op, do: {:enum, :path_op, skia: "SkPathOp", rust: :PathOp}

  def rect_opts do
    [
      [name: :x, type: :number, required: true],
      [name: :y, type: :number, required: true],
      [name: :width, type: :number, required: true],
      [name: :height, type: :number, required: true]
    ]
  end

  def paint_opts do
    [
      [name: :paint, type: paint()],
      [name: :fill, type: color()],
      [name: :stroke, type: color()],
      [name: :stroke_width, type: :number],
      [name: :stroke_cap, type: stroke_cap()],
      [name: :stroke_join, type: stroke_join()],
      [name: :stroke_miter, type: :number],
      [name: :blend_mode, type: blend_mode()],
      [name: :image_filter, type: image_filter()],
      [name: :path_effect, type: path_effect()],
      [name: :color_filter, type: color_filter()],
      [name: :mask_filter, type: mask_filter()]
    ]
  end
end