SquirrelJME/SquirrelJME

View on GitHub
assets/developer-notes/stephanie-gawroriski/2018/03/23.mkd

Summary

Maintainability
Test Coverage
# 2018/03/23

## 10:45

I think having something simpler would be better. Just use regular branches,
for blending I will just have a blending table be made for graphics. So when
the alpha channel is set it will build a blending table. That might be a bit
slow but in the end I wonder if it would be faster. But calculating gigantic
tables might just be slow like if the alpha channel changes often during
drawing for different effects. I will need to lookup ways to have fast and
efficient alpha blending.

## 10:55

Found something on Stack Overflow which could help with increased alpha
blending speed. I suppose to reduce the method calls per pixel it should be
inline for the most part.

## 10:56

The call to `__blendOr()` could be removed since it can be calculated if the
image has an alpha channel. I suppose `BasicGraphics` will be deprecated.
Also I can perform some operations while setting which use the correct
parameters and such so that I can remove some operations as needed. The only
thing that would be really slow though I suppose would be alpha blending for
8-bit images. But the blending table would only be a short kind of thing.
But the colors would become distorted for the most part if an 8-bit image is
blended because there would be pretty much no accuracy to it, at least for
indexed images anyway.

## 11:36

So one big thing is, can I do Cohen-Sutherland without a for loop.

## 12:22

Looks like there are better algorithms which are smaller it seems so that
would be a good thing to have. What I need though is a graphics demo rather
than making temporary Squirrel Quarrel things, I think that would be the best
thing to do.

## 15:29

Okay so it seems like after the Swing window is resized too much the image
will just disappear and become black, need to figure out the cause of that.

## 15:44

I will need to support planar graphics too so instead of some complicated
switch case which determines how to wrap arrays, instead just have a basic
enumerated case which has the pixel format used. That would make the client
side display easy to do.

## 15:54

Okay so after awhile, it seems the paint call stops even though a repaint is
being performed.

## 16:24

The LCDUI server stuff actually is going to need a bit of a cleanup since
items will need to be added. Additionally I think instead of having single
indexes for everything that instead there are just `LcdDisplayables`
associated with servers. Of course there would be a means to call the callback
accordingly from the client for each given task. Basically there would be a
kind of `TaskDescriptor` which allows one to call back into the callback.
That way there is just a single set of IDs. If a task is cleared then it will
be easier to clean things up. Additionally if a displayable link is lost it
can just be ignored. Also when it comes to system calls back and forth it
could be just done in the server code rather than the request perhaps. Or
actually instead of just `LcdRequest` with arguments, there would actually be
subclasses with the specified request things that can be run accordingly
rather than just having it in the request handler itself. Then when it comes
to things which can be cleaned up, I will have a base class which is for each
item and displayable. Then that can be managed in the queue accordingly.

## 16:53

Actually I believe for simplicity, everything is going to be a widget which
could contain other widgets as such. This makes the local hierachy a bit
better for the most part as needed.

## 17:15

Actually on the remote end, widgets will work for displays. I thought I would
just being doing something complex, but displays will just contain widgets
anyway. Basically the display will be a top level container for everything,
that way when a task uses a display along with every other task, there is no
added complexity or mess as to which display is current. What I mean is like
that if two programs are running and using the same display, programs will
rely on `getCurrent()` returning the passed widget even if some other program
changed their current display. So this works out actually and now I have an
idea of how to refactor the server.

## 17:19

`RequestHandler` can be folded into `LcdDisplays` and that will be the primary
thing.