10 UMLClass 480 230 190 90 /*Image*/ -- +pixel_data: byte[][] +size: Vector2 -- +clear_image(Color) UMLClass 770 280 180 40 *RasterImage* -- -- UMLClass 1100 240 210 110 *ShapedImage* -- -polygon_data: byte[][] -- +create_vertex(Vector2) +remove_vertex(Vector2) +clear_polygon() UMLClass 380 490 290 190 /*Tool*/ -- +effected_area_border_color: Color +effected_area_border_radius: int +effected_area_border_line_type: LineType +name: String +icon: Sprite +tooltip: String +description: String ... -- /+handleImageClick(Vector2): void/ Relation 660 290 130 30 lt=<<- 10.0;10.0;110.0;10.0 Relation 940 290 180 30 lt=<<- 10.0;10.0;160.0;10.0 Relation 560 310 30 200 lt=<<. 10.0;10.0;10.0;180.0 UMLClass 470 820 230 170 /*SetColorTool*/ -- +colors: Color[255] +selected_colors: Color[2] -- +renderColorPalette(): void +setMainColor(Color): void +setSecondaryColor(Color): void +getMainColor(): Color +getSecondaryColor(): Color UMLClass 770 460 250 130 *HistoryTool* -- -history: HistoryAction[20] -current_location: int -- +undo(): bool +redo(): bool +clearRedo(): void +addUndo(HistoryAction): void UMLClass 30 230 210 130 <<Enumeration>> *LineType* -- Solid Dotted Dashed LongDash ... Relation 1010 480 110 30 lt=<<<<- 10.0;10.0;90.0;10.0 UMLClass 1100 480 190 50 *HistoryAction* -- +string action_data[] -- UMLClass 1390 500 210 110 <<Enumeration>> *HistoryActionType* -- ColorChange Deletion PolygonVertex .... Relation 1280 500 130 40 lt=<- +action_type 110.0;20.0;10.0;20.0 UMLClass 770 920 250 50 *FloodFillTool* -- -- +handleImageClick(Vector2): void UMLClass 770 1000 250 50 *PlainTool* -- -- +handleImageClick(Vector2): void UMLClass 770 790 250 100 /*FormsTool*/ -- +edge_display_line_type: LineType +edge_display_color: Color +edge_display_thickness: int -- +handleImageClick(Vector2): void UMLClass 770 690 250 70 *PenTool* -- -radius: int -- +handleImageClick(Vector2): void UMLClass 1110 750 260 100 *RectangleTool* -- +edge_thickness: int +edge_line_type: LineType -- +handleImageClick(Vector2): void UMLClass 1110 870 240 80 *LineTool* -- +thickness: int +line_type: LineType -- +handleImageClick(Vector2): void UMLClass 1110 630 260 100 *ConvexFormsTool* -- +edge_thickness: int +edge_line_type: LineType -- +handleImageClick(Vector2): void UMLClass 1110 970 260 100 *PolygonTool* -- +edge_thickness: int +edge_line_type: LineType -- +handleImageClick(Vector2): void Relation 690 690 100 160 lt=<<- 10.0;140.0;80.0;10.0 Relation 690 790 100 110 lt=<<- 10.0;90.0;80.0;10.0 Relation 690 920 100 30 lt=<<- 10.0;10.0;80.0;10.0 Relation 690 970 100 60 lt=<<- 10.0;10.0;80.0;40.0 Relation 560 670 30 170 lt=<<- 10.0;10.0;10.0;150.0 Relation 1010 670 120 160 lt=<<- 10.0;140.0;100.0;10.0 Relation 1010 780 120 70 lt=<<- 10.0;50.0;100.0;10.0 Relation 1010 850 120 70 lt=<<- 10.0;10.0;100.0;50.0 Relation 1010 870 120 140 lt=<<- 10.0;10.0;100.0;120.0 Relation 660 470 130 80 lt=<<- 10.0;60.0;110.0;10.0 UMLClass 770 1080 250 90 *CircleTool* -- +edge_thickness: int +edge_line_type: LineType -- +handleImageClick(Vector2): void Relation 670 980 120 130 lt=<<- 10.0;10.0;100.0;110.0 UMLClass 30 670 250 70 *MergeTool* -- +import_file: DataStream<File> -- +handleImageClick(Vector2): void UMLClass 30 430 250 50 *RotateTool* -- -- +handleImageClick(Vector2): void UMLClass 30 550 250 50 *ResizeTool* -- -- +handleImageClick(Vector2): void Relation 270 440 130 110 lt=<<- 110.0;90.0;10.0;10.0 Relation 270 560 130 50 lt=<<- 110.0;30.0;10.0;10.0 Relation 270 640 130 90 lt=<<- 110.0;10.0;10.0;70.0