[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice-devel
Subject:    Some random KOffice ideas
From:       Dik Takken <D.H.J.Takken () phys ! uu ! nl>
Date:       2006-03-25 13:08:38
Message-ID: Pine.LNX.4.64.0603251147360.27865 () venus ! phys ! uu ! nl
[Download RAW message or body]


Hi,

While looking at the latest Beta of KOffice 1.5, I was thinking a bit 
about the overall design of KOffice, embedded objects, and integration of 
multiple kinds of documents into one. Two ideas popped into my mind which 
I would like to describe below. Since I know very little about KOffice 
architecture, these ideas may be totally ridiculous and unrealistic but I 
wanted to post them anyway. You have been warned... :)

Idea 1 is about using GNUPlot as a charting backend for KOffice.
Idea 2 is about improving the integration of embedded objects in KOffice.

Idea 1:

Could KOffice possibly use GNUPlot for creating data plots? It looks like 
KOffice is currently trying to re-invent the graphing-wheel.

Maybe the output of GNUPlot it not hard to integrate into KOffice 
documents, because GNUPlot can render to various vector graphics formats, 
including SVG. I imagine the KChart part could use GNUPlot to generate 
an SVG graphics object and return it to the host application (KSpread, 
KWord, ...). The host application can freely render, scale and rotate the 
SVG graphics without having to call KChart to do this. Only when the 
settings of the graph change, or the data in the graph changes, a new SVG 
object needs to be generated.

Also, it might be possible to allow the user to convert a KChart object 
into an ordinary SVG graphic. This can be useful for customizing a graph 
using a general vector graphics KPart (Karbon?).

Maybe other KParts that produce vector graphics could also output SVG 
data?



Idea 2:

Idea 1 resulted in a second idea, about integrating KPart objects in 
KOffice documents:

It seems to me that it is difficult to achieve seamless integration of 
KPart objects into the host document, because neither the KPart (KChart 
for instance) nor the host application (KSpread for instance) knows what 
the complete document looks like. The embedded objects are seperate 
worlds on their own. Making the entire document, including KPart objects, 
look like one consistent Work of Art can be a bit of a challenge. Getting 
operations like scaling of objects work smoothly can also be tricky, I 
suppose.

(Please correct me if the above is not accurate)

The idea is to solve these issues by making sure that the host application 
knows how to render the entire document, *including* the embedded objects. 
The only thing the host application has no knowledge about is how to edit 
the embedded objects. This is left to the responsible KPart.

Since KOffice is now using the XML-based Open Document format, how about 
the following approach:

* All KOffice parts present their content by outputting XML or SVG data. 
In any case something that can be rendered without knowledge about the 
KPart that generated it.
* The host application will request the XML/SVG data of an embedded object 
only once, and use it to render the object when needed. Updated XML data 
of an embedded object is requested whenever the embedded object has been 
edited by the user.
* All KOffice parts use the same KOffice-wide XML data rendering engine to 
render the XML data to screen or printer. The rendering engine does not 
know which KPart generated the XML/SVG data, it can render it completely 
on its own.
* The host application will gather its own XML data along with the XML 
data of all embedded objects into one big XML document that is rendered by 
the KOffice XML rendering engine. The rendering engine does not see the 
difference between a KChart object, a KWord document, or a KSpread 
document with lots of KChart objects in it.

Maybe this approach will make it possible for KOffice objects to integrate 
better into the host document, because the host application is in charge 
of rendering the entire document, and it knows exactly what the whole 
document looks like. This may introduce new possibilities, like:

* Allow the host application to override the rendering style of the 
embedded objects. For example, the user could change the default font 
size/family/style of the entire document, including the embedded objects. 
This will make it much easier to create documents with a consistent look.

* Embedded objects can be rendered without calling the KPart. When a 
certain KPart is not installed (think of possible third-party KParts), it 
can still be rendered without problems.

* The user can save system resources by converting an embedded object to a 
general XML/SVG object that can only be rendered, not edited. All data 
that was needed by the KPart to edit the embedded object can be removed.

* Fast and smooth scaling/rotating of embedded objects, because the 
host application has all the information that is needed to fo this 
correctly. The KPart does not need to be invoked.

I know nothing about KOffice architecture or the plans for KOffice 2.0, 
and maybe some of these ideas are totally rediculous, but hopefully my 
input is appreciated anyway.

Cheers!

Dik
_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic