Krita source reorganization

Boudewijn Rempt boud at valdyas.org
Wed Sep 28 13:03:57 CEST 2005


I've touched on this topic before, but now I've also done a little work: make 
a table of everything in sdk, core and ui and determine what should go where.

Basically, I propose four shared libraries:

libkritasdk
libkritaui
libkrita
libkritapart

The sdk and ui library can be used by plugins: they contain interfaces a 
plugin should implement, and interfaces for classes the krita application and 
image handling library provides. Libkrita should be(come) a reusable library 
for handling layered raster images. Libkritapart is the koffice application 
and includes the canvas and event handling.

This is just a re-ordering of header files. When implementing this proposal we 
will have to create more header files with just abstract classes and more 
kis_xxx_impl classes.

What's important here is: have I misplaced something, and what needs to be 
added.

I want to hide the various registry classes behind one registry that uses a 
resource type as an extra parameter (but how do I create a global static that 
everyone can access, or rather, where do I do that? In the sdk I guess), and 
a factory to make it possible to create paint devices and layers and so on, 
also in an extensible fashion. I'm wondering whether it would be desirable to 
make it possible for plugins to create new paint device types.

Here's the redistribution of our core and ui classes:

sdk (helper classes)
	sdk/kis_id.h
	sdk/kis_global.h
	sdk/kis_composite_op.h
	core/kis_rect.h
	core/kis_cursor.h
	core/kis_integer_maths.h
	core/kis_vec.h
	core/kis_point.h
	core/kis_shared_ptr_vector.h
	core/kis_matrix.h
	core/kis_boundary.h
	core/kis_config.h
	core/kis_types.h
	core/kis_registry.h (new)

sdk/core
	image/ (implemented by libkrita)
		sdk/kis_paint_device_factory.h
		sdk/kis_channelinfo.h
		sdk/kis_paint_device.h
		core/kis_color.h
		core/kis_fill_painter.h
		core/kis_convolution_painter.h
		core/kis_gradient_painter.h
		core/kis_painter.h
		core/kis_layer.h
		core/kis_histogram.h
		core/kis_histogram_producer.h
		core/kis_pixel.h
		core/kis_image.h
		core/kis_iterators_pixel.h
		core/kis_selection.h
		core/resources/kis_palette.h
		core/resources/kis_profile.h
		core/resources/kis_resource.h
		core/resources/kis_gradient.h
		core/resources/kis_resourceserver.h
		core/resources/kis_brush.h
		core/resources/kis_pattern.h
		ui/kis_resource_mediator.h
		core/kis_selected_transaction.h

	ui/ (implemented by kritapart)
		sdk/kis_canvas_subject.h
		sdk/kis_canvas_controller.h
		sdk/kis_undo_adapter.h
		ui/kis_progress_display_interface.h


sdk/plugins (interface implemented by plugins and base classes extended by 
plugins)
	/api
		core/tool/kis_tool.h
		core/kis_filter.h
		core/paintop/kis_paintop.h
		sdk/kis_colorspace.h
		sdk/kis_canvas_observer.h
	/bases
		core/color_strategy/kis_f32_base_colorspace.h
		core/color_strategy/kis_f16half_base_colorspace.h
		core/color_strategy/kis_abstract_colorspace.h
		core/color_strategy/kis_u16_base_colorspace.h
		core/color_strategy/kis_u8_base_colorspace.h
		core/tool/kis_tool_shape.h
		core/tool/kis_tool_paint.h
		core/tool/kis_tool_freehand.h
		core/tool/kis_tool_non_paint.h


libkritaui (widgets that are useful only within Krita)
	ui/kis_color_cup.h
	ui/kis_multi_bool_filter_widget.h
	sdk/kis_filter_config_widget.h
	ui/kis_previewdialog.h
	ui/kis_multi_integer_filter_widget.h
	ui/kis_cmb_composite.h
	ui/kis_progress_subject.h
	ui/kis_cmb_idlist.h
	ui/kis_previewview.h
	ui/kis_selection_options.h
	ui/kis_iconwidget.h
	ui/kis_matrix_widget.ui.h
	ui/kis_multi_double_filter_widget.h
	ui/kis_paintop_box.h


