Update typespecs and docs.

This commit is contained in:
James Harton 2017-01-12 08:55:58 +13:00
parent 233532544c
commit 3030368b8e
7 changed files with 46 additions and 20 deletions

View file

@ -22,3 +22,24 @@ is included in the `LICENSE` file in this distribution.
## Documentation
Documentations can be found at [https://hexdocs.pm/vivid_png](https://hexdocs.pm/vivid_png).
## Status
```elixir
use Vivid
alias Vivid.PNG
frame = Frame.init(300,200)
text = Font.line("seems to work")
|> Transform.fill(frame)
|> Transform.center(frame)
|> Transform.apply
circle = Circle.init(Point.init(100, 100), 50)
box = Box.init(Point.init(250,150), Point.init(275, 175))
frame
|> Frame.push(text, RGBA.black)
|> Frame.push(circle, RGBA.init(1,0,0,0.5))
|> Frame.push(box, RGBA.init(0,0,1, 0.75))
|> PNG.to_png("example.png")
```

BIN
example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -1,7 +1,14 @@
defimpl Vivid.PNG, for: Vivid.Buffer do
alias Vivid.PNG.Palette
alias Vivid.{Buffer, RGBA}
@moduledoc """
Convert a Vivid buffer to a PNG file.
"""
@doc """
Convert a Vivid buffer into a PNG file.
"""
@spec to_png(Buffer.t, Path.t) :: :ok | {:error, any}
def to_png(buffer, path) do
with {:ok, file} <- File.open(path, [:write]),
png <- create_png(buffer, file),

View file

@ -1,6 +1,14 @@
defimpl Vivid.PNG, for: Vivid.Frame do
alias Vivid.{PNG, Frame}
@moduledoc """
Convert a Vivid frame into a PNG file.
"""
@doc """
Convert a Vivid frame into a PNG file.
"""
@spec to_png(Frame.t, Path.t) :: :ok | {:error, any}
def to_png(frame, file) do
frame
|> Frame.buffer(:horizontal)

View file

@ -1,7 +1,10 @@
defmodule Vivid.PNG.ShapeToPng do
use Vivid
alias Vivid.PNG
alias Vivid.{PNG, Shape, Bounds, Transform, Frame}
@moduledoc false
@doc false
@spec to_png(Shape.t, Path.t) :: :ok | {:error, any}
def to_png(shape, file) do
bounds = Bounds.bounds(shape)
width = bounds |> Bounds.width |> round |> Kernel.+(3)

View file

@ -1,5 +1,5 @@
defprotocol Vivid.PNG do
alias Vivid.Shape
alias Vivid.{Shape, Frame, Buffer}
@moduledoc """
Turn a Vivid frame or shape into a PNG
"""
@ -7,6 +7,6 @@ defprotocol Vivid.PNG do
@doc """
Turn a frame or shape into a PNG file.
"""
@spec to_png(Shape.t, Path.t) :: :ok | {:error, any}
@spec to_png(Shape.t | Frame.t | Buffer.t, Path.t) :: :ok | {:error, any}
def to_png(shape, file)
end

17
mix.exs
View file

@ -12,12 +12,8 @@ defmodule Vivid.PNG.Mixfile do
deps: deps()]
end
# Configuration for the OTP application
#
# Type "mix help compile.app" for more information
def application do
# Specify extra applications you'll use from Erlang/Elixir
[extra_applications: [:logger, :png]]
[applications: [:logger, :png]]
end
def description do
@ -28,7 +24,7 @@ defmodule Vivid.PNG.Mixfile do
def package do
[
maintainers: [ "James Harton <james@messagerocket.co>" ],
maintainers: [ "James Harton <james@automat.nz>" ],
licenses: [ "MIT" ],
links: %{
"Source" => "https://github.com/jamesotron/vivid_png.ex"
@ -36,15 +32,6 @@ defmodule Vivid.PNG.Mixfile do
]
end
# Dependencies can be Hex packages:
#
# {:my_dep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:my_dep, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
#
# Type "mix help deps" for more examples and options
defp deps do
[
{:ex_doc, ">= 0.0.0", only: :dev},