aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/examples/gg/raven_text_rendering.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/examples/gg/raven_text_rendering.v')
-rw-r--r--v_windows/v/examples/gg/raven_text_rendering.v104
1 files changed, 104 insertions, 0 deletions
diff --git a/v_windows/v/examples/gg/raven_text_rendering.v b/v_windows/v/examples/gg/raven_text_rendering.v
new file mode 100644
index 0000000..2007787
--- /dev/null
+++ b/v_windows/v/examples/gg/raven_text_rendering.v
@@ -0,0 +1,104 @@
+module main
+
+import gg
+import gx
+import os
+import math
+
+const (
+ win_width = 600
+ win_height = 700
+ bg_color = gx.white
+)
+
+const (
+ text = '
+Once upon a midnight dreary, while I pondered, weak and weary,
+Over many a quaint and curious volume of forgotten lore—
+ While I nodded, nearly napping, suddenly there came a tapping,
+As of some one gently rapping, rapping at my chamber door.
+“’Tis some visitor,” I muttered, “tapping at my chamber door—
+ Only this and nothing more.”
+
+ Ah, distinctly I remember it was in the bleak December;
+And each separate dying ember wrought its ghost upon the floor.
+ Eagerly I wished the morrow;—vainly I had sought to borrow
+ From my books surcease of sorrow—sorrow for the lost Lenore—
+For the rare and radiant maiden whom the angels name Lenore—
+ Nameless here for evermore.
+
+ And the silken, sad, uncertain rustling of each purple curtain
+Thrilled me—filled me with fantastic terrors never felt before;
+ So that now, to still the beating of my heart, I stood repeating
+ “’Tis some visitor entreating entrance at my chamber door—
+Some late visitor entreating entrance at my chamber door;—
+ This it is and nothing more.”
+
+ Presently my soul grew stronger; hesitating then no longer,
+“Sir,” said I, “or Madam, truly your forgiveness I implore;
+ But the fact is I was napping, and so gently you came rapping,
+ And so faintly you came tapping, tapping at my chamber door,
+That I scarce was sure I heard you”—here I opened wide the door;—
+ Darkness there and nothing more.
+
+Deep into that darkness peering, long I stood there wondering, fearing,
+Doubting, dreaming dreams no mortal ever dared to dream before;
+ But the silence was unbroken, and the stillness gave no token,
+ And the only word there spoken was the whispered word, “Lenore?”
+This I whispered, and an echo murmured back the word, “Lenore!”—
+ Merely this and nothing more.
+
+ Back into the chamber turning, all my soul within me burning,
+Soon again I heard a tapping somewhat louder than before.
+ “Surely,” said I, “surely that is something at my window lattice;
+ Let me see, then, what thereat is, and this mystery explore—
+Let my heart be still a moment and this mystery explore;—
+ ’Tis the wind and nothing more!”
+'
+ lines = text.split('\n')
+)
+
+struct App {
+mut:
+ gg &gg.Context
+}
+
+fn main() {
+ mut app := &App{
+ gg: 0
+ }
+ mut font_path := os.resource_abs_path(os.join_path('..', 'assets', 'fonts', 'RobotoMono-Regular.ttf'))
+ $if android {
+ font_path = 'fonts/RobotoMono-Regular.ttf'
+ }
+ app.gg = gg.new_context(
+ width: win_width
+ height: win_height
+ create_window: true
+ window_title: 'Empty window'
+ user_data: app
+ bg_color: bg_color
+ frame_fn: frame
+ font_path: font_path // window_user_ptr: ctx
+ // native_rendering: true
+ )
+ app.gg.run()
+}
+
+fn frame(mut app App) {
+ app.gg.begin()
+ width := gg.window_size().width
+ mut scale_factor := math.round(f32(width) / win_width)
+ if scale_factor <= 0 {
+ scale_factor = 1
+ }
+ text_cfg := gx.TextCfg{
+ size: 16 * int(scale_factor)
+ }
+ mut y := 10
+ for line in lines {
+ app.gg.draw_text(10, y, line, text_cfg)
+ y += 30
+ }
+ app.gg.end()
+}