Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
tyre committed Sep 28, 2014
0 parents commit c404e27
Show file tree
Hide file tree
Showing 9 changed files with 351 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
@@ -0,0 +1,4 @@
/_build
/deps
erl_crash.dump
*.ez
4 changes: 4 additions & 0 deletions README.md
@@ -0,0 +1,4 @@
Gutenex
=======

** TODO: Add description **
24 changes: 24 additions & 0 deletions config/config.exs
@@ -0,0 +1,24 @@
# This file is responsible for configuring your application
# and its dependencies with the aid of the Mix.Config module.
use Mix.Config

# This configuration is loaded before any dependency and is restricted
# to this project. If another project depends on this project, this
# file won't be loaded nor affect the parent project. For this reason,
# if you want to provide default values for your application for third-
# party users, it should be done in your mix.exs file.

# Sample configuration:
#
# config :logger, :console,
# level: :info,
# format: "$date $time [$level] $metadata$message\n",
# metadata: [:user_id]

# It is also possible to import configuration files, relative to this
# directory. For example, you can emulate configuration per environment
# by uncommenting the line below and defining dev.exs, test.exs and such.
# Configuration from the imported file will override the ones defined
# here (which is why it is important to import them last).
#
# import_config "#{Mix.env}.exs"
2 changes: 2 additions & 0 deletions lib/gutenex.ex
@@ -0,0 +1,2 @@
defmodule Gutenex do
end
276 changes: 276 additions & 0 deletions lib/gutenex/pdf.ex
@@ -0,0 +1,276 @@
defmodule Gutenex.Pdf do
def new do
:eg_pdf.new()
end

@doc """
Exports to binary PDF format
"""
def export(pdf) do
:eg_pdf.export(pdf)
end

def delete(pdf) do
:eg_pdf.delete(pdf)
end

def get_state(pdf) do
:eg_pdf.get_state(pdf)
end

def new_page(pdf) do
:eg_pdf.new_page(pdf)
end

def add_start_xref(file, xref_start_position) do
:eg_pdf.add_start_xref(file, xref_start_position)
end

# objects = {object_number, start_position}
def add_trailer(file, objects, root, info) do
:eg_pdf.add_trailer(file, objects, root, info)
end

# objects = {object_number, start_position}
def add_xref(file, objects) do
:eg_pdf.add_xref(file, objects)
end

def append_stream(pdf, string) do
:eg_pdf.append_stream(pdf, string)
end

def begin_text(pdf) do
:eg_pdf.begin_text(pdf)
end

def end_text(pdf) do
:eg_pdf.end_text(pdf)
end

def break_text(pdf) do
:eg_pdf.break_text(pdf)
end

def text(pdf, text) do
:eg_pdf.text(pdf, text)
end

def text_break(pdf,text) do
:eg_pdf.textbr(pdf,text)
end

def kernedtext(pdf, text) do
:eg_pdf.kernedtext(pdf, text)
end

def set_text_pos(pdf, x, y) do
:eg_pdf.set_text_pos(pdf, x, y)
end

def set_text_leading(pdf, l) do
:eg_pdf.set_text_leading(pdf, l)
end

def set_text_rendering(pdf, mode) do
:eg_pdf.set_text_rendering(pdf, mode)
end

def set_character_space(pdf, character_space) do
:eg_pdf.set_char_space(pdf, character_space)
end

def set_word_space(pdf, word_space) do
:eg_pdf.set_word_space(pdf, word_space)
end

def set_text_scale(pdf, text_scale) do
:eg_pdf.set_text_scale(pdf, text_scale)
end

def set_text_rise(pdf, rise) do
:eg_pdf.set_text_rise(pdf, rise)
end

## Fonts

def set_font(pdf, font_name, size) do
:eg_pdf.set_font(pdf, font_name, size)
end

def ensure_font_gets_loaded(pdf, font_name) do
:eg_pdf.ensure_font_gets_loaded(pdf, font_name)
end

# Bezier Curves

def bezier(pdf,{x1,y1},{x2,y2},{x3,y3},{x4,y4}) do
:eg_pdf.bezier(pdf,{x1,y1},{x2,y2},{x3,y3},{x4,y4})
end

def bezier(pdf,x1,y1,x2,y2,x3,y3,x4,y4) do
:eg_pdf.bezier(pdf,x1,y1,x2,y2,x3,y3,x4,y4)
end

def bezier_c(pdf,point1,point2,point3) do
:eg_pdf.bezier_c(pdf,point1,point2,point3)
end

def bezier_v(pdf, point1, point2 ) do
:eg_pdf.bezier_v(pdf, point1, point2 )
end

def bezier_y(pdf, point1, point3) do
:eg_pdf.bezier_y(pdf, point1, point3)
end

# Shapes

def circle(pdf, {x,y}, r) do
:eg_pdf.circle(pdf, {x,y}, r)
end

def ellipse(pdf, {x, y}, {rx, ry}) do
:eg_pdf.ellipse(pdf, {x, y}, {rx, ry})
end

## Rectangles

def rectangle(pdf,{x,y},{wx,wy}) do
:eg_pdf.rectangle(pdf,{x,y},{wx,wy})
end

