Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Robin Randhawa
orbclient
Commits
5ae54b63
Commit
5ae54b63
authored
Dec 05, 2017
by
Jeremy Soller
Browse files
Remove float math
parent
2b06951e
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/graphicspath.rs
deleted
100644 → 0
View file @
2b06951e
use
alloc
::
Vec
;
/// point type (is the point a new position or a connection point)
pub
enum
PointType
{
Move
,
Connect
,
None
,
}
/// graphic path with similar functions like html canvas
pub
struct
GraphicsPath
{
x
:
i32
,
y
:
i32
,
pub
points
:
Vec
<
(
i32
,
i32
,
PointType
)
>
,
}
impl
GraphicsPath
{
pub
fn
new
()
->
GraphicsPath
{
GraphicsPath
{
x
:
0
,
y
:
0
,
points
:
Vec
::
new
(),
}
}
/// move to position
pub
fn
move_to
(
&
mut
self
,
x
:
i32
,
y
:
i32
){
self
.points
.push
((
x
,
y
,
PointType
::
Move
));
self
.x
=
x
;
self
.y
=
y
;
}
/// create a line between the last and new point
pub
fn
line_to
(
&
mut
self
,
x
:
i32
,
y
:
i32
)
{
self
.points
.push
((
x
,
y
,
PointType
::
Connect
));
self
.x
=
x
;
self
.y
=
y
;
}
/// quadratic bezier curve
pub
fn
quadratic_curve_to
(
&
mut
self
,
argx1
:
i32
,
argy1
:
i32
,
argx2
:
i32
,
argy2
:
i32
){
let
mut
t
:
f32
=
0.0
;
let
mut
u
:
f32
;
let
mut
tt
:
f32
;
let
mut
uu
:
f32
;
let
mut
x
:
f32
;
let
mut
y
:
f32
;
while
t
<
1.0
{
u
=
1.0
-
t
;
uu
=
u
*
u
;
tt
=
t
*
t
;
x
=
(
self
.x
as
f32
)
*
uu
;
y
=
(
self
.y
as
f32
)
*
uu
;
x
+=
2.0
*
u
*
t
*
(
argx1
as
f32
);
y
+=
2.0
*
u
*
t
*
(
argy1
as
f32
);
x
+=
tt
*
(
argx2
as
f32
);
y
+=
tt
*
(
argy2
as
f32
);
t
=
t
+
0.01
;
self
.points
.push
((
x
as
i32
,
y
as
i32
,
PointType
::
Connect
));
}
self
.x
=
argx2
;
self
.y
=
argy2
;
}
/// cubic bezier curve
pub
fn
bezier_curve_to
(
&
mut
self
,
argx1
:
i32
,
argy1
:
i32
,
argx2
:
i32
,
argy2
:
i32
,
argx3
:
i32
,
argy3
:
i32
){
let
mut
t
:
f32
=
0.0
;
let
mut
u
:
f32
;
let
mut
tt
:
f32
;
let
mut
uu
:
f32
;
let
mut
uuu
:
f32
;
let
mut
ttt
:
f32
;
let
mut
x
:
f32
;
let
mut
y
:
f32
;
while
t
<
1.0
{
u
=
1.0
-
t
;
tt
=
t
*
t
;
uu
=
u
*
u
;
uuu
=
uu
*
u
;
ttt
=
tt
*
t
;
x
=
(
self
.x
as
f32
)
*
uuu
;
y
=
(
self
.y
as
f32
)
*
uuu
;
x
+=
3.0
*
uu
*
t
*
(
argx1
as
f32
);
y
+=
3.0
*
uu
*
t
*
(
argy1
as
f32
);
x
+=
3.0
*
u
*
tt
*
(
argx2
as
f32
);
y
+=
3.0
*
u
*
tt
*
(
argy2
as
f32
);
x
+=
ttt
*
(
argx3
as
f32
);
y
+=
ttt
*
(
argy3
as
f32
);
t
=
t
+
0.01
;
self
.points
.push
((
x
as
i32
,
y
as
i32
,
PointType
::
Connect
));
}
self
.x
=
argx3
;
self
.y
=
argy3
;
}
}
src/lib.rs
View file @
5ae54b63
...
...
@@ -13,12 +13,10 @@ pub static FONT: &'static [u8] = include_bytes!("../res/unifont.font");
pub
use
color
::
Color
;
pub
use
event
::
*
;
pub
use
graphicspath
::
GraphicsPath
;
pub
use
renderer
::
Renderer
;
pub
mod
color
;
pub
mod
event
;
pub
mod
graphicspath
;
pub
mod
renderer
;
#[derive(Clone,
Copy,
Debug)]
...
...
src/renderer.rs
View file @
5ae54b63
...
...
@@ -2,8 +2,6 @@ use core::cmp;
use
FONT
;
use
color
::
Color
;
use
graphicspath
::
GraphicsPath
;
use
graphicspath
::
PointType
;
#[cfg(target_arch
=
"x86"
)]
#[inline(always)]
...
...
@@ -186,21 +184,6 @@ pub trait Renderer {
}
}
/// Draw a path (GraphicsPath)
fn
draw_path_stroke
(
&
mut
self
,
graphicspath
:
GraphicsPath
,
color
:
Color
)
{
let
mut
x
:
i32
=
0
;
let
mut
y
:
i32
=
0
;
for
point
in
graphicspath
.points
{
match
point
.2
{
PointType
::
Connect
=>
{
self
.line
(
x
,
y
,
point
.0
,
point
.1
,
color
)},
_
=>
{},
}
x
=
point
.0
;
y
=
point
.1
;
}
}
/// Draw a character, using the loaded font
fn
char
(
&
mut
self
,
x
:
i32
,
y
:
i32
,
c
:
char
,
color
:
Color
)
{
let
mut
offset
=
(
c
as
usize
)
*
16
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment