top of page

[July 4th - July 7th] Week3 Report

Since there is no meeting last week, I left label unchanged and opened two new branches: arrow and drawLine. Both of them belong to Edge Component.

Complete plans made in week 2 report

1. Decide label solution, maybe work on it.

TO BE DECIDED after meeting tomorrow.

2. Finish arrow factory

Based on Zugzwang, I implemented 12 kinds of arrow shapes WITHOUT CAP. The reason is that we want to integrate arrows and line to be edge component. So I will leave cap problem to the whole component.

Features of arrow:

1. 12 pre-defined shape arrow. Will not work on customize arrow shape.

2. setScale in both x and y direction

3. setOrigin to move arrow

4. setColor. Notice that texture will not be supported for arrow.I don't think it's necessary.So for color, just uniform color.

5. setZorder.

Problem:

I can't find there is a way to add independent arrow in present Cytoscape.

3. Work on drawLines

These are the line shapes that pokeMeow should support(From Cytoscape manual).

What I have done:

1.For now, I simply use OpenGL to implement 7 of 13 kinds of line shapes. Like arrow, the color is uniform and you can set everything like arrow.

2. The period of some kinds of lines, for example, sine wave, is also changeable.

(But not settled yet, I'll work on it later)

3.LineWidth and pointWidth is changeable

What I intend to do:

Firstly complete 13 kinds of line shapes using OpenGL.

OPEN TO DISCUSS: is there any need to implement Anti-Grain Geometry?

Anti-Grain Geometry(AGG) can be used in many areas of computer programming where high quality 2D graphics is an essential part of the project.

The idea is from the paper here(http://jcgt.org/published/0002/02/08/paper.pdf)

To see the results:

(http://www.antigrain.com/doc/introduction/introduction.agdoc.html)

To render high-quality and fast curve using fragment shader and perform very well for Anti-Aliasing.

This is a replacement for stroke in Java.awt (https://docstore.mik.ua/orelly/java-ent/jfc/ch04_05.htm) which is used in Zugzwang.

There is an example implementation in Python, Vispy library(http://ipython-books.github.io/featured-06/),

"....High-quality rendering of curves can be achieved using an OpenGL implementation of the Anti-grain Geometry (agg) library."

Also , please refer to this blog for some details(http://labs.hyperandroid.com/tag/opengl-lines)

The following is several circumstance we may want to use AGG:

1. tackle with bend line

2. hand written line

The unknown matter is the performance difference of pure OpenGL and OpenGL+AGG

Next week:

1. Tackle with all branches now, merge or discard.

2. Finish edge component. Wrap line and arrow into edge

3. customized nodes

bottom of page