Skip to content

Commit 853baba

Browse files
committed
Changed Script interface for drawing variable rounded rectangles
1 parent 84d8c6a commit 853baba

File tree

2 files changed

+12
-122
lines changed

2 files changed

+12
-122
lines changed

lib/scenic/script.ex

Lines changed: 3 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -539,77 +539,10 @@ defmodule Scenic.Script do
539539
[{:draw_rrect, {width, height, radius, flag}} | ops]
540540
end
541541

542-
@doc """
543-
Draw a rounded rectangle defined by height, width, radius1 and radius2. Can be filled or stroked.
544-
545-
Radius1 and radius2 values will be set as follow:
546-
547-
- Upper left corner: radius1
548-
- Upper right corner: radius2
549-
- Lower right corner: radius1
550-
- Lower left corner: radius2
551-
552-
Creates a new path and draws it.
553-
"""
554-
@spec draw_rounded_rectangle(
555-
ops :: t(),
556-
width :: number,
557-
height :: number,
558-
r1 :: number,
559-
r2 :: number,
560-
fill_stroke_flags :: fill_stroke()
561-
) :: ops :: t()
562-
def draw_rounded_rectangle(ops, width, height, r1, r2, flag) do
563-
upperLeftRadius = smallest([r1, width / 2, height / 2])
564-
upperRightRadius = smallest([r2, width / 2, height / 2])
565-
lowerRightRadius = smallest([r1, width / 2, height / 2])
566-
lowerLeftRadius = smallest([r2, width / 2, height / 2])
567-
568-
[
569-
{:draw_rrectv,
570-
{width, height, upperLeftRadius, upperRightRadius, lowerRightRadius, lowerLeftRadius, flag}}
571-
| ops
572-
]
573-
end
574-
575-
@doc """
576-
Draw a rounded rectangle defined by height, width, radius1, radius2 and radius3. Can be filled or stroked.
577-
578-
Radius1 and radius2 values will be set as follow:
579-
580-
- Upper left corner: radius1
581-
- Upper right corner: radius2
582-
- Lower right corner: radius3
583-
- Lower left corner: radius2
584-
585-
Creates a new path and draws it.
586-
"""
587-
@spec draw_rounded_rectangle(
588-
ops :: t(),
589-
width :: number,
590-
height :: number,
591-
r1 :: number,
592-
r2 :: number,
593-
r3 :: number,
594-
fill_stroke_flags :: fill_stroke()
595-
) :: ops :: t()
596-
def draw_rounded_rectangle(ops, width, height, r1, r2, r3, flag) do
597-
upperLeftRadius = smallest([r1, width / 2, height / 2])
598-
upperRightRadius = smallest([r2, width / 2, height / 2])
599-
lowerRightRadius = smallest([r3, width / 2, height / 2])
600-
lowerLeftRadius = smallest([r2, width / 2, height / 2])
601-
602-
[
603-
{:draw_rrectv,
604-
{width, height, upperLeftRadius, upperRightRadius, lowerRightRadius, lowerLeftRadius, flag}}
605-
| ops
606-
]
607-
end
608-
609542
@doc """
610543
Draw a rounded rectangle defined by height, width, radius1, radius2, radius3 and radius4. Can be filled or stroked.
611544
612-
Radius1 and radius2 values will be set as follow:
545+
Radii values will be set as follow:
613546
614547
- Upper left corner: radius1
615548
- Upper right corner: radius2
@@ -618,7 +551,7 @@ defmodule Scenic.Script do
618551
619552
Creates a new path and draws it.
620553
"""
621-
@spec draw_rounded_rectangle(
554+
@spec draw_variable_rounded_rectangle(
622555
ops :: t(),
623556
width :: number,
624557
height :: number,
@@ -628,7 +561,7 @@ defmodule Scenic.Script do
628561
r4 :: number,
629562
fill_stroke_flags :: fill_stroke()
630563
) :: ops :: t()
631-
def draw_rounded_rectangle(ops, width, height, r1, r2, r3, r4, flag) do
564+
def draw_variable_rounded_rectangle(ops, width, height, r1, r2, r3, r4, flag) do
632565
upperLeftRadius = smallest([r1, width / 2, height / 2])
633566
upperRightRadius = smallest([r2, width / 2, height / 2])
634567
lowerRightRadius = smallest([r3, width / 2, height / 2])

test/scenic/script_test.exs

Lines changed: 9 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -118,75 +118,32 @@ defmodule Scenic.ScriptTest do
118118
[{:draw_rrect, {13.0, 12.0, 6.0, :stroke}}]
119119
end
120120

121-
test "draw_rounded_rectangle varying all corners works" do
121+
test "draw_variable_rounded_rectangle varying all corners works" do
122122
expected = [{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 4.0, 5.0, :fill}}]
123-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, 4, 5, :fill) == expected
123+
assert Script.draw_variable_rounded_rectangle([], 10, 11, 2, 3, 4, 5, :fill) == expected
124124
assert expected == Script.serialize(expected) |> Script.deserialize()
125125

