Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Z
zmap
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ensembl-gh-mirror
zmap
Commits
1aaf56e9
Commit
1aaf56e9
authored
21 years ago
by
rnc
Browse files
Options
Downloads
Patches
Plain Diff
updated with 07/02/04 meeting notes
parent
7c7b22ce
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/design_notes.shtml
+106
-22
106 additions, 22 deletions
doc/design_notes.shtml
with
106 additions
and
22 deletions
doc/design_notes.shtml
+
106
−
22
View file @
1aaf56e9
...
...
@@ -55,7 +55,38 @@ out from other viewers in a good way.
other such stuff, e.g. how about indicating start/end_not_found etc.
<h3>Gnome Canvas</h3>I think this might belong in coding_notes.shtml, rather than here.
<H2>Wish List</H2>
<P>Record anything here that you would like to be considered but is non-essential.
<ul>
<li>Allow user to interactively retitle a window, v. useful when there are lots
of fmap windows on a screen.
<li>Prevent users from zooming in/out to the point where the drawing code breaks, particularly
for zooming in where lines start to randomly appear/disappear.
</ul>
<H1>Design</H1>
<H2>Overview</H2>
<P>
<H2>Configuration Files</H2>
<P>If looks like the libgnome gnome-config calls will do this for us, see:
http://developer.gnome.org/doc/API/2.0/libgnome/libgnome-gnome-config.html
<h3>Gnome Canvas</h3>
<p>Be a good idea to get rid of the graph package altogether if we can. Gnome Canvas
seems a good candidate to replace it, but we need to check a few things first:
<ul>
...
...
@@ -87,31 +118,84 @@ seems a good candidate to replace it, but we need to check a few things first:
not the data pointed to is freed as well as the array itself.
<li>According to developer.gnome.org/doc/whitepapers/canvas/canvas.html you can choose
either of two rendering back-ends, an extremely fast one based on Xlib and another
based on Libart. PostScript is mentioned in the same breath as Libart
, so I'm
investigating furth
er.
based on Libart. PostScript is mentioned in the same breath as Libart
. However,
the Libart (anti-aliased) one is quite a bit slow
er.
<p>The Xlib model, used via GDK, runs well over networks. The Libart model provides
a superset of the PostScript imaging model, allowing high-quality displays.
</ul>
<H2>Wish List</H2>
<P>Record anything here that you would like to be considered but is non-essential.
<H1>Design</H1>
<H2>Overview</H2>
<P>
<H3>Memory usage</H3>
<P>An experiment with creating rectangles in a gnome canvas showed that memory overhead
is quite high. The upshot is that each canvas_item rectangle costs about 2600 bytes, this
is probably because each one is represented by a GObject.
<P>You can see a plot of this data by running gnuplot and displaying the file
gnome_canvas_mem_usage from this docs directory.
<pre>> gnuplot
gnuplot> plot "gnome_canvas_mem_usage"
</pre>
<h3>Meeting Notes - Friday, 7th Feb, 2004</h3>
Rob has made some progress determining what the Zmap and Fmap graph calls do and how to replace them with gtk calls, etc.
The only relevant calls seem to be box, text and line, though there was one fmap circle call. This should be fine.
He has created a zmap which uses gnomecanvas for the navigator and scrollable windows. There are issues with the
scale bars which need to be addressed and there are numerous graph calls still included which need to be removed.
</p><p>
He also has a noddy application with a nice-looking scale bar with coordinates and a feature consisting of two
boxes joined by a bent line which also uses the canvas. This is a useful application for prototyping aspects of
the project.
</p<p>
Ed has done lots of work on threading and now has an application which has a single thread running a rather thin
manager with multiple Zmaps, each of which will issue a DB thread to handle data manipulation.
</><p>
He returned from sunnier climes with a DAS2 server application which we hope to get set up so we can do some
work using that as well as AceDB as our data source. He also has ExPat and libcurl libraries which do SAX simple
Access and gzip and zlib which handle compression.
</p><p>
Apparently this means our http can have <stag> content <etag> and our start callback routine will get
called when it encounters the stag, the content routine gets called for the content and the end routine gets called
for the etag.
</p>
<h3>Decisions</h3>
<ol>
<li>
We decided that when the user hits the Split button it will just be the currently active window that is split, as
in emacs, although the windows themselves will be held as a linked list at root level, so there won't be a
hierarchy of windows in the application; they'll all have the same status.
</li><li>
There must be an arbitrary minimum size window which we'll allow to split, and beyond that the Split button
will be greyed out. This will be controlled by some publicised macro I think.
</li><li>
We will only allow one sequence per Zmap. If they want another sequence, they'll have to run another Zmap.
</li><li>
We will retain the concept of three levels of scrolling. The main sequence will show as some sort of slider bar
covering the entire height of the navigation panel. This can be thought of as range 'a'. The user can scroll
within this area but the display won't change until buttonup, at which point the lights will dim. While moving
the scroll bar, a little window should show the current coordinate, so they know where they are in the scroll.
<p>
Within that is
the sequence which has been calculated, roughly 3 times the amount that can be displayed in the window. This
is currently shown as a light grey area within the navigation panel and can be thought of as range 'b'.
<p>
We're thinking of adding a small scroll bar to this greyed are to allow the user to scroll within the calculated
part of the sequence. We'd need to add extra scroll bars as the user split the screen, one per window. The handle
would indicate roughly where in area 'b' the window display 'c' would be. Ed thinks
recalculating this area as we scroll would be time-consuming, so we'd have to just redo it on buttonup, but I'm
not convinced yet. If he's right, we'll need a little window showing the current coordinate for each 'c' window.
<p>
Finally, there is the range actually on display, range 'c'. This is scrolled with the current scrolled window
scrollbars and the display scrolls as you do it.
</li><li>
We'll need drag bars on the top and bottom of the calculated area b, so the user can stretch it, and the code
must supplement the SEGS array rather than recalculate it from scratch.
</li><li>
When we calculate, we always calculate whole objects, so if a feature overlaps into the void, we include it in
our calculated area, though we don't actually display it. When the user stretches the calculated area, we again
calculate whole objects in both directions, then throw away duplicates, so we never have partial or duplicated
objects.
</li>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment