|
truth. here.
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
It's so close to working top down, render as you parse.
Except for scaling. In order to support the "view box" feature you need to know the bounding rectangle that contains all the drawing items, which you can't have until you parse them all.
So I either get to parse twice, or store the whole doc in memory. For one feature.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
honey - shot you an email - but why? Is this project related?
Charlie Gilley
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
Has never been more appropriate.
|
|
|
|
|
It's only project related in that it's part of my graphics library that I use for projects.
I've expanded some in email.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
I googled and found a web version of such tool: fluidui.com.
just check CP members here to find more options...
diligent hands rule....
|
|
|
|
|
Draw.io is free and offers some simple wireframing options.
Or use the free Silex Website Builder.
|
|
|
|
|
thanks for these two tools!
to be easier for me, I used Snagit Editor to complete my mockup.
diligent hands rule....
|
|
|
|
|
I recommend trying the free version of Figma[^].
/ravi
|
|
|
|
|
good info!
diligent hands rule....
|
|
|
|
|
Wordle 1,184 4/6*
⬜🟨⬜⬜🟨
⬜🟨⬜🟨🟩
⬜🟩⬜🟩🟩
🟩🟩🟩🟩🟩
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Wordle 1,184 3/6*
⬜⬜⬜⬜🟨
⬜🟩🟨🟩⬜
🟩🟩🟩🟩🟩
|
|
|
|
|
🟨🟨⬜⬜🟨
⬜🟩🟩⬜🟩
🟩🟩🟩🟩🟩
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 1,184 4/6
⬛⬛⬛🟨🟨
🟩🟩⬛⬛⬛
🟩🟩⬛🟩⬛
🟩🟩🟩🟩🟩
Ok, I have had my coffee, so you can all come out now!
|
|
|
|
|
Wordle 1,184 5/6*
⬛⬛⬛⬛🟨
⬛🟨🟨⬛⬛
⬛⬛⬛🟨🟩
⬛🟩⬛🟩🟩
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 1,184 4/6
⬜⬜🟨⬜🟨
🟨⬜⬜🟨🟩
⬜🟩⬜🟩🟩
🟩🟩🟩🟩🟩
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
I hate specs. I'd rather look at code to determine how something works.
To that end I've been working with two SVG parsing codebases in C to determine how SVG works.
You know that point where things finally click? I got there.
And most of it is just propagating attribute values and bubbling them down tags.
The reason for all of this, is I wanted to peephole parse the whole thing, and render top down so I didn't have to keep a representation of the entire document in memory - just enough of a window of it to render the current step.
The result should be much more efficient than what I have been doing, but it's state machines all the way down, because peephole parsing.
In any event I have much of the core in place, and I'm peephole parsing all the attributes in the document. The elements are easy by comparison.
The main thing I have left is storing gradients and matching them up by ID, and then trying to impose viewbox scaling as I'm parsing, which I HOPE is possible.
I'm over the hump.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Wordle 1,183 3/6*
🟨🟩🟩⬜⬜
⬜🟩🟩🟩⬜
🟩🟩🟩🟩🟩
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
⬜🟩🟨⬜⬜
🟩🟩⬜🟩⬜
🟩🟩🟩🟩🟩
In a closed society where everybody's guilty, the only crime is getting caught. In a world of thieves, the only final sin is stupidity. - Hunter S Thompson - RIP
|
|
|
|
|
Wordle 1,183 3/6*
⬜⬜🟨⬜⬜
🟨⬜🟩⬜🟩
🟩🟩🟩🟩🟩
Happiness will never come to those who fail to appreciate what they already have. -Anon
And those who were seen dancing were thought to be insane by those who could not hear the music. -Frederick Nietzsche
|
|
|
|
|
Wordle 1,183 2/6
🟨🟨🟩🟨⬛
🟩🟩🟩🟩🟩
A rare 2!
Ok, I have had my coffee, so you can all come out now!
|
|
|
|
|
Wordle 1,183 5/6
⬜🟨⬜⬜⬜
🟨⬜⬜⬜⬜
⬜🟨🟨🟩⬜
⬜🟩🟩🟩⬜
🟩🟩🟩🟩🟩
Within you lies the power for good - Use it!
|
|
|
|
|
Wordle 1,183 4/6
⬛⬛🟨🟨⬛
🟨🟨⬛⬛⬛
🟨🟩🟩⬛⬛
🟩🟩🟩🟩🟩
Jeremy Falcon
|
|
|
|
|
Wordle 1,183 2/6*
🟨⬛🟩⬛⬛
🟩🟩🟩🟩🟩
|
|
|
|
|
Wordle 1,183 4/6
🟨🟨⬜⬜⬜
🟨🟨🟨⬜🟨
🟨🟩🟨🟨⬜
🟩🟩🟩🟩🟩
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
So I have this embedded SVG mess I'm working on, and being embedded, compromises are often to be made.
One of them is that I don't validate the SVG beyond what I need to parse it. This reduces flash space requirements, and sometimes memory requirements, and can also reduce power/increase execution speed in the margins, although sometimes with more dramatic effect.
Consider the following values for the transform attribute. There can be multiple in a list separated by spaces:
rotate(-10 50 100)
translate(-36 45.5)
skewX(40)
skewY(10)
scale(1 0.5)
matrix(0 0 1 0 1)
Also the space delimiters above may or may not be commas, just to keep things fun, and some of the arguments presented above are not necessarily required
The above would do six transformations in series, as each transformation is presented along with the others, separated by whitespace, resulting in 5 matrix multiplications.
The issue is parsing it.
I don't want to validate all this, because I don't care. So I do things like this:
switch(**current) {
case 'X':
ttype = TRANS_SKEW_X;
state = -1; break;
case 'Y':
ttype = TRANS_SKEW_Y;
state = -1; break;
case 'k':
case 'e':
case 'w':
++(*current);
break;
default:
return FMT_ERROR;
}
That's all a single state in a larger state machine (not pictured). I've "compressed" (lossy) the parsing of skewX vs skewY into two states, with the final state being shown.
Normally you need like N+1 states where N is the number of characters in the phrase you are parsing.
Here, it will except sekwX for example, but what are the odds that you DIDN'T mean skewX on top of the odds that it happens in the first place?
It's a compromise. This is a renderer, not a validator.
But it got me thinking about approximated state machines like this, and I'm trying to sort of float some codeish equations in my head for how to represent them algorithmically, and I'm not seeing it.
I've got "concepts of a plan", is all. That won't get me far.
But it's interesting to me, the idea of compressing state machines in order to approximately match text. I can easily see the use in embedded.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|