Krita source & library layout reorganization

Boudewijn Rempt boud at valdyas.org
Tue Aug 2 22:49:16 CEST 2005


Not something I think we're going today, but it's good to have our thoughts 
about this problem recorded & perhaps discussed. Currently, Krita's source
and library layout is the result of historic growth. 

Originally, we had a couple of libraries that were combined into a big Krita 
part -- tools and core. Paintops and colorstrategies were not separated at 
all. Cyrille made it possible for Krita to use KPart plugins, for instance 
for filters. Then I made the paintops and colorspaces into plugins, but not 
plugins that are loaded when the view is created, but when the application 
factory is created. Nowadays, filters and tools are also loaded when the app 
factory is created, and aren't subject to the kxmlgui tyranny anymore.

However, we don't have a clear separation between a shared krita library and 
the implementation of a koffice part, and we don't have a clear set of 
interfaces that plugins, dcop and scripting bindings can use, and we don't 
have a clear set of interfaces that plugins should implement (so Krita can 
know what's what.

KisFilter is an example of an interface that a filter plugin should implement, 
KisCanvasSubject an example of an interface that a plugin could use; KisView 
is an example of a KOffice part interface implementation that no filter 
should ever need to know about.

The structure I want to propose (but I'm not sure it's possible, I'm not a C++ 
guru yet) is as follows:


krita/
	/kritasdk (includes nothing)
		/coresdk
			/kis_canvas_subject.h
			...
		/pluginsdk
			/kis_filter.h
			...
	/libkrita (include kritasdk)
		/
		/kis_paint_device.h
		/kis_image.h/
		/kis_layer.h
		/datamanager
			/kis_datamanager.h
					
	/kritapart (includes libkrita and kritasdk)
		/kis_doc.h
		/kis_view.h
	/plugins (include kritasdk)
		/filters
		/colorspaces
		/tools
		/paintops
		/extensions (kxmlgui client)
	/dcop (includes kritapart and kritasdk)
		IKisDoc.h
		IKisPaintDevice.h
	/data
	/dtd
	/pics

Both libkrita and kritapart are separate shared libraries (as are all plugins, 
of course.) Maybe dcop should just be a plugin alongside all others.
	
-- 
Boudewijn Rempt 
http://www.valdyas.org/fading/index.cgi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kimageshop/attachments/20050802/8b7cf604/attachment.pgp


More information about the kimageshop mailing list