Skip to content

Commit

Permalink
diacritics
Browse files Browse the repository at this point in the history
  • Loading branch information
JuanMarchetto committed Mar 3, 2021
1 parent dfbd9f5 commit 9d0bbbe
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 64 deletions.
40 changes: 39 additions & 1 deletion examples/letters/diacritics.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,44 @@
use std::f64::consts::PI;
use turtle::Turtle;

pub fn acutte(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size * 1.5);
turtle.right(90.0);
turtle.forward(font_size / 2.0);
turtle.left(45.0);
turtle.pen_down();
for i in 1..=10 {
turtle.forward(font_size / 20.0);
turtle.set_pen_size(font_size * i as f64 / 30.0);
}
turtle.set_pen_size(1.0);
turtle.pen_up();
turtle.backward(font_size / 3.0);
turtle.left(45.0);
turtle.backward(font_size * 1.5);
turtle.right(90.0);
turtle.forward(font_size * 0.25);
turtle.left(90.0);
}

pub fn apostrophe(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size * 0.75);
turtle.pen_down();
for i in 1..=10 {
turtle.forward(font_size / 20.0);
turtle.set_pen_size(font_size * i as f64 / 40.0);
}
turtle.set_pen_size(1.0);
turtle.pen_up();
turtle.backward(font_size / 3.0);
turtle.backward(font_size);
turtle.right(90.0);
turtle.forward(font_size * 0.25);
turtle.left(90.0);
}

pub fn tilde(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size * 1.5);
Expand All @@ -18,7 +56,7 @@ pub fn tilde(turtle: &mut Turtle, font_size: f64) {
turtle.left(180.0);
turtle.backward(font_size * 1.5);
turtle.right(90.0);
turtle.forward(font_size *0.5);
turtle.forward(font_size * 0.5);
turtle.left(90.0);
turtle.pen_down();
}
16 changes: 16 additions & 0 deletions examples/letters/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,20 @@ fn main() {
'x' | 'X' => x(&mut turtle, font_size),
'y' | 'Y' => y(&mut turtle, font_size),
'z' | 'Z' => z(&mut turtle, font_size),
'á' | 'Á' | 'é' | 'É' | 'í' | 'Í' | 'ó' | 'Ó' | 'ú' | 'Ú' => {
diacritics::acutte(&mut turtle, font_size);
turtle.left(90.0);
turtle.forward(font_size);
turtle.pen_down();
turtle.right(90.0);
match character {
'á' | 'Á' => a(&mut turtle, font_size),
'é' | 'É' => e(&mut turtle, font_size),
'í' | 'Í' => i(&mut turtle, font_size),
'ó' | 'Ó' => o(&mut turtle, font_size),
_ => u(&mut turtle, font_size),
};
}
'!' => punctuation::exclamation(&mut turtle, font_size),
'¡' => punctuation::inverted_exclamation(&mut turtle, font_size),
',' => punctuation::comma(&mut turtle, font_size),
Expand All @@ -85,6 +99,8 @@ fn main() {
'.' => punctuation::dot(&mut turtle, font_size),
':' => punctuation::colon(&mut turtle, font_size),
';' => punctuation::semicolon(&mut turtle, font_size),
'´' => diacritics::acutte(&mut turtle, font_size),
'\'' => diacritics::apostrophe(&mut turtle, font_size),
character if character.is_whitespace() => punctuation::space(&mut turtle, font_size),
_ => {
println!("We still don't have an implementation for the '{}' character!", character);
Expand Down
126 changes: 63 additions & 63 deletions examples/letters/punctuation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,36 +21,30 @@ pub fn colon(turtle: &mut Turtle, font_size: f64) {
turtle.left(3.6);
}
turtle.pen_up();
turtle.forward(font_size * 0.25);
turtle.forward(font_size * 0.25);
turtle.left(90.0);
}

pub fn question(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size);
pub fn comma(turtle: &mut Turtle, font_size: f64) {
turtle.right(90.0);
turtle.pen_up();
turtle.backward(font_size / 3.0);
turtle.pen_down();
for _ in 0..50 {
for i in 0..50 {
turtle.set_pen_size(3.0 - ((i as f64 + 1.0) / 25.5));
turtle.forward(PI / 200.0 * font_size);
turtle.right(3.6);
}
turtle.left(90.0);
turtle.forward(font_size * 0.3);
turtle.pen_up();
turtle.forward(font_size * 0.1);
turtle.pen_down();
turtle.set_pen_size(3.0);
turtle.forward(font_size * 0.1);
turtle.set_pen_size(1.0);
turtle.left(90.0);
turtle.right(90.0);
turtle.pen_up();
turtle.forward(font_size / 2.0);
turtle.right(90.0);
turtle.forward(font_size / 4.0);
turtle.left(90.0);
}

pub fn semicolon(turtle: &mut Turtle, font_size: f64) {
pub fn dot(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size / 2.0);
turtle.right(90.0);
turtle.backward(font_size / 4.0);
turtle.pen_down();
Expand All @@ -59,13 +53,43 @@ pub fn semicolon(turtle: &mut Turtle, font_size: f64) {
turtle.left(3.6);
}
turtle.pen_up();
turtle.forward(font_size * 0.25);
turtle.left(90.0);
turtle.backward(font_size / 2.0);
}

pub fn exclamation(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.right(90.0);
turtle.forward(font_size / 3.0);
turtle.backward(font_size / 3.0);
turtle.left(90.0);
turtle.pen_down();
comma(turtle, font_size);
turtle.set_pen_size(3.0);
turtle.forward(font_size * 0.1);
turtle.set_pen_size(1.0);
turtle.pen_up();
turtle.forward(font_size * 0.1);
turtle.pen_down();
turtle.forward(font_size * 0.8);
turtle.pen_up();
turtle.backward(font_size);
turtle.right(90.0);
turtle.forward(font_size / 2.0);
turtle.left(90.0);
}

pub fn inverted_exclamation(turtle: &mut Turtle, font_size: f64) {
turtle.set_pen_size(3.0);
turtle.forward(font_size * 0.1);
turtle.set_pen_size(1.0);
turtle.pen_up();
turtle.backward(font_size * 0.2);
turtle.pen_down();
turtle.backward(font_size * 0.8);
turtle.pen_up();
turtle.forward(font_size * 0.9);
turtle.right(90.0);
turtle.forward(font_size / 3.0);
turtle.left(90.0);
}

pub fn inverted_question(turtle: &mut Turtle, font_size: f64) {
Expand All @@ -91,26 +115,32 @@ pub fn inverted_question(turtle: &mut Turtle, font_size: f64) {
turtle.left(90.0);
}

pub fn comma(turtle: &mut Turtle, font_size: f64) {
turtle.right(90.0);
pub fn question(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.backward(font_size / 3.0);
turtle.forward(font_size);
turtle.right(90.0);
turtle.pen_down();
for i in 0..50 {
turtle.set_pen_size(3.0 - ((i as f64 + 1.0) / 25.5));
for _ in 0..50 {
turtle.forward(PI / 200.0 * font_size);
turtle.right(3.6);
}
turtle.right(90.0);
turtle.left(90.0);
turtle.forward(font_size * 0.3);
turtle.pen_up();
turtle.forward(font_size * 0.1);
turtle.pen_down();
turtle.set_pen_size(3.0);
turtle.forward(font_size * 0.1);
turtle.set_pen_size(1.0);
turtle.left(90.0);
turtle.pen_up();
turtle.forward(font_size / 2.0);
turtle.right(90.0);
turtle.forward(font_size / 4.0);
turtle.left(90.0);
}

pub fn dot(turtle: &mut Turtle, font_size: f64) {
pub fn semicolon(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size / 2.0);
turtle.right(90.0);
turtle.backward(font_size / 4.0);
turtle.pen_down();
Expand All @@ -119,48 +149,18 @@ pub fn dot(turtle: &mut Turtle, font_size: f64) {
turtle.left(3.6);
}
turtle.pen_up();
turtle.forward(font_size * 0.25);
turtle.left(90.0);
}

pub fn space(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.right(90.0);
turtle.forward(font_size);
turtle.left(90.0);
}

pub fn exclamation(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.backward(font_size / 2.0);
turtle.right(90.0);
turtle.backward(font_size / 3.0);
turtle.forward(font_size / 3.0);
turtle.left(90.0);
turtle.pen_down();
turtle.set_pen_size(3.0);
turtle.forward(font_size * 0.1);
turtle.set_pen_size(1.0);
turtle.pen_up();
turtle.forward(font_size * 0.1);
turtle.pen_down();
turtle.forward(font_size * 0.8);
turtle.pen_up();
turtle.backward(font_size);
turtle.right(90.0);
turtle.forward(font_size / 2.0);
turtle.left(90.0);
comma(turtle, font_size);
}

pub fn inverted_exclamation(turtle: &mut Turtle, font_size: f64) {
turtle.set_pen_size(3.0);
turtle.forward(font_size * 0.1);
turtle.set_pen_size(1.0);
turtle.pen_up();
turtle.backward(font_size * 0.2);
turtle.pen_down();
turtle.backward(font_size * 0.8);
pub fn space(turtle: &mut Turtle, font_size: f64) {
turtle.pen_up();
turtle.forward(font_size * 0.9);
turtle.right(90.0);
turtle.forward(font_size / 3.0);
turtle.forward(font_size);
turtle.left(90.0);
}

0 comments on commit 9d0bbbe

Please sign in to comment.