1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/examples/gg/raven_text_rendering.v

106 lines
3.3 KiB
V
Raw Normal View History

2019-11-20 07:10:19 +03:00
module main
import gg
import gx
import os
import math
2019-11-20 07:10:19 +03:00
const (
win_width = 600
win_height = 700
bg_color = gx.white
2019-11-20 07:10:19 +03:00
)
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 sorrowsorrow 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 mefilled 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 youhere 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 {
2019-11-20 07:10:19 +03:00
mut:
2020-06-04 21:26:18 +03:00
gg &gg.Context
2019-11-20 07:10:19 +03:00
}
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(
2019-11-20 07:35:13 +03:00
width: win_width
height: win_height
use_ortho: true // This is needed for 2D drawing
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()
2019-11-20 07:10:19 +03:00
}
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()
2019-11-20 07:10:19 +03:00
}