def rectangle(pdf,{x,y},{wx,wy}, stroketype) do
:eg_pdf.rectangle(pdf,{x,y},{wx,wy}, stroketype)
end

def rectangle(pdf,x,y,wx,wy) when is_pid(pdf) do
:eg_pdf.rectangle(pdf,x,y,wx,wy)
end

def rectangle(pdf,x,y,wx,wy,option) do
:eg_pdf.rectangle(pdf,x,y,wx,wy,option)
end

def round_rect(pdf, point, size, radius) do
:eg_pdf.round_rect(pdf, point, size, radius)
end

def round_top_rect(pdf, point, size, radius) do
:eg_pdf.round_top_rect(pdf, point, size, radius)
end

## Line styles

def set_line_width(pdf,w) do
:eg_pdf.set_line_width(pdf,w)
end

def set_line_cap(pdf,mode) do
:eg_pdf.set_line_cap(pdf,mode)
end

def set_line_join(pdf, mode) do
:eg_pdf.set_line_join(pdf, mode)
end

def set_miter_limit(pdf,limit) do
:eg_pdf.set_miter_limit(pdf,limit)
end

def set_dash(pdf, mode) do
:eg_pdf.set_dash(pdf, mode)
end

def set_dash(pdf, array, phase) do
:eg_pdf.set_dash(pdf, array, phase)
end

## Graphics State
def save_state(pdf) do
:eg_pdf.save_state(pdf)
end

def restore_state(pdf) do
:eg_pdf.restore_state(pdf)
end

# Geometric transformation

def transform(pdf, a, b, c, d, e, f) do
:eg_pdf.transform(pdf, a, b, c, d, e, f)
end

def text_transform(pdf, a, b, c, d, e, f) do
:eg_pdf.text_transform(pdf, a, b, c, d, e, f)
end

def translate(pdf, x, y) do
:eg_pdf.translate(pdf, x, y)
end

def scale(pdf, scale_x, scale_y) when is_integer(scale_x), is_integer(scale_y) do
:eg_pdf.scale(pdf, scale_x, scale_y)
end

@doc """
Rotates pdf by `angle` degrees
"""
def rotate(pdf, angle) do
:eg_pdf.rotate(pdf, angle)
end

@doc """
Rotates pdf text by `angle` degrees
"""
def text_rotate(pdf, angle) do
:eg_pdf.text_rotate(pdf, angle)
end

def text_rotate_position(pdf, x, y, angle) do
:eg_pdf.text_rotate_position(pdf, x, y, angle)
end

def skew(pdf, x_scew_angle, y_skew_angle) do
:eg_pdf.skew(pdf, x_scew_angle, y_skew_angle)
end

def mirror_yaxis(pdf, x_translate) do
:eg_pdf.mirror_yaxis(pdf, x_translate)
end

def mirror_xaxis(pdf, y_translate) do
:eg_pdf.mirror_xaxis(pdf, y_translate)
end

# Colors

def set_fill_color_cmyk(pdf, cyan, magenta, yellow, key) do
:eg_pdf.set_fill_color_cmyk(pdf, cyan, magenta, yellow, key)
end

def set_stroke_color_cmyk(pdf, cyan, magenta, yellow, key) do
:eg_pdf.set_stroke_color_cmyk(pdf, cyan, magenta, yellow, key)
end

def set_fill_color_rgb(pdf, red, green, blue) do
:eg_pdf.set_fill_color_rgb(pdf,r,g,b)
end

def set_fill_color(pdf, color) do
:eg_pdf.set_fill_color(pdf, color)
end

def set_stroke_color(pdf, color) do
:eg_pdf.set_stroke_color(pdf, color)
end

def set_fill_gray(pdf, gray) do
:eg_pdf.set_fill_gray(pdf, gray)
end

def set_stroke_gray(pdf, gray) do
:eg_pdf.set_stroke_gray(pdf, gray)
end

end
32 changes: 32 additions & 0 deletions mix.exs
@@ -0,0 +1,32 @@
defmodule Gutenex.Mixfile do
use Mix.Project

def project do
[app: :gutenex,
version: "0.0.1",
elixir: "~> 1.0.0",
deps: deps]
end

# Configuration for the OTP application
#
# Type `mix help compile.app` for more information
def application do
[applications: [:logger]]
end

# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
#
# Type `mix help deps` for more examples and options
defp deps do
[
{ :erlguten, github: "ztmr/erlguten" }
]
end
end
1 change: 1 addition & 0 deletions mix.lock
@@ -0,0 +1 @@
%{"erlguten": {:git, "git://github.com/ztmr/erlguten.git", "6460744541a3a7a4154ae23d692d2a65e9b349ab", []}}
7 changes: 7 additions & 0 deletions test/gutenex_test.exs
@@ -0,0 +1,7 @@
defmodule GutenexTest do
use ExUnit.Case

test "the truth" do
assert 1 + 1 == 2
end
end
1 change: 1 addition & 0 deletions test/test_helper.exs
@@ -0,0 +1 @@
ExUnit.start()

0 comments on commit c404e27

Please sign in to comment.