126-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, 4, 5, :stroke) ==
126+
assert Script.draw_variable_rounded_rectangle([], 10, 11, 2, 3, 4, 5, :stroke) ==
127127
[{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 4.0, 5.0, :stroke}}]
128128

129-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, 4, 5, :fill_stroke) ==
129+
assert Script.draw_variable_rounded_rectangle([], 10, 11, 2, 3, 4, 5, :fill_stroke) ==
130130
[{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 4.0, 5.0, :fill_stroke}}]
131131
end
132132

133-
test "draw_rounded_rectangle varying 3 corners works" do
134-
expected = [{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 4.0, 3.0, :fill}}]
135-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, 4, :fill) == expected
136-
assert expected == Script.serialize(expected) |> Script.deserialize()
137-
138-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, 4, :stroke) ==
139-
[{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 4.0, 3.0, :stroke}}]
140-
141-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, 4, :fill_stroke) ==
142-
[{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 4.0, 3.0, :fill_stroke}}]
143-
end
144-
145-
test "draw_rounded_rectangle varying 2 corners works" do
146-
expected = [{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 2.0, 3.0, :fill}}]
147-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, :fill) == expected
148-
assert expected == Script.serialize(expected) |> Script.deserialize()
149-
150-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, :stroke) ==
151-
[{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 2.0, 3.0, :stroke}}]
152-
153-
assert Script.draw_rounded_rectangle([], 10, 11, 2, 3, :fill_stroke) ==
154-
[{:draw_rrectv, {10.0, 11.0, 2.0, 3.0, 2.0, 3.0, :fill_stroke}}]
155-
end
156-
157-
test "draw_rounded_rectangle varying all corners shrinks radius if too big" do
158-
assert Script.draw_rounded_rectangle([], 10, 12, 30, 40, 50, 4, :fill) ==
133+
test "draw_variable_rounded_rectangle varying all corners shrinks radius if too big" do
134+
assert Script.draw_variable_rounded_rectangle([], 10, 12, 30, 40, 50, 4, :fill) ==
159135
[{:draw_rrectv, {10.0, 12.0, 5.0, 5.0, 5.0, 4.0, :fill}}]
160136

161-
assert Script.draw_rounded_rectangle([], 13, 12, 30, 40, 5, 60, :stroke) ==
137+
assert Script.draw_variable_rounded_rectangle([], 13, 12, 30, 40, 5, 60, :stroke) ==
162138
[{:draw_rrectv, {13.0, 12.0, 6.0, 6.0, 5.0, 6.0, :stroke}}]
163139

164-
assert Script.draw_rounded_rectangle([], 13, 12, 30, 4, 50, 60, :stroke) ==
140+
assert Script.draw_variable_rounded_rectangle([], 13, 12, 30, 4, 50, 60, :stroke) ==
165141
[{:draw_rrectv, {13.0, 12.0, 6.0, 4.0, 6.0, 6.0, :stroke}}]
166142

167-
assert Script.draw_rounded_rectangle([], 13, 12, 3, 40, 50, 60, :stroke) ==
143+
assert Script.draw_variable_rounded_rectangle([], 13, 12, 3, 40, 50, 60, :stroke) ==
168144
[{:draw_rrectv, {13.0, 12.0, 3.0, 6.0, 6.0, 6.0, :stroke}}]
169145
end
170146

171-
test "draw_rounded_rectangle varying 3 corners shrinks radius if too big" do
172-
assert Script.draw_rounded_rectangle([], 10, 12, 30, 40, 5, :fill) ==
173-
[{:draw_rrectv, {10.0, 12.0, 5.0, 5.0, 5.0, 5.0, :fill}}]
174-
175-
assert Script.draw_rounded_rectangle([], 13, 12, 30, 4, 50, :stroke) ==
176-
[{:draw_rrectv, {13.0, 12.0, 6.0, 4.0, 6.0, 4.0, :stroke}}]
177-
178-
assert Script.draw_rounded_rectangle([], 13, 12, 3, 40, 50, :stroke) ==
179-
[{:draw_rrectv, {13.0, 12.0, 3.0, 6.0, 6.0, 6.0, :stroke}}]
180-
end
181-
182-
test "draw_rounded_rectangle varying 2 corners shrinks radius if too big" do
183-
assert Script.draw_rounded_rectangle([], 10, 12, 30, 4, :fill) ==
184-
[{:draw_rrectv, {10.0, 12.0, 5.0, 4.0, 5.0, 4.0, :fill}}]
185-
186-
assert Script.draw_rounded_rectangle([], 13, 12, 3, 40, :stroke) ==
187-
[{:draw_rrectv, {13.0, 12.0, 3.0, 6.0, 3.0, 6.0, :stroke}}]
188-
end
189-
190147
test "draw_sector works" do
191148
expected = [{:draw_sector, {10.0, 3.0, :fill}}]
192149
assert Script.draw_sector([], 10, 3, :fill) == expected

0 commit comments

Comments
 (0)