Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ on:
- main
jobs:
test:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
env:
MIX_ENV: test
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: "[${{matrix.otp}}/${{matrix.elixir}}, ${{matrix.rust}}] CI Tests"
strategy:
matrix:
otp: [22, 23, 24, 25]
elixir: ["1.13.4"]
otp: [24, 25]
elixir: ["1.14.4"]
rust: ["stable", "nightly"]
steps:
- uses: actions/checkout@v2.4.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/credo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
otp: [24, 25]
elixir: ["1.13.4"]
elixir: ["1.14.4"]
steps:
- uses: actions/checkout@v2.4.0

Expand Down
43 changes: 43 additions & 0 deletions examples/bell.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
alias Xairo.{Image, Rgba}

import Xairo

dot = fn image, x, y ->
old_line_cap = line_cap(image)
old_line_width = line_width(image)
image
|> set_line_cap(:round)
|> set_line_width(0.1)
|> move_to({x, y})
|> line_to({x, y})
|> stroke()
|> set_line_width(old_line_width)
|> set_line_cap(old_line_cap)
end

scale = 100

image =
Image.new("examples/bell.png", 60 * scale, 60 * scale)
|> scale(scale, scale)
|> set_source(Rgba.new(0.9, 0.9, 0.9))
|> paint()
|> set_source(Rgba.new(0.1, 0.1, 0.5, 0.25))
|> set_line_width(0.1)

:rand.seed(:exsplus, {1, 2, 3})

image = Enum.reduce(1..10_000, image, fn _, image ->
x = (:rand.normal() + 1) * 30
y = :rand.normal(0, 500)

if x > 5 && x < 55 && y > 5 && y < 55 do
dot.(image, x, y)
else
image
end
end)

Image.save(image)


Binary file added examples/bell.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 38 additions & 0 deletions examples/sine.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
alias Xairo.{Image, Rgba}

import Xairo

scale = 50

image =
Image.new("examples/sine.png", 60 * scale, 60 * scale)
|> scale(scale, scale)
|> set_source(Rgba.new(0.6, 0.6, 0.6))
|> paint()
|> set_source(Rgba.new(0.1, 0.1, 0.2))
|> set_line_width(0.1)
|> move_to({0, 15 + :math.sin(0) * 2})

:rand.seed(:exsplus, {1, 2, 3})

1..600
|> Enum.map(&(&1 / 10))
|> Enum.reduce(image, fn x, image ->
image
|> line_to({x, 15 + :math.sin(x) * 2 + (:rand.uniform() / 4 - 0.125)})
end)

move_to(image, {0, 35 + :math.cos(0) * 2})

1..600
|> Enum.map(&(&1 / 10))
|> Enum.reduce(image, fn x, image ->
image
|> line_to({x, 35 + :math.cos(x) * 2 + (:rand.uniform() / 4 - 0.125)})
end)

stroke(image)


Image.save(image)

Binary file added examples/sine.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
45 changes: 45 additions & 0 deletions examples/squares.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
alias Xairo.{Image, Rgba}

import Xairo

scale = 50

rando = fn -> :rand.uniform() / 4 - 0.125 end

add_square = fn image, x, y -> rectangle(image, {x, y}, 1.5 + rando.(), 1.5 + rando.()) end

image =
Image.new("examples/squares.png", 60 * scale, 60 * scale)
|> scale(scale, scale)
|> set_source(Rgba.new(0.6, 0.6, 0.6))
|> paint()
|> set_source(Rgba.new(0.1, 0.1, 0.2))
|> set_line_width(0.1)

:rand.seed(:exsplus, {1, 2, 3})

points =
for _ <- 1..800 do
x = :rand.uniform(round(60 / 2 - 6)) + 2
y = :rand.uniform(round(60 / 2 - 6)) + 2
{x * 2, y * 2}
end
|> Enum.uniq()

colors = [
Rgba.new(0.1, 0.1, 0.2),
Rgba.new(0.5, 0.2, 0.6),
Rgba.new(0.3, 0.5, 0.6),
]

image =
Enum.reduce(points, image, fn {x, y}, image ->
image = add_square.(image, x, y)
|> set_source(Enum.random(colors))
case :rand.uniform() > 0.6 do
false -> fill(image)
true -> stroke(image)
end
end)

Image.save(image)
Binary file added examples/squares.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions examples/squiggles.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
alias Xairo.{Image, Rgba}

import Xairo

scale = 10

:rand.seed(:exsplus, {1, 2, 3})

image =
Image.new("examples/squiggles.png", 60 * scale, 60 * scale)
|> scale(scale, scale)
|> set_source(Rgba.new(0.6, 0.6, 0.6))
|> paint()
|> set_source(Rgba.new(0.1, 0.1, 0.2))
|> set_line_width(0.1)
|> move_to({0, 15 + :math.sin(0) * 2})

image = Enum.map(0..360, &(&1 / 3))
|> Enum.reduce(image, fn i, image ->
move_to(image, {0, i})
1..600
|> Enum.map(&(&1 / 10))
|> Enum.reduce(image, fn x, image ->
x_tweak = (:rand.uniform() / 16 - 0.03125)
y_tweak = (:rand.uniform() / 12 - 0.0625)
if i > 15 && i < 40 && x > 25 && x < 35 do
move_to(image, {x + x_tweak, i + y_tweak})
else
line_to(image, {x + x_tweak, i + y_tweak})
end
end)
stroke(image)
end)

Image.save(image)
Binary file added examples/squiggles.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion lib/xairo/path.ex
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ defimpl Enumerable, for: Xairo.Path do

def slice(%Path{segments: segments}) do
size = length(segments)
{:ok, size, &Enumerable.List.slice(segments, &1, &2, size)}
{:ok, size, fn _ -> segments end}
end

def reduce(%Path{segments: segments}, acc, fun) do
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ defmodule Xairo.MixProject do
[
app: :xairo,
version: "0.1.0",
elixir: "~> 1.13",
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
elixirc_paths: elixirc_paths(Mix.env()),
deps: deps(),
Expand Down
Binary file modified priv/native/libxairo.so
Binary file not shown.