Skip to content

Commit

Permalink
move more stuff around
Browse files Browse the repository at this point in the history
  • Loading branch information
yomimono committed Dec 17, 2023
1 parent b41c316 commit d975e44
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 18 deletions.
14 changes: 1 addition & 13 deletions src/exportpdf.ml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
open Cmdliner
open Stitchpdf.Output_pdf

let grid_size =
let doc = "Size of a grid entry representing one stitch, in points. 72 points is one inch." in
Expand Down Expand Up @@ -34,18 +33,7 @@ let paper_size =
let doc = "size of paper to use" in
Arg.(value & opt (enum sizes) Pdfpaper.usletter & info ["paper"] ~docv:"PAPER" ~doc)

let doc pixel_size paper_size symbols fat_line_interval =
let open Stitchpdf.Types in
{pixel_size; paper_size; symbols; fat_line_interval; }

let write_pattern paper_size watermark pixel_size fat_line_interval src dst =
let pattern = Util.pattern_or_die src in
let font_size = pixel_size - 2 in
let symbol_map = snd @@ assign_symbols pattern.Stitchy.Types.layers in
let cover = Stitchpdf.Coverpage.coverpage paper_size pattern in
let symbols = symbolpage ~font_size:12 paper_size symbol_map in
let doc = doc pixel_size paper_size symbol_map fat_line_interval in
let pages = cover :: symbols :: (pages ~font_size doc watermark pattern) in
let pdf, pageroot = Pdfpage.add_pagetree pages (Pdf.empty ()) in
let pdf = Pdfpage.add_root pageroot [] pdf in
let pdf = Stitchpdf.Output_pdf.make_pattern paper_size watermark pixel_size fat_line_interval pattern in
Pdfwrite.pdf_to_file pdf dst
17 changes: 15 additions & 2 deletions stitchpdf/lib/output_pdf.ml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ let paint_pixel ~font_size ~pixel_size ~x_pos ~y_pos r g b symbol =
])

let symbolpage ~font_size paper symbols =
let content = [ Pdfops.stream_of_ops @@ snd (Symbolpage.create ~font_size symbols) ] in
let content = [ Pdfops.stream_of_ops @@ Symbolpage.create ~font_size symbols ] in
{(Pdfpage.blankpage paper) with content; resources = Font.font_resources;}

let which_page_contains ~pixel_size ~paper (x, y) =
Expand Down Expand Up @@ -264,7 +264,7 @@ let pdfpage_of_page ~substrate ~page_number ~doc ~watermark (page_x, page_y) pdf
Pdfpage.resources = Font.font_resources;
}

let pages ~font_size doc watermark pattern =
let make_chart_pages ~font_size doc watermark pattern =
let open Stitchy.Types in
let xpp = Positioning.x_per_page ~grid_label_size ~margin_size
~paper:doc.paper_size ~pixel_size:doc.pixel_size
Expand Down Expand Up @@ -294,3 +294,16 @@ let pages ~font_size doc watermark pattern =
end
in
page 0 0 1 []

let doc pixel_size paper_size symbols fat_line_interval =
{pixel_size; paper_size; symbols; fat_line_interval; }

let make_pattern paper_size watermark pixel_size fat_line_interval pattern =
let font_size = pixel_size - 2 in
let symbol_map = snd @@ assign_symbols pattern.Stitchy.Types.layers in
let cover = Coverpage.coverpage paper_size pattern in
let symbols = symbolpage ~font_size:12 paper_size symbol_map in
let doc = doc pixel_size paper_size symbol_map fat_line_interval in
let chart = cover :: symbols :: (make_chart_pages ~font_size doc watermark pattern) in
let pdf, pageroot = Pdfpage.add_pagetree chart (Pdf.empty ()) in
Pdfpage.add_root pageroot [] pdf
8 changes: 7 additions & 1 deletion stitchpdf/lib/symbolpage.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ let create ~font_size color_to_symbol =
let paint_symbol (r, g, b) description s n =
let font_key, symbol = Font.key_and_symbol s in
let r, g, b = Colors.scale r, Colors.scale g, Colors.scale b in
(* The strange vertical behavior is an artifact of an old design
* where we tried to produce the symbol table at the bottom of each chart page.
* It'd probably be less surprising if we went top-down now that the symbol
* table has its own page. *)
let vertical_offset = 1. *. 72. in
let vertical_step n = (font_size + 4) * n |> float_of_int in
let swatch_x_offset = 72. -. vertical_step 1 in
Expand All @@ -27,9 +31,11 @@ let create ~font_size color_to_symbol =
Op_Q;
]
in
Stitchy.Types.SymbolMap.fold (fun thread symbol (placement, ops) ->
let _last_placement, ops = Stitchy.Types.SymbolMap.fold (fun thread symbol (placement, ops) ->
let description = Stitchy.DMC.Thread.to_string thread in
let color = Stitchy.DMC.Thread.to_rgb thread in
let ops = paint_symbol color description symbol placement @ ops in
(placement + 1, ops)
) color_to_symbol (0, [])
in
ops
4 changes: 2 additions & 2 deletions stitchpdf/lib_test/test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ let check_coords = Alcotest.check coords

let pixel_size = 10
let paper = Pdfpaper.usletter
let get_coords = Stitchpdf.Output_pdf.page_of_stitch ~pixel_size ~paper
let get_big_coords = Stitchpdf.Output_pdf.page_of_stitch ~pixel_size:20 ~paper
let get_coords = Stitchpdf.Output_pdf.which_page_contains ~pixel_size ~paper
let get_big_coords = Stitchpdf.Output_pdf.which_page_contains ~pixel_size:20 ~paper

let origin () = check_coords "origin" (0, 0, 0, 0) (get_coords (0, 0))
let first_page () =
Expand Down

0 comments on commit d975e44

Please sign in to comment.