Line Graphs and Reports
Christian Stimming
stimming@tuhh.de
Mon, 18 Feb 2002 10:50:12 +0100
Michael T. Garrison Stuber wrote:
>>Since new code has to be written anyway, I'd strongly suggest using the Guppi
>>core API directly from Gnucash. This would basically mean that the code which
>>currently accesses the Guppi core API and lies in Guppi's directory
>>libguppitank/guppi-object-{barchart,pie,scatter}.c would the lie inside
>>Gnucash's src/gnome/gnc-html-guppi.c or similar.
>
> As you mentioned, it is a good idea to maintain some sort of wrapper layer
> between GnuCash and Guppi.
Right, but we should be more precise about what exactly is wrapped
before whom. I think it is enough to have the scheme 'wrapper' API in
src/scm/html-barchart.scm etc., so that the report code won't need to
change even if the graph implementation changes. Everything else within
Gnucash might be allowed to change -- that is, both the html code
generation in src/scm/html-barchart.scm *and* the guppi-calling
implementation in src/gnome/gnc-html-guppi.c. Both code domains are
totally under our control. I think that especially between the
implementation in src/gnome/gnc-html-guppi.c and guppi itself there is
*no* need for an additional abstraction layer. Even now gnc-html-guppi.c
already uses some knowledge about the guppi internals, namely, some of
the Guppi options are used in a version-dependent way.
> the same time, libguppitank already
> provides this. My inclination is to take the current libguppitank code
> and rename it to avoid conflicts, and move it into the GnuCash branch, and
> then modify it to support line plots, and whatever else in the core Guppi
> API we want to add in the future. It seems sort of silly to write an
> abstraction layer from scratch,
Oh, I wouldn't bother too much with moving the existing libguppitank
code to inside gnucash. The current libguppitank implementation (for
{bar,pie,scatter}charts) is working, so why should we reinvent the wheel
here? The line plot issue is a different setting. That's a plot type
where we have to write code for anyway, so we could write the code
inside gnucash. I see no problem if gnc-html-guppi.c calls libguppitank
functions for {bar,pie,scatter}charts and "gnc-guppi" functions (or
whatever it'll be called) for line plots.
I think gnc-guppi as a prefix would be fine. The way that API can be
designed could follow the libguppitank implementation. That would result
in two files gnc-guppi-object-lineplot.[hc] .
Christian