SubDir HAIKU_TOP src apps icon-o-matic ;

SetSubDirSupportedPlatformsBeOSCompatible ;
AddSubDirSupportedPlatforms libbe_test ;

# defines (get all the extra stuff in from libicon.a classes)
local defines = [ FDefines ICON_O_MATIC=1 ] ;

SubDirCcFlags $(defines) ;
SubDirC++Flags $(defines) ;

# libicon.a source directories
local iconSourceDirs =
	icon
	icon/flat_icon
	icon/message
	icon/shape
	icon/style
	icon/transformable
	icon/transformer
;

local iconSourceDir ;
for iconSourceDir in $(iconSourceDirs) {
	SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src libs $(iconSourceDir) ] ;
}


# source directories
local sourceDirs =
	document
	document/savers
	generic
	generic/command
	generic/gui
	generic/gui/panel
	generic/gui/panel/color_picker
	generic/gui/popup_control
	generic/gui/scrollview
	generic/gui/stateview
	generic/listener
	generic/property
	generic/property/specific_properties
	generic/property/view
	generic/property/view/specific_properties
	generic/selection
	generic/support
	gui
	import_export
	import_export/bitmap
	import_export/flat_icon
	import_export/message
	import_export/svg
	import_export/styled_text
	shape
	shape/commands
	style
	transformable
	transformer
;

local sourceDir ;
for sourceDir in $(sourceDirs) {
	SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src apps icon-o-matic $(sourceDir) ] ;
}

# system headers
UseLibraryHeaders agg expat icon ;
UsePrivateHeaders shared ;



Application Icon-O-Matic :
	########  libicon.a  ########

	# icon/flat_icon
	FlatIconFormat.cpp
	FlatIconImporter.cpp
	LittleEndianBuffer.cpp
	PathCommandQueue.cpp

	# icon/message
	Defines.cpp
	MessageImporter.cpp

	# icon/shape
	PathContainer.cpp
	Shape.cpp
	ShapeContainer.cpp
	VectorPath.cpp

	# icon/style
	GradientTransformable.cpp
	Style.cpp
	StyleContainer.cpp

	# icon/transformable
	Transformable.cpp

	# icon/transformer
	AffineTransformer.cpp
	ContourTransformer.cpp
	PathSource.cpp
	PerspectiveTransformer.cpp
	StrokeTransformer.cpp
	Transformer.cpp
	TransformerFactory.cpp

	# icon
	Icon.cpp
	IconRenderer.cpp

	########  Icon-O-Matic  ########

	# document
	Document.cpp
	IconObject.cpp
	SetPropertiesCommand.cpp

	# document/savers
	AttributeSaver.cpp
	BitmapSetSaver.cpp
	DocumentSaver.cpp
	FileSaver.cpp
	MessengerSaver.cpp
	NativeSaver.cpp
	SimpleFileSaver.cpp

	# generic/command
	Command.cpp
	CommandStack.cpp
	CompoundCommand.cpp

	# generic/gui
	Group.cpp
	InputTextView.cpp
	NummericalTextView.cpp
	StringTextView.cpp
	ListViews.cpp
	SwatchView.cpp

	# generic/gui/panel
	Panel.cpp

	# generic/gui/panel/color_picker
	AlphaSlider.cpp
	ColorField.cpp
	ColorPickerPanel.cpp
	ColorPickerView.cpp
	ColorPreview.cpp
	ColorSlider.cpp

	# generic/gui/popup_control

	# generic/gui/scrollview
	Scrollable.cpp
	Scroller.cpp
	ScrollView.cpp

	# generic/gui/stateview
	Manipulator.cpp
	MultipleManipulatorState.cpp
	StateView.cpp
	ViewState.cpp

	# generic/listener
	Observable.cpp
	Observer.cpp

	# generic/property
	CommonPropertyIDs.cpp
	Property.cpp
	PropertyObject.cpp

	# generic/property/specific_properties
	ColorProperty.cpp
	IconProperty.cpp
	Int64Property.cpp
	OptionProperty.cpp

	# generic/property/view
	PropertyEditorFactory.cpp
	PropertyEditorView.cpp
	PropertyItemView.cpp
	PropertyListView.cpp

	# generic/property/view/specific_properties
	BoolValueView.cpp
	ColorValueView.cpp
	FloatValueView.cpp
	IconValueView.cpp
	Int64ValueView.cpp
	IntValueView.cpp
	OptionValueView.cpp
	StringValueView.cpp
	SwatchValueView.cpp
	TextInputValueView.cpp

	# generic/selection
	Selectable.cpp
	Selection.cpp

	# generic/support
	Referenceable.cpp
	RWLocker.cpp
	support.cpp
	support_ui.cpp
	support_settings.cpp

	# gui
	GradientControl.cpp
	IconObjectListView.cpp
	PathListView.cpp
	SavePanel.cpp
	ShapeListView.cpp
	StyleListView.cpp
	StyleView.cpp
	SwatchGroup.cpp
	TransformerListView.cpp

	# import_export
	Exporter.cpp
	Importer.cpp

	# import_export/bitmap
	BitmapExporter.cpp

	# import_export/flat_icon
	FlatIconExporter.cpp
	RDefExporter.cpp
	SourceExporter.cpp

	# import_export/message
	MessageExporter.cpp

	# import_export/styled_text
	StyledTextImporter.cpp

	# import_export/svg
	DocumentBuilder.cpp
	PathTokenizer.cpp
	SVGExporter.cpp
	SVGGradients.cpp
	SVGImporter.cpp
	SVGParser.cpp

	# shape
	PathManipulator.cpp

	# shape/commands
	AddPathsCommand.cpp
	AddPointCommand.cpp
	AddShapesCommand.cpp
	AddTransformersCommand.cpp
	ChangePointCommand.cpp
	CleanUpPathCommand.cpp
	FlipPointsCommand.cpp
	FreezeTransformationCommand.cpp
	InsertPointCommand.cpp
	MoveShapesCommand.cpp
	MovePathsCommand.cpp
	MoveTransformersCommand.cpp
	NudgePointsCommand.cpp
	PathCommand.cpp
	RemovePathsCommand.cpp
	RemovePointsCommand.cpp
	RemoveShapesCommand.cpp
	RemoveTransformersCommand.cpp
	ReversePathCommand.cpp
	RotatePathIndicesCommand.cpp
	SplitPointsCommand.cpp
	TransformPointsCommand.cpp
	UnassignPathCommand.cpp

	# style
	AddStylesCommand.cpp
	AssignStyleCommand.cpp
	CurrentColor.cpp
	MoveStylesCommand.cpp
	RemoveStylesCommand.cpp
	SetColorCommand.cpp
	SetGradientCommand.cpp

	# transformable
	CanvasTransformBox.cpp
	ChannelTransform.cpp
	ResetTransformationCommand.cpp
	TransformBox.cpp
	TransformBoxStates.cpp
	TransformCommand.cpp
	TransformGradientBox.cpp
	TransformObjectsCommand.cpp
	TransformPointsBox.cpp
	TransformShapesBox.cpp

	#
	CanvasView.cpp
	IconEditorApp.cpp
	IconView.cpp
	main.cpp
	MainWindow.cpp
	Util.cpp

	: be tracker translation libshared.a libagg.a libexpat.a $(TARGET_LIBSTDC++)

	: Icon-O-Matic.rdef
;
