mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
106 lines
3.3 KiB
V
106 lines
3.3 KiB
V
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
|
||
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()
|
||
}
|
||
|
||
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()
|
||
}
|