libkritapart (the gui (a koffice part) with all dialogs. Contains 
implementations also of sdk/core/ui)
	core/kis_factory.h
	ui/kis_dlg_progress.h
	ui/kis_dlg_preferences.h
	ui/kis_pattern_chooser.h
	ui/kis_dlg_transform.h
	ui/kis_dlg_image_properties.h
	ui/kis_gradient_chooser.h
	ui/kis_dlg_layer_properties.h
	ui/kis_dlg_new_layer.h
	ui/kis_dlg_create_img.h
	ui/kis_brush_chooser.h
	ui/kis_label_zoom.h
	core/kis_event.h
	core/kis_double_click_event.h
	core/kis_button_press_event.h
	core/kis_button_release_event.h
	core/kis_button_event.h
	core/kis_move_event.h
	kis_canvas.h
	kis_doc.h
	kis_view.h
	ui/kis_label_progress.h
	core/kis_aboutdata.h
	ui/kis_label_cursor_pos.h
	ui/kis_autobrush.h
	ui/kis_autogradient.h
	ui/kis_itemchooser.h
	core/kis_tool_manager.h
	core/kis_selection_manager.h
	core/kis_filter_manager.h
	core/kis_part_layer.h
	core/kis_command.h
	core/kis_clipboard.h

	
libkrita (the layered raster image manipulation library, should be reusable, 
          contains also implentations of sdk/core/image)

	core/color_strategy/kis_basic_histogram_producers.h
	core/color_strategy/tests/kis_color_conversions_tester.h
	core/color_strategy/kis_xyz_colorspace.h
	core/color_strategy/kis_color_conversions.h
	core/color_strategy/kis_alpha_colorspace.h
	core/resources/kis_imagepipe_brush.h
	core/resources/kis_autogradient_resource.h
	core/resources/kis_autobrush_resource.h
	core/resources/kis_alpha_mask.h
	core/tests/kis_image_tester.h
	core/tests/kis_integer_maths_tester.h
	core/tiles/kis_tileddatamanager.h
	core/tiles/kis_datamanager.h
	core/tiles/kis_tilemanager.h
	core/tiles/tests/kis_tiled_data_tester.h
	core/tiles/kis_tile.h
	core/tiles/kis_tilediterator.h
	core/tiles/kis_memento.h
	core/tiles/kis_iterator.h
	core/tiles/kis_tile_global.h
	core/kis_paint_device_impl.h
	core/tool/kis_tool_factory.h
	core/tool/kis_tool_dummy.h
	core/tool/kis_tool_controller.h
	core/kis_transform_visitor.h
	core/kis_scale_visitor.h
	core/kis_background.h	
	core/visitors/kis_merge.h
	core/visitors/kis_flatten.h
	core/kis_iteratorpixeltrait.h
	core/kis_rotate_visitor.h
	core/kis_nameserver.h
	core/kis_paint_device_visitor.h
	core/kis_iterator_proxy.h
	core/kis_transaction.h
	core/kis_filter_strategy.h
	core/strategy/kis_strategy_move.h
	core/kis_annotation.h
	core/paintop/kis_paintop_registry.h
	core/kis_filter_registry.h
	core/color_strategy/kis_colorspace_factory_registry.h
	core/tool/kis_tool_registry.h
	sdk/kis_generic_registry.h 

kofficeui (widgets useful for all of koffice)
	ui/kis_histogram_view.h
	ui/kis_double_widget.h
	ui/kis_hsv_widget.h
	ui/kis_layerbox.h
	ui/kis_rgb_widget.h
	ui/kis_dlg_apply_profile.h
	ui/kis_controlframe.h
	ui/kis_palette_widget.h
	ui/kis_ruler.h
	ui/kis_icon_item.h
	ui/kis_birdeye_box.h
	ui/kis_guide.h
	ui/kcurve.h
	ui/kis_gradient_slider_widget.h
	ui/kis_gray_widget.h
	ui/kis_colorwheel.h
	ui/kobirdeyepanel.h
	ui/kis_previewwidget.h

-- 
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/20050928/f33a2283/attachment.pgp


More information about the kimageshop mailing list