new fork: show raw text for drawing below it

https://merveilles.town/@maleza/109398870908062135

Lots of issues:
* can't edit the raw text
* ..but it confusingly displays a second cursor
* raw text doesn't update when drawing (need to constantly deserialize
  the drawing to JSON)
* ... lots of others

This is an early experiment.
This commit is contained in:
Kartik K. Agaram 2022-11-24 09:16:07 -08:00
parent 44aa8226c4
commit 0075298a29
4 changed files with 31 additions and 23 deletions

View File

@ -6,6 +6,9 @@ modifications break something.
http://akkartik.name/lines.html http://akkartik.name/lines.html
This (currently incomplete) fork experiments with showing the raw text for a
drawing below it.
## Invocation ## Invocation
To run from the terminal, [pass this directory to LÖVE](https://love2d.org/wiki/Getting_Started#Running_Games), To run from the terminal, [pass this directory to LÖVE](https://love2d.org/wiki/Getting_Started#Running_Games),
@ -84,30 +87,12 @@ found anything amiss: http://akkartik.name/contact
## Mirrors and Forks ## Mirrors and Forks
Updates to lines.love can be downloaded from the following mirrors in addition This repo is a fork of [lines.love](http://akkartik.name/lines.html). Updates
to the website above: to it can be downloaded from:
* https://github.com/akkartik/lines.love
* https://repo.or.cz/lines.love.git
* https://codeberg.org/akkartik/lines.love
* https://tildegit.org/akkartik/lines.love
* https://git.tilde.institute/akkartik/lines.love
* https://git.sr.ht/~akkartik/lines.love
* https://notabug.org/akkartik/lines.love
* https://pagure.io/lines.love
Forks of lines.love are encouraged. If you show me your fork, I'll link to it * https://tildegit.org/akkartik/lines-maleza-experiment
here.
* https://github.com/akkartik/lines-polygon-experiment -- an experiment that Further forks are encouraged. If you show me your fork, I'll link to it here.
uses separate shortcuts for regular polygons. `ctrl+3` for triangles,
`ctrl+4` for squares, etc.
* https://codeberg.org/akkartik/text.love -- a stripped down version without
drawings; useful starting point for some forks
* https://git.sr.ht/~akkartik/pensieve.love -- a note-taking app on an
infinite 2D surface. Still in development.
* https://git.sr.ht/~akkartik/capture.love -- a blank-slate mode for the
note-taking app, so all the stuff pensieve.love puts on screen doesn't cause
you to forget what you came to write down.
## Associated tools ## Associated tools

View File

@ -74,6 +74,7 @@ function Drawing.draw(State, line_index, y)
end end
App.color(Current_stroke_color) App.color(Current_stroke_color)
Drawing.draw_pending_shape(line, line_cache.starty, State.left,State.right) Drawing.draw_pending_shape(line, line_cache.starty, State.left,State.right)
line.top = line_cache.starty+Drawing.pixels(line.h, State.width)
end end
function Drawing.draw_shape(drawing, shape, top, left,right) function Drawing.draw_shape(drawing, shape, top, left,right)

View File

@ -164,6 +164,13 @@ function edit.draw(State)
y = y+Drawing_padding_top y = y+Drawing_padding_top
Drawing.draw(State, line_index, y) Drawing.draw(State, line_index, y)
y = y + Drawing.pixels(line.h, State.width) + Drawing_padding_bottom y = y + Drawing.pixels(line.h, State.width) + Drawing_padding_bottom
if line.lines then
for dindex, dline in ipairs(line.lines) do
if y + Editor_state.line_height > App.screen.height then break end
y, _ = Text.draw(line, dindex, y, 1) -- TODO: scrolling
y = y + State.line_height
end
end
else else
print(line.mode) print(line.mode)
assert(false) assert(false)

View File

@ -52,10 +52,12 @@ function save_to_disk(State)
end end
function load_drawing(infile_next_line) function load_drawing(infile_next_line)
local drawing = {mode='drawing', h=256/2, points={}, shapes={}, pending={}} local drawing = {mode='drawing', h=256/2, points={}, shapes={}, pending={}, lines={}}
table.insert(drawing.lines, {mode='text', data='```lines'})
while true do while true do
local line = infile_next_line() local line = infile_next_line()
assert(line) assert(line)
table.insert(drawing.lines, {mode='text', data=line})
if line == '```' then break end if line == '```' then break end
local shape = json.decode(line) local shape = json.decode(line)
if shape.mode == 'freehand' then if shape.mode == 'freehand' then
@ -85,6 +87,19 @@ function load_drawing(infile_next_line)
end end
table.insert(drawing.shapes, shape) table.insert(drawing.shapes, shape)
end end
-- hackily include some stuff from edit.initialize_state
Text.redraw_all(drawing)
drawing.screen_top1 = {line=1, pos=1}
drawing.cursor1 = {line=1, pos=1}
drawing.screen_bottom1 = {line=1, pos=1}
drawing.selection1 = {line=1, pos=1}
drawing.recent_mouse = {line=1, pos=1}
drawing.font_height = Editor_state.font_height
drawing.line_height = Editor_state.line_height
drawing.em = Editor_state.em
drawing.left = Editor_state.left
drawing.right = Editor_state.right
drawing.width = Editor_state.width
return drawing return drawing
end end