From 0b619f91bb70be605d2e82e5ca825eb96860d16d Mon Sep 17 00:00:00 2001 From: Paul Norberger Date: Fri, 7 Feb 2020 16:37:20 +0100 Subject: [PATCH] Change folder structure for final release without clutter --- {docs => docs-src}/CRC-Karten/CRC-Karten.docx | Bin {docs => docs-src}/CRC-Karten/CRC-Karten.pdf | Bin .../author_work_per_week.svg | 0 .../Author Work per Week/convert-data.py | 0 .../lines_of_code_by_author.dat | 0 .../lines_of_code_by_author.plot | 0 .../Charts/Author Work per Week/output.dat | 0 .../workload_per_week.plt | 0 {docs => docs-src}/Charts/Work Pies/Code.svg | 0 .../Charts/Work Pies/Dokumentation.svg | 0 .../Charts/Work Pies/Kundenkommunikation.svg | 0 .../Charts/Work Pies/Legende.svg | 0 .../Charts/Work Pies/Teammanagment.svg | 0 .../Charts/Work Pies/UI Design.svg | 0 .../Charts/Work Pies/aufteilungen.txt | 0 .../Charts/Workload_per_Week.svg | 0 .../Entwicklerhandbuch.docx | Bin .../Entwicklerhandbuch/Entwicklerhandbuch.pdf | Bin .../Sequenzdiagram-PenTool.svg | 0 .../Sequenzdiagram-PlainTool.svg | 0 {docs => docs-src}/Entwicklerhandbuch/UML.svg | 0 .../Entwicklerhandbuch/Use_Case_1.svg | 0 .../Entwicklerhandbuch/Use_Case_2.svg | 0 .../Zustandsiagram-Layer-Color.svg | 0 .../Zustandsiagram-Tool.svg | 0 .../Manual/assets/all-tools.png | Bin .../Manual/assets/change-colors.png | Bin .../Manual/assets/close-window.png | Bin .../Manual/assets/color-switch.png | Bin .../Manual/assets/create-layer.png | Bin .../Manual/assets/file-open.png | Bin .../Manual/assets/file-options.png | Bin .../Manual/assets/file-save.png | Bin {docs => docs-src}/Manual/assets/icon.png | Bin {docs => docs-src}/Manual/assets/icon.svg | 0 .../Manual/assets/layer-options.png | Bin .../Manual/assets/maximize-window.png | Bin .../Manual/assets/minimize-window.png | Bin {docs => docs-src}/Manual/assets/startup.png | Bin .../Manual/assets/tool-circle.png | Bin .../Manual/assets/tool-flood-fill.png | Bin .../Manual/assets/tool-gradient.png | Bin .../Manual/assets/tool-magic-wand.png | Bin {docs => docs-src}/Manual/assets/tool-pen.png | Bin .../Manual/assets/tool-plain.png | Bin {docs => docs-src}/Manual/assets/toollist.png | Bin {docs => docs-src}/Manual/manual.aux | 0 {docs => docs-src}/Manual/manual.log | 0 {docs => docs-src}/Manual/manual.pdf | Bin {docs => docs-src}/Manual/manual.synctex.gz | Bin {docs => docs-src}/Manual/manual.tex | 0 {docs => docs-src}/Manual/manual.toc | 0 .../Sequenzdiagram-PenTool.uxf | 0 .../Sequenzdiagram-PlainTool.uxf | 0 {docs => docs-src}/ToDo/todo.org | 0 {docs => docs-src}/ToDo/todo.pdf | Bin {docs => docs-src}/UML.uxf | 1280 ++++++------ {docs => docs-src}/UnitTest_Benchmark.xlsx | Bin {docs => docs-src}/Use Case/Use_Case_1.uxf | 0 {docs => docs-src}/Use Case/Use_Case_2.uxf | 0 .../Volere Snow Cards/Req_0001.txt | 0 .../Volere Snow Cards/Req_0002.txt | 0 .../Volere Snow Cards/Req_0003.txt | 0 .../Volere Snow Cards/Req_0004.txt | 0 .../Volere Snow Cards/Req_0005.txt | 0 .../Volere Snow Cards/Req_0006.txt | 0 .../Volere Snow Cards/Req_0007.txt | 0 .../Volere Snow Cards/Req_0008.txt | 0 .../Zustandsiagram-Layer-Color.uxf | 0 .../Zustandsdiagramm/Zustandsiagram-Tool.uxf | 0 docs-src/html/_intelli_color_picker_8cpp.html | 104 + .../_intelli_color_picker_8cpp_source.html | 143 ++ docs-src/html/_intelli_color_picker_8h.html | 115 + .../_intelli_color_picker_8h__dep__incl.dot | 65 + .../html/_intelli_color_picker_8h__incl.dot | 13 + .../html/_intelli_color_picker_8h_source.html | 146 ++ docs-src/html/_intelli_datamanager_8cpp.html | 105 + .../_intelli_datamanager_8cpp_source.html | 219 ++ docs-src/html/_intelli_datamanager_8h.html | 123 ++ docs-src/html/_intelli_datamanager_8h.js | 5 + .../html/_intelli_datamanager_8h_source.html | 122 ++ ...li_helper_2_intelli_color_picker_8cpp.html | 104 + ...lper_2_intelli_color_picker_8cpp__incl.dot | 15 + ...er_2_intelli_color_picker_8cpp_source.html | 139 ++ docs-src/html/_intelli_helper_8cpp.html | 116 ++ docs-src/html/_intelli_helper_8cpp__incl.dot | 19 + .../html/_intelli_helper_8cpp_source.html | 236 +++ docs-src/html/_intelli_helper_8h.html | 150 ++ docs-src/html/_intelli_helper_8h.js | 8 + .../html/_intelli_helper_8h__dep__incl.dot | 43 + docs-src/html/_intelli_helper_8h__incl.dot | 11 + docs-src/html/_intelli_helper_8h_source.html | 150 ++ docs-src/html/_intelli_image_8cpp.html | 106 + docs-src/html/_intelli_image_8cpp__incl.dot | 30 + docs-src/html/_intelli_image_8cpp_source.html | 292 +++ docs-src/html/_intelli_image_8h.html | 160 ++ docs-src/html/_intelli_image_8h.js | 8 + .../html/_intelli_image_8h__dep__incl.dot | 43 + docs-src/html/_intelli_image_8h__incl.dot | 25 + docs-src/html/_intelli_image_8h_source.html | 222 ++ docs-src/html/_intelli_input_dialog_8cpp.html | 104 + .../_intelli_input_dialog_8cpp_source.html | 191 ++ docs-src/html/_intelli_input_dialog_8h.html | 119 ++ .../html/_intelli_input_dialog_8h_source.html | 159 ++ docs-src/html/_intelli_photo_gui_8cpp.html | 111 + docs-src/html/_intelli_photo_gui_8cpp.js | 5 + .../html/_intelli_photo_gui_8cpp__incl.dot | 74 + .../html/_intelli_photo_gui_8cpp_source.html | 1115 ++++++++++ docs-src/html/_intelli_photo_gui_8h.html | 128 ++ .../html/_intelli_photo_gui_8h__dep__incl.dot | 32 + docs-src/html/_intelli_photo_gui_8h__incl.dot | 25 + .../html/_intelli_photo_gui_8h_source.html | 397 ++++ docs-src/html/_intelli_raster_image_8cpp.html | 107 + .../html/_intelli_raster_image_8cpp__incl.dot | 35 + .../_intelli_raster_image_8cpp_source.html | 170 ++ docs-src/html/_intelli_raster_image_8h.html | 113 + .../_intelli_raster_image_8h__dep__incl.dot | 38 + .../html/_intelli_raster_image_8h__incl.dot | 27 + .../html/_intelli_raster_image_8h_source.html | 143 ++ .../html/_intelli_render_settings_8cpp.html | 104 + .../_intelli_render_settings_8cpp__incl.dot | 9 + .../_intelli_render_settings_8cpp_source.html | 119 ++ .../html/_intelli_render_settings_8h.html | 112 + ..._intelli_render_settings_8h__dep__incl.dot | 47 + .../_intelli_render_settings_8h_source.html | 126 ++ docs-src/html/_intelli_shaped_image_8cpp.html | 108 + .../html/_intelli_shaped_image_8cpp__incl.dot | 39 + .../_intelli_shaped_image_8cpp_source.html | 235 +++ docs-src/html/_intelli_shaped_image_8h.html | 114 + .../_intelli_shaped_image_8h__dep__incl.dot | 32 + .../html/_intelli_shaped_image_8h__incl.dot | 30 + .../html/_intelli_shaped_image_8h_source.html | 157 ++ docs-src/html/_intelli_tool_8cpp.html | 106 + docs-src/html/_intelli_tool_8cpp__incl.dot | 74 + docs-src/html/_intelli_tool_8cpp_source.html | 247 +++ docs-src/html/_intelli_tool_8h.html | 115 + docs-src/html/_intelli_tool_8h__dep__incl.dot | 58 + docs-src/html/_intelli_tool_8h__incl.dot | 19 + docs-src/html/_intelli_tool_8h_source.html | 207 ++ docs-src/html/_intelli_tool_circle_8cpp.html | 107 + .../html/_intelli_tool_circle_8cpp__incl.dot | 82 + .../_intelli_tool_circle_8cpp_source.html | 221 ++ docs-src/html/_intelli_tool_circle_8h.html | 115 + .../_intelli_tool_circle_8h__dep__incl.dot | 11 + .../html/_intelli_tool_circle_8h__incl.dot | 23 + .../html/_intelli_tool_circle_8h_source.html | 154 ++ .../html/_intelli_tool_flood_fill_8cpp.html | 109 + .../_intelli_tool_flood_fill_8cpp__incl.dot | 84 + .../_intelli_tool_flood_fill_8cpp_source.html | 216 ++ .../html/_intelli_tool_flood_fill_8h.html | 114 + ..._intelli_tool_flood_fill_8h__dep__incl.dot | 11 + .../_intelli_tool_flood_fill_8h__incl.dot | 22 + .../_intelli_tool_flood_fill_8h_source.html | 151 ++ .../html/_intelli_tool_gradient_8cpp.html | 107 + .../_intelli_tool_gradient_8cpp_source.html | 257 +++ docs-src/html/_intelli_tool_gradient_8h.html | 113 + .../_intelli_tool_gradient_8h_source.html | 163 ++ docs-src/html/_intelli_tool_line_8cpp.html | 107 + .../html/_intelli_tool_line_8cpp__incl.dot | 80 + .../html/_intelli_tool_line_8cpp_source.html | 181 ++ docs-src/html/_intelli_tool_line_8h.html | 114 + docs-src/html/_intelli_tool_line_8h.js | 8 + .../html/_intelli_tool_line_8h__dep__incl.dot | 11 + docs-src/html/_intelli_tool_line_8h__incl.dot | 22 + .../html/_intelli_tool_line_8h_source.html | 152 ++ docs-src/html/_intelli_tool_pen_8cpp.html | 108 + .../html/_intelli_tool_pen_8cpp__incl.dot | 83 + .../html/_intelli_tool_pen_8cpp_source.html | 181 ++ docs-src/html/_intelli_tool_pen_8h.html | 115 + .../html/_intelli_tool_pen_8h__dep__incl.dot | 11 + docs-src/html/_intelli_tool_pen_8h__incl.dot | 23 + .../html/_intelli_tool_pen_8h_source.html | 150 ++ docs-src/html/_intelli_tool_plain_8cpp.html | 106 + .../html/_intelli_tool_plain_8cpp__incl.dot | 78 + .../html/_intelli_tool_plain_8cpp_source.html | 167 ++ docs-src/html/_intelli_tool_plain_8h.html | 114 + .../_intelli_tool_plain_8h__dep__incl.dot | 11 + .../html/_intelli_tool_plain_8h__incl.dot | 22 + .../html/_intelli_tool_plain_8h_source.html | 149 ++ docs-src/html/_intelli_tool_polygon_8cpp.html | 109 + .../html/_intelli_tool_polygon_8cpp__incl.dot | 85 + .../_intelli_tool_polygon_8cpp_source.html | 301 +++ docs-src/html/_intelli_tool_polygon_8h.html | 116 ++ .../_intelli_tool_polygon_8h__dep__incl.dot | 11 + .../html/_intelli_tool_polygon_8h__incl.dot | 27 + .../html/_intelli_tool_polygon_8h_source.html | 164 ++ .../html/_intelli_tool_rectangle_8cpp.html | 106 + .../_intelli_tool_rectangle_8cpp__incl.dot | 80 + .../_intelli_tool_rectangle_8cpp_source.html | 199 ++ docs-src/html/_intelli_tool_rectangle_8h.html | 115 + .../_intelli_tool_rectangle_8h__dep__incl.dot | 11 + .../html/_intelli_tool_rectangle_8h__incl.dot | 23 + .../_intelli_tool_rectangle_8h_source.html | 153 ++ docs-src/html/_intelli_toolsettings_8cpp.html | 105 + .../html/_intelli_toolsettings_8cpp__incl.dot | 11 + .../_intelli_toolsettings_8cpp_source.html | 148 ++ docs-src/html/_intelli_toolsettings_8h.html | 112 + .../_intelli_toolsettings_8h__dep__incl.dot | 62 + .../html/_intelli_toolsettings_8h_source.html | 137 ++ .../html/_intelli_triangulation_8cpp.html | 132 ++ docs-src/html/_intelli_triangulation_8cpp.js | 4 + .../_intelli_triangulation_8cpp__incl.dot | 19 + .../_intelli_triangulation_8cpp_source.html | 233 +++ docs-src/html/_intelli_triangulation_8h.html | 136 ++ docs-src/html/_intelli_triangulation_8h.js | 8 + .../_intelli_triangulation_8h__dep__incl.dot | 52 + .../html/_intelli_triangulation_8h__incl.dot | 11 + .../_intelli_triangulation_8h_source.html | 150 ++ docs-src/html/_painting_area_8cpp.html | 120 ++ docs-src/html/_painting_area_8cpp__incl.dot | 115 + docs-src/html/_painting_area_8cpp_source.html | 747 +++++++ docs-src/html/_painting_area_8h.html | 126 ++ .../html/_painting_area_8h__dep__incl.dot | 27 + docs-src/html/_painting_area_8h__incl.dot | 71 + docs-src/html/_painting_area_8h_source.html | 351 ++++ .../_tool_2_intelli_color_picker_8cpp.html | 105 + ...tool_2_intelli_color_picker_8cpp__incl.dot | 17 + ...ol_2_intelli_color_picker_8cpp_source.html | 144 ++ docs-src/html/annotated.html | 125 ++ docs-src/html/annotated_dup.js | 24 + docs-src/html/bc_s.png | Bin 0 -> 678 bytes docs-src/html/bdwn.png | Bin 0 -> 144 bytes .../class_intelli_color_picker-members.html | 110 + docs-src/html/class_intelli_color_picker.html | 315 +++ docs-src/html/class_intelli_color_picker.js | 10 + ...7a6f20bf2fc0a4cbaf4c030c2a26d9_icgraph.dot | 10 + ...568fbf5dc783f06284b7031ffe9415_icgraph.dot | 14 + ...2ddbbbfbed383f06b24e5bf6b27ae8_icgraph.dot | 10 + ...bf4a940e4a0e465e30cbdf28748931_icgraph.dot | 10 + ...2eb27b928fe9388b9398b0556303b7_icgraph.dot | 28 + ...499265ae28ce1b54be88222e74292e_icgraph.dot | 10 + .../html/class_intelli_helper-members.html | 109 + docs-src/html/class_intelli_helper.html | 234 +++ ...4bdb4f53b89dded693ba6e896f4c63f_cgraph.dot | 10 + ...bdb4f53b89dded693ba6e896f4c63f_icgraph.dot | 14 + ...fc007dda64187f6cef7fba3fcd9e40_icgraph.dot | 16 + .../html/class_intelli_image-members.html | 128 ++ docs-src/html/class_intelli_image.html | 1108 ++++++++++ docs-src/html/class_intelli_image.js | 28 + docs-src/html/class_intelli_image.png | Bin 0 -> 754 bytes .../class_intelli_image__inherit__graph.dot | 11 + ...787f1b333b59401643936ebb3dcfe1_icgraph.dot | 14 + ...76ebb6d863321c816293d7b7f9fd3f_icgraph.dot | 10 + ...e622810dc2bc756054bb5769becb06_icgraph.dot | 18 + ...6fbe380ffe0e073a8cd760f8285fe3_icgraph.dot | 10 + ...31800aba38c96074bbe9bb6e341d4e_icgraph.dot | 10 + ...bced93f4744fad81b7f141b21f4ab2_icgraph.dot | 71 + ...0e9c8184d89dee33fd9adefbd2f8aa_icgraph.dot | 10 + ...c859f5c409e37051edfd9e9fbca056_icgraph.dot | 12 + ...eddbd9aa54c8d37590d1d4bf8dce31_icgraph.dot | 16 + .../class_intelli_input_dialog-members.html | 107 + docs-src/html/class_intelli_input_dialog.html | 364 ++++ docs-src/html/class_intelli_input_dialog.js | 6 + docs-src/html/class_intelli_input_dialog.png | Bin 0 -> 469 bytes .../html/class_intelli_photo_gui-members.html | 107 + docs-src/html/class_intelli_photo_gui.html | 245 +++ docs-src/html/class_intelli_photo_gui.js | 7 + docs-src/html/class_intelli_photo_gui.png | Bin 0 -> 471 bytes .../class_intelli_photo_gui__coll__graph.dot | 9 + ...lass_intelli_photo_gui__inherit__graph.dot | 9 + ...dbef8d4688227aa9455aea52db00bf4_cgraph.dot | 18 + .../class_intelli_raster_image-members.html | 131 ++ docs-src/html/class_intelli_raster_image.html | 530 +++++ docs-src/html/class_intelli_raster_image.js | 11 + docs-src/html/class_intelli_raster_image.png | Bin 0 -> 747 bytes ...lass_intelli_raster_image__coll__graph.dot | 9 + ...s_intelli_raster_image__inherit__graph.dot | 11 + ...12d79124f0e2c158a4f0abbe4b5f97f_cgraph.dot | 10 + ...f901301b106504de3c27308ade897dc_cgraph.dot | 10 + ...9b561fe499a4da3c6ef98971aa3468_icgraph.dot | 10 + ...3393397b0141a8033fe34d3a1b1884_icgraph.dot | 10 + ...79b571372296f1922af818ba003413_icgraph.dot | 10 + ...class_intelli_render_settings-members.html | 106 + .../html/class_intelli_render_settings.html | 200 ++ .../html/class_intelli_render_settings.js | 6 + ...74e7d7ed3a2e944883dddbe8bbf5e8_icgraph.dot | 12 + .../class_intelli_shaped_image-members.html | 133 ++ docs-src/html/class_intelli_shaped_image.html | 557 +++++ docs-src/html/class_intelli_shaped_image.js | 12 + docs-src/html/class_intelli_shaped_image.png | Bin 0 -> 742 bytes ...lass_intelli_shaped_image__coll__graph.dot | 11 + ...s_intelli_shaped_image__inherit__graph.dot | 11 + ...221d93c3c8990f7dab332454cc21f50_cgraph.dot | 12 + ...21d93c3c8990f7dab332454cc21f50_icgraph.dot | 12 + ...834c3f255baeb50c98ef335a6d0ea9_icgraph.dot | 10 + ...b69d75de7a3b85032482982f249458e_cgraph.dot | 10 + ...69d75de7a3b85032482982f249458e_icgraph.dot | 10 + ...cf374247c16f07fd84d50e4cd05630_icgraph.dot | 10 + ...6a99e1a96134073bceea252b37636cc_cgraph.dot | 10 + ...e612a1fa52d7f878b34a7a7022d8e9_icgraph.dot | 10 + ...d0b31e0fa771104399d1f5ff39a0337_cgraph.dot | 14 + docs-src/html/class_intelli_tool-members.html | 121 ++ docs-src/html/class_intelli_tool.html | 836 ++++++++ docs-src/html/class_intelli_tool.js | 31 + docs-src/html/class_intelli_tool.png | Bin 0 -> 2298 bytes .../html/class_intelli_tool__coll__graph.dot | 21 + .../class_intelli_tool__inherit__graph.dot | 22 + ...20fad2e26315d5c4d96dbc95d1dceb_icgraph.dot | 14 + ...189b00307c6d7e89f28198f54404b0_icgraph.dot | 24 + ...6aa68ac5f3c2ca02319e5ef3f0c966_icgraph.dot | 40 + ...4b7ef1dde96b94a0ce450a25ae1778c_cgraph.dot | 10 + ...b7ef1dde96b94a0ce450a25ae1778c_icgraph.dot | 24 + ...ccfd4460255ccb866f336406a33574_icgraph.dot | 24 + ...06a2575c16c8a33cb2a5197f8d8cc5b_cgraph.dot | 10 + ...6a2575c16c8a33cb2a5197f8d8cc5b_icgraph.dot | 24 + ...10e20414cd8855a2f9b103fb6408639_cgraph.dot | 10 + ...0e20414cd8855a2f9b103fb6408639_icgraph.dot | 24 + .../class_intelli_tool_circle-members.html | 123 ++ docs-src/html/class_intelli_tool_circle.html | 568 +++++ docs-src/html/class_intelli_tool_circle.js | 11 + docs-src/html/class_intelli_tool_circle.png | Bin 0 -> 425 bytes ...class_intelli_tool_circle__coll__graph.dot | 23 + ...ss_intelli_tool_circle__inherit__graph.dot | 9 + ...9d7b9ed4960e6fe1f31ff620363e429_cgraph.dot | 10 + ...a03b65b95d7b5d72e6a92c95f068954_cgraph.dot | 10 + ...0ee58c5390a86afc75c14ca79b91d7b_cgraph.dot | 14 + ...a07540f2f7ccb3d2c0b84890c1afc4c_cgraph.dot | 10 + ...8e438ec997c57262b5efc2db4cee1a3_cgraph.dot | 12 + ...2d9b0fb6695c184c4cb507a5fb75506_cgraph.dot | 14 + ...883b8ae833c78a8867e626c600f9639_cgraph.dot | 13 + ...class_intelli_tool_flood_fill-members.html | 123 ++ .../html/class_intelli_tool_flood_fill.html | 568 +++++ .../html/class_intelli_tool_flood_fill.js | 11 + .../html/class_intelli_tool_flood_fill.png | Bin 0 -> 418 bytes ...s_intelli_tool_flood_fill__coll__graph.dot | 23 + ...ntelli_tool_flood_fill__inherit__graph.dot | 9 + ...9cf49c0ce46f96be3510f0b70c9d892_cgraph.dot | 10 + ...cd42cea99bc7583875abcc0c274c668_cgraph.dot | 12 + ...438ef96c6c36068bce76e2364e8594c_cgraph.dot | 12 + ...3b1bd8be0cbb32cdf61a9597ec849ba_cgraph.dot | 10 + ...85e3cb6233508ff9612833a8d9e3961_cgraph.dot | 19 + ...58cc7c065123beb6b0270f99e99b991_cgraph.dot | 10 + ...a0f7154d119102410a55038763a17e4_cgraph.dot | 10 + .../class_intelli_tool_gradient-members.html | 123 ++ .../html/class_intelli_tool_gradient.html | 569 +++++ docs-src/html/class_intelli_tool_gradient.js | 11 + docs-src/html/class_intelli_tool_gradient.png | Bin 0 -> 451 bytes .../html/class_intelli_tool_line-members.html | 123 ++ docs-src/html/class_intelli_tool_line.html | 568 +++++ docs-src/html/class_intelli_tool_line.js | 11 + docs-src/html/class_intelli_tool_line.png | Bin 0 -> 386 bytes .../class_intelli_tool_line__coll__graph.dot | 23 + ...lass_intelli_tool_line__inherit__graph.dot | 9 + ...55d676a5f98311217eb095be4759846_cgraph.dot | 19 + ...214918cba5753f89d97de4559a2b9b2_cgraph.dot | 10 + ...cce59f3017936214b10b47252a898a3_cgraph.dot | 10 + ...f1d686e1ec43f41b5186ccfd806b125_cgraph.dot | 14 + ...c6324ef0778823fe7e35aef8ae37f9b_cgraph.dot | 22 + ...93f76ff20a1c111a403b298bab02482_cgraph.dot | 12 + ...b600b0f4e9225ebce2937c2b7abb4c2_cgraph.dot | 10 + .../html/class_intelli_tool_pen-members.html | 123 ++ docs-src/html/class_intelli_tool_pen.html | 568 +++++ docs-src/html/class_intelli_tool_pen.js | 11 + docs-src/html/class_intelli_tool_pen.png | Bin 0 -> 376 bytes .../class_intelli_tool_pen__coll__graph.dot | 23 + ...class_intelli_tool_pen__inherit__graph.dot | 9 + ...751e3864a0d36ef42ca55021cae73ce_cgraph.dot | 10 + ...8d1d636497b630647ce0c4d652737c2_cgraph.dot | 18 + ...ff40aef6d38eb55af31a19322429205_cgraph.dot | 19 + ...da7a22b9766fa4ad254324a53cab94d_cgraph.dot | 12 + ...f8562e8cd2da586afdf4d47b3a4ff13_cgraph.dot | 10 + ...77a025515d0fed6954556fe2b444818_cgraph.dot | 10 + ...e3626ddff440ab125f4a2465c45427a_cgraph.dot | 14 + ...class_intelli_tool_plain_tool-members.html | 123 ++ .../html/class_intelli_tool_plain_tool.html | 568 +++++ .../html/class_intelli_tool_plain_tool.js | 11 + .../html/class_intelli_tool_plain_tool.png | Bin 0 -> 435 bytes ...s_intelli_tool_plain_tool__coll__graph.dot | 23 + ...ntelli_tool_plain_tool__inherit__graph.dot | 9 + ...ae458f1b04eb77a47f6dca5e91e33b8_cgraph.dot | 10 + ...1fe568be05c075814d67440472bb658_cgraph.dot | 10 + ...786dd5fa80af863246013d43c4b7ac9_cgraph.dot | 17 + ...23f5d0f07e42fd7c2ea3fc1347da400_cgraph.dot | 12 + ...b0c46e16d2c09370a2244a936de38b1_cgraph.dot | 10 + ...7546a6335bb3bb4cbf0e1883788d41c_cgraph.dot | 12 + ...c004ea421e2cc0ac39cc7a6b6d43d0d_cgraph.dot | 10 + .../class_intelli_tool_polygon-members.html | 123 ++ docs-src/html/class_intelli_tool_polygon.html | 575 +++++ docs-src/html/class_intelli_tool_polygon.js | 11 + docs-src/html/class_intelli_tool_polygon.png | Bin 0 -> 456 bytes ...lass_intelli_tool_polygon__coll__graph.dot | 23 + ...s_intelli_tool_polygon__inherit__graph.dot | 9 + ...87cbf2254010989df6106a357471499_cgraph.dot | 10 + ...e3a1135f04c73c159137ae219a38922_cgraph.dot | 12 + ...7cad87cd02b128b02dc929713bd1d1b_cgraph.dot | 10 + ...e1473ff408ae2e11cf6a43f6f575f21_cgraph.dot | 32 + ...13103300c9f023d64d9eec5ac05dd17_cgraph.dot | 14 + ...36b012b48311c36e7cd6771a5081427_cgraph.dot | 10 + ...5d3b741be6d0647a9cdc9da2cb8bc3d_cgraph.dot | 39 + .../class_intelli_tool_rectangle-members.html | 123 ++ .../html/class_intelli_tool_rectangle.html | 568 +++++ docs-src/html/class_intelli_tool_rectangle.js | 11 + .../html/class_intelli_tool_rectangle.png | Bin 0 -> 469 bytes ...ss_intelli_tool_rectangle__coll__graph.dot | 23 + ...intelli_tool_rectangle__inherit__graph.dot | 9 + ...45c53a56e859f970e59f5036e221e0c_cgraph.dot | 14 + ...80c6804a4963c5a1c3f7ef84b63c1a8_cgraph.dot | 10 + ...b5931071e21eb6949ffe357315e408b_cgraph.dot | 14 + ...dc1463e726a21255e6297241dc71fb1_cgraph.dot | 10 + ...4460e3ff1c19e80bde922c55f53cc43_cgraph.dot | 12 + ...43f653256a6516b9398f82054be0d7f_cgraph.dot | 10 + ...03c307ccf66cbe3fd59e3657712368d_cgraph.dot | 13 + .../class_intelli_toolsettings-members.html | 109 + docs-src/html/class_intelli_toolsettings.html | 291 +++ docs-src/html/class_intelli_toolsettings.js | 9 + ...eb193b25e0665516244c61c5e65aa6_icgraph.dot | 10 + ...528dd3bad8f39ba19fa6b12a4e415a_icgraph.dot | 30 + ...6ce2054ec4bcba7629dc2b514b6b5c_icgraph.dot | 10 + ...6d37de6ee94b433d53fe3e598cc9fa_icgraph.dot | 18 + .../html/class_painting_area-members.html | 154 ++ docs-src/html/class_painting_area.html | 1751 ++++++++++++++++ docs-src/html/class_painting_area.js | 54 + docs-src/html/class_painting_area.png | Bin 0 -> 430 bytes .../html/class_painting_area__coll__graph.dot | 13 + .../class_painting_area__inherit__graph.dot | 9 + ...11a534e206089fff1d325e7ec7a8eb_icgraph.dot | 10 + ...6d86c25efdce9fe9031a9cd01c74c8_icgraph.dot | 10 + ...f597740b4d7b4bc2e24c51f8cb0b6eb_cgraph.dot | 12 + ...280454ebb80db7feba2fd621513353_icgraph.dot | 10 + ...5b5df914acb608cc29717659793359c_cgraph.dot | 14 + ...ad76e1319659bfa38eee88ef33d395_icgraph.dot | 10 + ...7c5fc26480c7ae80b3480e85510bda_icgraph.dot | 10 + ...735d4cf1dc58a9096d904e74c39c4df_cgraph.dot | 12 + ...fa0ec23e78cc59f28c823584c721460_cgraph.dot | 12 + ...32848d99f44d33d7da2618fbc6775a4_cgraph.dot | 10 + ...6115307ff4a99cd7ca16423c5c8ecfb_cgraph.dot | 10 + ...5ee91b26b1c58be6d833f279d81597_icgraph.dot | 10 + ...e9207612cef104d39013564696fe989_cgraph.dot | 10 + ...9207612cef104d39013564696fe989_icgraph.dot | 10 + ...1ac281e0de263208d4a3b9de74258ec_cgraph.dot | 12 + ...eb059829f27e8cdb3a54c5cd3d12c9_icgraph.dot | 10 + ...e21fd031ee1c04f92e042e86be0a90_icgraph.dot | 10 + ...8c7e759aa8375a56129791645f46ea5_cgraph.dot | 12 + ...22e274b6094a9619f196cd7b49526b5_cgraph.dot | 12 + ...fe445f8d9b70ae42bfeda874127dd15_cgraph.dot | 14 + ...76f58aad03b4dcd47611b6a4b9abb4_icgraph.dot | 10 + ...6d089f4357b22d9a9906fd4771de3e7_cgraph.dot | 10 + ...b11ad35d07e9081203d8217d2c0855_icgraph.dot | 10 + ...ff4563d006fda491469bd41778d07eb_cgraph.dot | 10 + ...05f6893fb44bfcb34018573a609cd1a_cgraph.dot | 10 + ...261acaaa346610dfed489dbac17e789_cgraph.dot | 12 + ...2b27dfd09573c224d2ae1958d3bead_icgraph.dot | 10 + ...b5eb394b979ea90f2be9849fdda1774_cgraph.dot | 10 + docs-src/html/class_unit_test-members.html | 107 + docs-src/html/class_unit_test.html | 202 ++ docs-src/html/class_unit_test.js | 7 + docs-src/html/class_unit_test.png | Bin 0 -> 372 bytes docs-src/html/classes.html | 145 ++ docs-src/html/closed.png | Bin 0 -> 130 bytes docs-src/html/dir_000000_000001.html | 101 + docs-src/html/dir_000001_000002.html | 101 + docs-src/html/dir_000001_000005.html | 101 + docs-src/html/dir_000002_000003.html | 101 + docs-src/html/dir_000002_000006.html | 101 + docs-src/html/dir_000003_000004.html | 101 + docs-src/html/dir_000004_000003.html | 101 + docs-src/html/dir_000004_000005.html | 101 + docs-src/html/dir_000005_000002.html | 101 + docs-src/html/dir_000005_000003.html | 101 + docs-src/html/dir_000005_000004.html | 101 + docs-src/html/dir_000005_000006.html | 101 + docs-src/html/dir_000006_000002.html | 101 + docs-src/html/dir_000006_000003.html | 101 + docs-src/html/dir_000006_000004.html | 101 + docs-src/html/dir_000006_000005.html | 101 + .../dir_13830bfc3dd6736fe878600c9081919f.html | 109 + .../dir_13830bfc3dd6736fe878600c9081919f.js | 8 + ...r_13830bfc3dd6736fe878600c9081919f_dep.dot | 18 + .../dir_4e4e2e75df7fa6971448b424c011c8b5.html | 113 + .../dir_4e4e2e75df7fa6971448b424c011c8b5.js | 11 + ...r_4e4e2e75df7fa6971448b424c011c8b5_dep.dot | 11 + .../dir_544f9dcb748f922e4bb3be2540380bf2.html | 121 ++ .../dir_544f9dcb748f922e4bb3be2540380bf2.js | 15 + ...r_544f9dcb748f922e4bb3be2540380bf2_dep.dot | 11 + .../dir_5dabb14988a75c922e285f444641a133.html | 113 + .../dir_5dabb14988a75c922e285f444641a133.js | 7 + ...r_5dabb14988a75c922e285f444641a133_dep.dot | 12 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 124 ++ .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 15 + ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.dot | 22 + .../dir_83a4347d11f2ba6343d546ab133722d2.html | 124 ++ .../dir_83a4347d11f2ba6343d546ab133722d2.js | 9 + ...r_83a4347d11f2ba6343d546ab133722d2_dep.dot | 25 + .../dir_858355f3357c73763e566ff49d1e6a7a.html | 141 ++ .../dir_858355f3357c73763e566ff49d1e6a7a.js | 39 + ...r_858355f3357c73763e566ff49d1e6a7a_dep.dot | 15 + .../dir_8db5f55022e7670536cbc9a6a1d6f01c.html | 111 + .../dir_8db5f55022e7670536cbc9a6a1d6f01c.js | 4 + ...r_8db5f55022e7670536cbc9a6a1d6f01c_dep.dot | 10 + .../dir_8de6078cba2a961961818cf80b28fd4f.html | 125 ++ .../dir_8de6078cba2a961961818cf80b28fd4f.js | 19 + .../dir_941490de56ac122cf77df9922cbcc750.html | 143 ++ .../dir_941490de56ac122cf77df9922cbcc750.js | 36 + ...r_941490de56ac122cf77df9922cbcc750_dep.dot | 15 + .../dir_e6d96184223881d115efa44ca0dfa844.html | 113 + .../dir_e6d96184223881d115efa44ca0dfa844.js | 8 + ...r_e6d96184223881d115efa44ca0dfa844_dep.dot | 21 + .../dir_f50aa5156fe016a259583c412dbf440c.html | 125 ++ .../dir_f50aa5156fe016a259583c412dbf440c.js | 17 + .../dir_fdbdd9841f9a730f284bb666ff3d8cfe.html | 117 ++ .../dir_fdbdd9841f9a730f284bb666ff3d8cfe.js | 13 + ...r_fdbdd9841f9a730f284bb666ff3d8cfe_dep.dot | 11 + docs-src/html/doc.png | Bin 0 -> 810 bytes docs-src/html/doxygen.css | 1771 ++++++++++++++++ docs-src/html/doxygen.png | Bin 0 -> 3861 bytes docs-src/html/dynsections.js | 127 ++ docs-src/html/files.html | 153 ++ docs-src/html/files_dup.js | 4 + docs-src/html/folderclosed.png | Bin 0 -> 649 bytes docs-src/html/folderopen.png | Bin 0 -> 651 bytes docs-src/html/functions.html | 121 ++ docs-src/html/functions_b.html | 103 + docs-src/html/functions_c.html | 150 ++ docs-src/html/functions_d.html | 121 ++ docs-src/html/functions_dup.js | 21 + docs-src/html/functions_enum.html | 101 + docs-src/html/functions_f.html | 103 + docs-src/html/functions_func.html | 595 ++++++ docs-src/html/functions_g.html | 187 ++ docs-src/html/functions_h.html | 115 + docs-src/html/functions_i.html | 166 ++ docs-src/html/functions_l.html | 106 + docs-src/html/functions_m.html | 115 + docs-src/html/functions_o.html | 169 ++ docs-src/html/functions_p.html | 109 + docs-src/html/functions_r.html | 103 + docs-src/html/functions_s.html | 160 ++ docs-src/html/functions_t.html | 110 + docs-src/html/functions_u.html | 109 + docs-src/html/functions_vars.html | 160 ++ docs-src/html/functions_w.html | 109 + docs-src/html/functions_~.html | 148 ++ docs-src/html/globals.html | 107 + docs-src/html/globals_defs.html | 101 + docs-src/html/globals_enum.html | 101 + docs-src/html/globals_func.html | 101 + docs-src/html/graph_legend.dot | 23 + docs-src/html/graph_legend.html | 164 ++ docs-src/html/hierarchy.html | 129 ++ docs-src/html/hierarchy.js | 35 + docs-src/html/index.html | 100 + docs-src/html/inherit_graph_0.dot | 8 + docs-src/html/inherit_graph_1.dot | 12 + docs-src/html/inherit_graph_2.dot | 10 + docs-src/html/inherit_graph_3.dot | 8 + docs-src/html/inherit_graph_4.dot | 22 + docs-src/html/inherit_graph_5.dot | 8 + docs-src/html/inherit_graph_6.dot | 8 + docs-src/html/inherit_graph_7.dot | 10 + docs-src/html/inherit_graph_8.dot | 8 + docs-src/html/inherits.html | 126 ++ docs-src/html/jquery.js | 35 + docs-src/html/main_8cpp.html | 147 ++ docs-src/html/main_8cpp.js | 4 + docs-src/html/main_8cpp__incl.dot | 33 + docs-src/html/main_8cpp_source.html | 119 ++ docs-src/html/main_unit_test_8cpp.html | 115 + docs-src/html/main_unit_test_8cpp_source.html | 359 ++++ docs-src/html/menu.js | 50 + docs-src/html/menudata.js | 78 + .../html/namespace_intelli_datamanager.html | 194 ++ docs-src/html/namespace_intelli_helper.html | 326 +++ ...4dc3624ba4562a03dc922e3dd7b617_icgraph.dot | 14 + ...4d516b3e619e2a743e9c98dd75cf901_cgraph.dot | 12 + ...d516b3e619e2a743e9c98dd75cf901_icgraph.dot | 10 + ...fcfe72f00e870be4a8ab9f2e17483c9_cgraph.dot | 10 + ...cfe72f00e870be4a8ab9f2e17483c9_icgraph.dot | 12 + ...d9fe78cc5d21b59642910220768149_icgraph.dot | 14 + .../html/namespace_intelli_triangulation.html | 292 +++ ...0621e2d8708fe2e8966d7d79b64e186_cgraph.dot | 12 + ...621e2d8708fe2e8966d7d79b64e186_icgraph.dot | 12 + ...150fee67fd41a451bd2592f10e00197_cgraph.dot | 10 + ...50fee67fd41a451bd2592f10e00197_icgraph.dot | 14 + ...af1ed598e868b25e9e06d580da32e5_icgraph.dot | 16 + ...af549a7faff35a74c1265b290ea0ca_icgraph.dot | 16 + docs-src/html/namespacemembers.html | 116 ++ docs-src/html/namespacemembers_func.html | 116 ++ docs-src/html/namespaces.html | 106 + docs-src/html/namespaces_dup.js | 5 + docs-src/html/nav_f.png | Bin 0 -> 147 bytes docs-src/html/nav_g.png | Bin 0 -> 95 bytes docs-src/html/nav_h.png | Bin 0 -> 97 bytes docs-src/html/navtree.css | 146 ++ docs-src/html/navtree.js | 544 +++++ docs-src/html/navtreedata.js | 63 + docs-src/html/navtreeindex0.js | 253 +++ docs-src/html/navtreeindex1.js | 136 ++ docs-src/html/open.png | Bin 0 -> 117 bytes docs-src/html/resize.js | 137 ++ docs-src/html/search/all_0.html | 30 + docs-src/html/search/all_0.js | 10 + docs-src/html/search/all_1.html | 30 + docs-src/html/search/all_1.js | 4 + docs-src/html/search/all_10.html | 30 + docs-src/html/search/all_10.js | 6 + docs-src/html/search/all_11.html | 30 + docs-src/html/search/all_11.js | 6 + docs-src/html/search/all_12.html | 30 + docs-src/html/search/all_12.js | 19 + docs-src/html/search/all_2.html | 30 + docs-src/html/search/all_2.js | 21 + docs-src/html/search/all_3.html | 30 + docs-src/html/search/all_3.js | 10 + docs-src/html/search/all_4.html | 30 + docs-src/html/search/all_4.js | 5 + docs-src/html/search/all_5.html | 30 + docs-src/html/search/all_5.js | 31 + docs-src/html/search/all_6.html | 30 + docs-src/html/search/all_6.js | 8 + docs-src/html/search/all_7.html | 30 + docs-src/html/search/all_7.js | 68 + docs-src/html/search/all_8.html | 30 + docs-src/html/search/all_8.js | 7 + docs-src/html/search/all_9.html | 30 + docs-src/html/search/all_9.js | 11 + docs-src/html/search/all_a.html | 30 + docs-src/html/search/all_a.js | 4 + docs-src/html/search/all_b.html | 30 + docs-src/html/search/all_b.js | 10 + docs-src/html/search/all_c.html | 30 + docs-src/html/search/all_c.js | 12 + docs-src/html/search/all_d.html | 30 + docs-src/html/search/all_d.js | 6 + docs-src/html/search/all_e.html | 30 + docs-src/html/search/all_e.js | 25 + docs-src/html/search/all_f.html | 30 + docs-src/html/search/all_f.js | 8 + docs-src/html/search/classes_0.html | 30 + docs-src/html/search/classes_0.js | 20 + docs-src/html/search/classes_1.html | 30 + docs-src/html/search/classes_1.js | 4 + docs-src/html/search/classes_2.html | 30 + docs-src/html/search/classes_2.js | 4 + docs-src/html/search/classes_3.html | 30 + docs-src/html/search/classes_3.js | 4 + docs-src/html/search/classes_4.html | 30 + docs-src/html/search/classes_4.js | 4 + docs-src/html/search/close.png | Bin 0 -> 273 bytes docs-src/html/search/defines_0.html | 30 + docs-src/html/search/defines_0.js | 4 + docs-src/html/search/enums_0.html | 30 + docs-src/html/search/enums_0.js | 4 + docs-src/html/search/enums_1.html | 30 + docs-src/html/search/enums_1.js | 4 + docs-src/html/search/enums_2.html | 30 + docs-src/html/search/enums_2.js | 4 + docs-src/html/search/enumvalues_0.html | 30 + docs-src/html/search/enumvalues_0.js | 4 + docs-src/html/search/enumvalues_1.html | 30 + docs-src/html/search/enumvalues_1.js | 4 + docs-src/html/search/enumvalues_2.html | 30 + docs-src/html/search/enumvalues_2.js | 4 + docs-src/html/search/enumvalues_3.html | 30 + docs-src/html/search/enumvalues_3.js | 4 + docs-src/html/search/enumvalues_4.html | 30 + docs-src/html/search/enumvalues_4.js | 4 + docs-src/html/search/enumvalues_5.html | 30 + docs-src/html/search/enumvalues_5.js | 6 + docs-src/html/search/enumvalues_6.html | 30 + docs-src/html/search/enumvalues_6.js | 5 + docs-src/html/search/enumvalues_7.html | 30 + docs-src/html/search/enumvalues_7.js | 4 + docs-src/html/search/files_0.html | 30 + docs-src/html/search/files_0.js | 41 + docs-src/html/search/files_1.html | 30 + docs-src/html/search/files_1.js | 5 + docs-src/html/search/files_2.html | 30 + docs-src/html/search/files_2.js | 5 + docs-src/html/search/files_3.html | 30 + docs-src/html/search/files_3.js | 4 + docs-src/html/search/functions_0.html | 30 + docs-src/html/search/functions_0.js | 5 + docs-src/html/search/functions_1.html | 30 + docs-src/html/search/functions_1.js | 17 + docs-src/html/search/functions_2.html | 30 + docs-src/html/search/functions_2.js | 10 + docs-src/html/search/functions_3.html | 30 + docs-src/html/search/functions_3.js | 30 + docs-src/html/search/functions_4.html | 30 + docs-src/html/search/functions_4.js | 6 + docs-src/html/search/functions_5.html | 30 + docs-src/html/search/functions_5.js | 24 + docs-src/html/search/functions_6.html | 30 + docs-src/html/search/functions_6.js | 6 + docs-src/html/search/functions_7.html | 30 + docs-src/html/search/functions_7.js | 9 + docs-src/html/search/functions_8.html | 30 + docs-src/html/search/functions_8.js | 10 + docs-src/html/search/functions_9.html | 30 + docs-src/html/search/functions_9.js | 5 + docs-src/html/search/functions_a.html | 30 + docs-src/html/search/functions_a.js | 4 + docs-src/html/search/functions_b.html | 30 + docs-src/html/search/functions_b.js | 24 + docs-src/html/search/functions_c.html | 30 + docs-src/html/search/functions_c.js | 6 + docs-src/html/search/functions_d.html | 30 + docs-src/html/search/functions_d.js | 4 + docs-src/html/search/functions_e.html | 30 + docs-src/html/search/functions_e.js | 19 + docs-src/html/search/mag_sel.png | Bin 0 -> 465 bytes docs-src/html/search/namespaces_0.html | 30 + docs-src/html/search/namespaces_0.js | 5 + docs-src/html/search/nomatches.html | 12 + docs-src/html/search/search.css | 271 +++ docs-src/html/search/search.js | 814 ++++++++ docs-src/html/search/search_l.png | Bin 0 -> 567 bytes docs-src/html/search/search_m.png | Bin 0 -> 158 bytes docs-src/html/search/search_r.png | Bin 0 -> 553 bytes docs-src/html/search/searchdata.js | 39 + docs-src/html/search/variables_0.html | 30 + docs-src/html/search/variables_0.js | 8 + docs-src/html/search/variables_1.html | 30 + docs-src/html/search/variables_1.js | 4 + docs-src/html/search/variables_2.html | 30 + docs-src/html/search/variables_2.js | 6 + docs-src/html/search/variables_3.html | 30 + docs-src/html/search/variables_3.js | 4 + docs-src/html/search/variables_4.html | 30 + docs-src/html/search/variables_4.js | 5 + docs-src/html/search/variables_5.html | 30 + docs-src/html/search/variables_5.js | 6 + docs-src/html/search/variables_6.html | 30 + docs-src/html/search/variables_6.js | 4 + docs-src/html/search/variables_7.html | 30 + docs-src/html/search/variables_7.js | 5 + docs-src/html/search/variables_8.html | 30 + docs-src/html/search/variables_8.js | 5 + docs-src/html/splitbar.png | Bin 0 -> 306 bytes .../html/struct_layer_object-members.html | 111 + docs-src/html/struct_layer_object.html | 296 +++ docs-src/html/struct_layer_object.js | 11 + .../html/struct_layer_object__coll__graph.dot | 9 + docs-src/html/struct_triangle-members.html | 106 + docs-src/html/struct_triangle.html | 175 ++ docs-src/html/struct_triangle.js | 6 + docs-src/html/sync_off.png | Bin 0 -> 859 bytes docs-src/html/sync_on.png | Bin 0 -> 840 bytes docs-src/html/tab_a.png | Bin 0 -> 130 bytes docs-src/html/tab_b.png | Bin 0 -> 170 bytes docs-src/html/tab_h.png | Bin 0 -> 170 bytes docs-src/html/tab_s.png | Bin 0 -> 175 bytes docs-src/html/tabs.css | 1 + docs-src/html/tst__unittest_8cpp.html | 131 ++ docs-src/html/tst__unittest_8cpp_source.html | 1852 +++++++++++++++++ {docs => docs-src}/referenzsystem.docx | Bin docs/Benutzerhandbuch.pdf | Bin 0 -> 273025 bytes docs/Entwicklerhandbuch.pdf | Bin 0 -> 368031 bytes 748 files changed, 53568 insertions(+), 640 deletions(-) rename {docs => docs-src}/CRC-Karten/CRC-Karten.docx (100%) rename {docs => docs-src}/CRC-Karten/CRC-Karten.pdf (100%) rename {docs => docs-src}/Charts/Author Work per Week/author_work_per_week.svg (100%) rename {docs => docs-src}/Charts/Author Work per Week/convert-data.py (100%) rename {docs => docs-src}/Charts/Author Work per Week/lines_of_code_by_author.dat (100%) rename {docs => docs-src}/Charts/Author Work per Week/lines_of_code_by_author.plot (100%) rename {docs => docs-src}/Charts/Author Work per Week/output.dat (100%) rename {docs => docs-src}/Charts/Author Work per Week/workload_per_week.plt (100%) rename {docs => docs-src}/Charts/Work Pies/Code.svg (100%) rename {docs => docs-src}/Charts/Work Pies/Dokumentation.svg (100%) rename {docs => docs-src}/Charts/Work Pies/Kundenkommunikation.svg (100%) rename {docs => docs-src}/Charts/Work Pies/Legende.svg (100%) rename {docs => docs-src}/Charts/Work Pies/Teammanagment.svg (100%) rename {docs => docs-src}/Charts/Work Pies/UI Design.svg (100%) rename {docs => docs-src}/Charts/Work Pies/aufteilungen.txt (100%) rename {docs => docs-src}/Charts/Workload_per_Week.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/Entwicklerhandbuch.docx (100%) rename {docs => docs-src}/Entwicklerhandbuch/Entwicklerhandbuch.pdf (100%) rename {docs => docs-src}/Entwicklerhandbuch/Sequenzdiagram-PenTool.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/Sequenzdiagram-PlainTool.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/UML.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/Use_Case_1.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/Use_Case_2.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/Zustandsiagram-Layer-Color.svg (100%) rename {docs => docs-src}/Entwicklerhandbuch/Zustandsiagram-Tool.svg (100%) rename {docs => docs-src}/Manual/assets/all-tools.png (100%) rename {docs => docs-src}/Manual/assets/change-colors.png (100%) rename {docs => docs-src}/Manual/assets/close-window.png (100%) rename {docs => docs-src}/Manual/assets/color-switch.png (100%) rename {docs => docs-src}/Manual/assets/create-layer.png (100%) rename {docs => docs-src}/Manual/assets/file-open.png (100%) rename {docs => docs-src}/Manual/assets/file-options.png (100%) rename {docs => docs-src}/Manual/assets/file-save.png (100%) rename {docs => docs-src}/Manual/assets/icon.png (100%) rename {docs => docs-src}/Manual/assets/icon.svg (100%) rename {docs => docs-src}/Manual/assets/layer-options.png (100%) rename {docs => docs-src}/Manual/assets/maximize-window.png (100%) rename {docs => docs-src}/Manual/assets/minimize-window.png (100%) rename {docs => docs-src}/Manual/assets/startup.png (100%) rename {docs => docs-src}/Manual/assets/tool-circle.png (100%) rename {docs => docs-src}/Manual/assets/tool-flood-fill.png (100%) rename {docs => docs-src}/Manual/assets/tool-gradient.png (100%) rename {docs => docs-src}/Manual/assets/tool-magic-wand.png (100%) rename {docs => docs-src}/Manual/assets/tool-pen.png (100%) rename {docs => docs-src}/Manual/assets/tool-plain.png (100%) rename {docs => docs-src}/Manual/assets/toollist.png (100%) rename {docs => docs-src}/Manual/manual.aux (100%) rename {docs => docs-src}/Manual/manual.log (100%) rename {docs => docs-src}/Manual/manual.pdf (100%) rename {docs => docs-src}/Manual/manual.synctex.gz (100%) rename {docs => docs-src}/Manual/manual.tex (100%) rename {docs => docs-src}/Manual/manual.toc (100%) rename {docs => docs-src}/Sequenzdiagramme/Sequenzdiagram-PenTool.uxf (100%) rename {docs => docs-src}/Sequenzdiagramme/Sequenzdiagram-PlainTool.uxf (100%) rename {docs => docs-src}/ToDo/todo.org (100%) rename {docs => docs-src}/ToDo/todo.pdf (100%) rename {docs => docs-src}/UML.uxf (95%) rename {docs => docs-src}/UnitTest_Benchmark.xlsx (100%) rename {docs => docs-src}/Use Case/Use_Case_1.uxf (100%) rename {docs => docs-src}/Use Case/Use_Case_2.uxf (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0001.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0002.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0003.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0004.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0005.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0006.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0007.txt (100%) rename {docs => docs-src}/Volere Snow Cards/Req_0008.txt (100%) rename {docs => docs-src}/Zustandsdiagramm/Zustandsiagram-Layer-Color.uxf (100%) rename {docs => docs-src}/Zustandsdiagramm/Zustandsiagram-Tool.uxf (100%) create mode 100644 docs-src/html/_intelli_color_picker_8cpp.html create mode 100644 docs-src/html/_intelli_color_picker_8cpp_source.html create mode 100644 docs-src/html/_intelli_color_picker_8h.html create mode 100644 docs-src/html/_intelli_color_picker_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_color_picker_8h__incl.dot create mode 100644 docs-src/html/_intelli_color_picker_8h_source.html create mode 100644 docs-src/html/_intelli_datamanager_8cpp.html create mode 100644 docs-src/html/_intelli_datamanager_8cpp_source.html create mode 100644 docs-src/html/_intelli_datamanager_8h.html create mode 100644 docs-src/html/_intelli_datamanager_8h.js create mode 100644 docs-src/html/_intelli_datamanager_8h_source.html create mode 100644 docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp.html create mode 100644 docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp_source.html create mode 100644 docs-src/html/_intelli_helper_8cpp.html create mode 100644 docs-src/html/_intelli_helper_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_helper_8cpp_source.html create mode 100644 docs-src/html/_intelli_helper_8h.html create mode 100644 docs-src/html/_intelli_helper_8h.js create mode 100644 docs-src/html/_intelli_helper_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_helper_8h__incl.dot create mode 100644 docs-src/html/_intelli_helper_8h_source.html create mode 100644 docs-src/html/_intelli_image_8cpp.html create mode 100644 docs-src/html/_intelli_image_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_image_8cpp_source.html create mode 100644 docs-src/html/_intelli_image_8h.html create mode 100644 docs-src/html/_intelli_image_8h.js create mode 100644 docs-src/html/_intelli_image_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_image_8h__incl.dot create mode 100644 docs-src/html/_intelli_image_8h_source.html create mode 100644 docs-src/html/_intelli_input_dialog_8cpp.html create mode 100644 docs-src/html/_intelli_input_dialog_8cpp_source.html create mode 100644 docs-src/html/_intelli_input_dialog_8h.html create mode 100644 docs-src/html/_intelli_input_dialog_8h_source.html create mode 100644 docs-src/html/_intelli_photo_gui_8cpp.html create mode 100644 docs-src/html/_intelli_photo_gui_8cpp.js create mode 100644 docs-src/html/_intelli_photo_gui_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_photo_gui_8cpp_source.html create mode 100644 docs-src/html/_intelli_photo_gui_8h.html create mode 100644 docs-src/html/_intelli_photo_gui_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_photo_gui_8h__incl.dot create mode 100644 docs-src/html/_intelli_photo_gui_8h_source.html create mode 100644 docs-src/html/_intelli_raster_image_8cpp.html create mode 100644 docs-src/html/_intelli_raster_image_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_raster_image_8cpp_source.html create mode 100644 docs-src/html/_intelli_raster_image_8h.html create mode 100644 docs-src/html/_intelli_raster_image_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_raster_image_8h__incl.dot create mode 100644 docs-src/html/_intelli_raster_image_8h_source.html create mode 100644 docs-src/html/_intelli_render_settings_8cpp.html create mode 100644 docs-src/html/_intelli_render_settings_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_render_settings_8cpp_source.html create mode 100644 docs-src/html/_intelli_render_settings_8h.html create mode 100644 docs-src/html/_intelli_render_settings_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_render_settings_8h_source.html create mode 100644 docs-src/html/_intelli_shaped_image_8cpp.html create mode 100644 docs-src/html/_intelli_shaped_image_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_shaped_image_8cpp_source.html create mode 100644 docs-src/html/_intelli_shaped_image_8h.html create mode 100644 docs-src/html/_intelli_shaped_image_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_shaped_image_8h__incl.dot create mode 100644 docs-src/html/_intelli_shaped_image_8h_source.html create mode 100644 docs-src/html/_intelli_tool_8cpp.html create mode 100644 docs-src/html/_intelli_tool_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_8h.html create mode 100644 docs-src/html/_intelli_tool_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_8h_source.html create mode 100644 docs-src/html/_intelli_tool_circle_8cpp.html create mode 100644 docs-src/html/_intelli_tool_circle_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_circle_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_circle_8h.html create mode 100644 docs-src/html/_intelli_tool_circle_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_circle_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_circle_8h_source.html create mode 100644 docs-src/html/_intelli_tool_flood_fill_8cpp.html create mode 100644 docs-src/html/_intelli_tool_flood_fill_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_flood_fill_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_flood_fill_8h.html create mode 100644 docs-src/html/_intelli_tool_flood_fill_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_flood_fill_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_flood_fill_8h_source.html create mode 100644 docs-src/html/_intelli_tool_gradient_8cpp.html create mode 100644 docs-src/html/_intelli_tool_gradient_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_gradient_8h.html create mode 100644 docs-src/html/_intelli_tool_gradient_8h_source.html create mode 100644 docs-src/html/_intelli_tool_line_8cpp.html create mode 100644 docs-src/html/_intelli_tool_line_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_line_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_line_8h.html create mode 100644 docs-src/html/_intelli_tool_line_8h.js create mode 100644 docs-src/html/_intelli_tool_line_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_line_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_line_8h_source.html create mode 100644 docs-src/html/_intelli_tool_pen_8cpp.html create mode 100644 docs-src/html/_intelli_tool_pen_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_pen_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_pen_8h.html create mode 100644 docs-src/html/_intelli_tool_pen_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_pen_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_pen_8h_source.html create mode 100644 docs-src/html/_intelli_tool_plain_8cpp.html create mode 100644 docs-src/html/_intelli_tool_plain_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_plain_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_plain_8h.html create mode 100644 docs-src/html/_intelli_tool_plain_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_plain_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_plain_8h_source.html create mode 100644 docs-src/html/_intelli_tool_polygon_8cpp.html create mode 100644 docs-src/html/_intelli_tool_polygon_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_polygon_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_polygon_8h.html create mode 100644 docs-src/html/_intelli_tool_polygon_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_polygon_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_polygon_8h_source.html create mode 100644 docs-src/html/_intelli_tool_rectangle_8cpp.html create mode 100644 docs-src/html/_intelli_tool_rectangle_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_tool_rectangle_8cpp_source.html create mode 100644 docs-src/html/_intelli_tool_rectangle_8h.html create mode 100644 docs-src/html/_intelli_tool_rectangle_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_tool_rectangle_8h__incl.dot create mode 100644 docs-src/html/_intelli_tool_rectangle_8h_source.html create mode 100644 docs-src/html/_intelli_toolsettings_8cpp.html create mode 100644 docs-src/html/_intelli_toolsettings_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_toolsettings_8cpp_source.html create mode 100644 docs-src/html/_intelli_toolsettings_8h.html create mode 100644 docs-src/html/_intelli_toolsettings_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_toolsettings_8h_source.html create mode 100644 docs-src/html/_intelli_triangulation_8cpp.html create mode 100644 docs-src/html/_intelli_triangulation_8cpp.js create mode 100644 docs-src/html/_intelli_triangulation_8cpp__incl.dot create mode 100644 docs-src/html/_intelli_triangulation_8cpp_source.html create mode 100644 docs-src/html/_intelli_triangulation_8h.html create mode 100644 docs-src/html/_intelli_triangulation_8h.js create mode 100644 docs-src/html/_intelli_triangulation_8h__dep__incl.dot create mode 100644 docs-src/html/_intelli_triangulation_8h__incl.dot create mode 100644 docs-src/html/_intelli_triangulation_8h_source.html create mode 100644 docs-src/html/_painting_area_8cpp.html create mode 100644 docs-src/html/_painting_area_8cpp__incl.dot create mode 100644 docs-src/html/_painting_area_8cpp_source.html create mode 100644 docs-src/html/_painting_area_8h.html create mode 100644 docs-src/html/_painting_area_8h__dep__incl.dot create mode 100644 docs-src/html/_painting_area_8h__incl.dot create mode 100644 docs-src/html/_painting_area_8h_source.html create mode 100644 docs-src/html/_tool_2_intelli_color_picker_8cpp.html create mode 100644 docs-src/html/_tool_2_intelli_color_picker_8cpp__incl.dot create mode 100644 docs-src/html/_tool_2_intelli_color_picker_8cpp_source.html create mode 100644 docs-src/html/annotated.html create mode 100644 docs-src/html/annotated_dup.js create mode 100644 docs-src/html/bc_s.png create mode 100644 docs-src/html/bdwn.png create mode 100644 docs-src/html/class_intelli_color_picker-members.html create mode 100644 docs-src/html/class_intelli_color_picker.html create mode 100644 docs-src/html/class_intelli_color_picker.js create mode 100644 docs-src/html/class_intelli_color_picker_a437a6f20bf2fc0a4cbaf4c030c2a26d9_icgraph.dot create mode 100644 docs-src/html/class_intelli_color_picker_a55568fbf5dc783f06284b7031ffe9415_icgraph.dot create mode 100644 docs-src/html/class_intelli_color_picker_a7e2ddbbbfbed383f06b24e5bf6b27ae8_icgraph.dot create mode 100644 docs-src/html/class_intelli_color_picker_a86bf4a940e4a0e465e30cbdf28748931_icgraph.dot create mode 100644 docs-src/html/class_intelli_color_picker_aae2eb27b928fe9388b9398b0556303b7_icgraph.dot create mode 100644 docs-src/html/class_intelli_color_picker_aec499265ae28ce1b54be88222e74292e_icgraph.dot create mode 100644 docs-src/html/class_intelli_helper-members.html create mode 100644 docs-src/html/class_intelli_helper.html create mode 100644 docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_cgraph.dot create mode 100644 docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_icgraph.dot create mode 100644 docs-src/html/class_intelli_helper_a67fc007dda64187f6cef7fba3fcd9e40_icgraph.dot create mode 100644 docs-src/html/class_intelli_image-members.html create mode 100644 docs-src/html/class_intelli_image.html create mode 100644 docs-src/html/class_intelli_image.js create mode 100644 docs-src/html/class_intelli_image.png create mode 100644 docs-src/html/class_intelli_image__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_image_a2e787f1b333b59401643936ebb3dcfe1_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_a4576ebb6d863321c816293d7b7f9fd3f_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_a6be622810dc2bc756054bb5769becb06_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_ad66fbe380ffe0e073a8cd760f8285fe3_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_ae231800aba38c96074bbe9bb6e341d4e_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_aebbced93f4744fad81b7f141b21f4ab2_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_aec0e9c8184d89dee33fd9adefbd2f8aa_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_af3c859f5c409e37051edfd9e9fbca056_icgraph.dot create mode 100644 docs-src/html/class_intelli_image_af8eddbd9aa54c8d37590d1d4bf8dce31_icgraph.dot create mode 100644 docs-src/html/class_intelli_input_dialog-members.html create mode 100644 docs-src/html/class_intelli_input_dialog.html create mode 100644 docs-src/html/class_intelli_input_dialog.js create mode 100644 docs-src/html/class_intelli_input_dialog.png create mode 100644 docs-src/html/class_intelli_photo_gui-members.html create mode 100644 docs-src/html/class_intelli_photo_gui.html create mode 100644 docs-src/html/class_intelli_photo_gui.js create mode 100644 docs-src/html/class_intelli_photo_gui.png create mode 100644 docs-src/html/class_intelli_photo_gui__coll__graph.dot create mode 100644 docs-src/html/class_intelli_photo_gui__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_photo_gui_a1dbef8d4688227aa9455aea52db00bf4_cgraph.dot create mode 100644 docs-src/html/class_intelli_raster_image-members.html create mode 100644 docs-src/html/class_intelli_raster_image.html create mode 100644 docs-src/html/class_intelli_raster_image.js create mode 100644 docs-src/html/class_intelli_raster_image.png create mode 100644 docs-src/html/class_intelli_raster_image__coll__graph.dot create mode 100644 docs-src/html/class_intelli_raster_image__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_raster_image_a612d79124f0e2c158a4f0abbe4b5f97f_cgraph.dot create mode 100644 docs-src/html/class_intelli_raster_image_a8f901301b106504de3c27308ade897dc_cgraph.dot create mode 100644 docs-src/html/class_intelli_raster_image_aad9b561fe499a4da3c6ef98971aa3468_icgraph.dot create mode 100644 docs-src/html/class_intelli_raster_image_ae43393397b0141a8033fe34d3a1b1884_icgraph.dot create mode 100644 docs-src/html/class_intelli_raster_image_ae779b571372296f1922af818ba003413_icgraph.dot create mode 100644 docs-src/html/class_intelli_render_settings-members.html create mode 100644 docs-src/html/class_intelli_render_settings.html create mode 100644 docs-src/html/class_intelli_render_settings.js create mode 100644 docs-src/html/class_intelli_render_settings_a5a74e7d7ed3a2e944883dddbe8bbf5e8_icgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image-members.html create mode 100644 docs-src/html/class_intelli_shaped_image.html create mode 100644 docs-src/html/class_intelli_shaped_image.js create mode 100644 docs-src/html/class_intelli_shaped_image.png create mode 100644 docs-src/html/class_intelli_shaped_image__coll__graph.dot create mode 100644 docs-src/html/class_intelli_shaped_image__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_cgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_icgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_a0f834c3f255baeb50c98ef335a6d0ea9_icgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_cgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_icgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_a68cf374247c16f07fd84d50e4cd05630_icgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_ac6a99e1a96134073bceea252b37636cc_cgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_ae2e612a1fa52d7f878b34a7a7022d8e9_icgraph.dot create mode 100644 docs-src/html/class_intelli_shaped_image_aed0b31e0fa771104399d1f5ff39a0337_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool-members.html create mode 100644 docs-src/html/class_intelli_tool.html create mode 100644 docs-src/html/class_intelli_tool.js create mode 100644 docs-src/html/class_intelli_tool.png create mode 100644 docs-src/html/class_intelli_tool__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_a0020fad2e26315d5c4d96dbc95d1dceb_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a16189b00307c6d7e89f28198f54404b0_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a1e6aa68ac5f3c2ca02319e5ef3f0c966_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a4dccfd4460255ccb866f336406a33574_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_icgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle-members.html create mode 100644 docs-src/html/class_intelli_tool_circle.html create mode 100644 docs-src/html/class_intelli_tool_circle.js create mode 100644 docs-src/html/class_intelli_tool_circle.png create mode 100644 docs-src/html/class_intelli_tool_circle__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_circle__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_a29d7b9ed4960e6fe1f31ff620363e429_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_a7a03b65b95d7b5d72e6a92c95f068954_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_a90ee58c5390a86afc75c14ca79b91d7b_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_aca07540f2f7ccb3d2c0b84890c1afc4c_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_ad8e438ec997c57262b5efc2db4cee1a3_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_ae2d9b0fb6695c184c4cb507a5fb75506_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_circle_ae883b8ae833c78a8867e626c600f9639_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill-members.html create mode 100644 docs-src/html/class_intelli_tool_flood_fill.html create mode 100644 docs-src/html/class_intelli_tool_flood_fill.js create mode 100644 docs-src/html/class_intelli_tool_flood_fill.png create mode 100644 docs-src/html/class_intelli_tool_flood_fill__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_a39cf49c0ce46f96be3510f0b70c9d892_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_a3cd42cea99bc7583875abcc0c274c668_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_a7438ef96c6c36068bce76e2364e8594c_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_a83b1bd8be0cbb32cdf61a9597ec849ba_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_ac85e3cb6233508ff9612833a8d9e3961_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_ad58cc7c065123beb6b0270f99e99b991_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_flood_fill_ada0f7154d119102410a55038763a17e4_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_gradient-members.html create mode 100644 docs-src/html/class_intelli_tool_gradient.html create mode 100644 docs-src/html/class_intelli_tool_gradient.js create mode 100644 docs-src/html/class_intelli_tool_gradient.png create mode 100644 docs-src/html/class_intelli_tool_line-members.html create mode 100644 docs-src/html/class_intelli_tool_line.html create mode 100644 docs-src/html/class_intelli_tool_line.js create mode 100644 docs-src/html/class_intelli_tool_line.png create mode 100644 docs-src/html/class_intelli_tool_line__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_line__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_line_a155d676a5f98311217eb095be4759846_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_line_a6214918cba5753f89d97de4559a2b9b2_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_line_a6cce59f3017936214b10b47252a898a3_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_line_aaf1d686e1ec43f41b5186ccfd806b125_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_line_abc6324ef0778823fe7e35aef8ae37f9b_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_line_ac93f76ff20a1c111a403b298bab02482_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_line_acb600b0f4e9225ebce2937c2b7abb4c2_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen-members.html create mode 100644 docs-src/html/class_intelli_tool_pen.html create mode 100644 docs-src/html/class_intelli_tool_pen.js create mode 100644 docs-src/html/class_intelli_tool_pen.png create mode 100644 docs-src/html/class_intelli_tool_pen__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_pen__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_a1751e3864a0d36ef42ca55021cae73ce_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_a58d1d636497b630647ce0c4d652737c2_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_a8ff40aef6d38eb55af31a19322429205_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_abda7a22b9766fa4ad254324a53cab94d_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_abf8562e8cd2da586afdf4d47b3a4ff13_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_ac77a025515d0fed6954556fe2b444818_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_pen_afe3626ddff440ab125f4a2465c45427a_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool-members.html create mode 100644 docs-src/html/class_intelli_tool_plain_tool.html create mode 100644 docs-src/html/class_intelli_tool_plain_tool.js create mode 100644 docs-src/html/class_intelli_tool_plain_tool.png create mode 100644 docs-src/html/class_intelli_tool_plain_tool__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_a2ae458f1b04eb77a47f6dca5e91e33b8_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_a91fe568be05c075814d67440472bb658_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_ab786dd5fa80af863246013d43c4b7ac9_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_ac23f5d0f07e42fd7c2ea3fc1347da400_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_acb0c46e16d2c09370a2244a936de38b1_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_ad7546a6335bb3bb4cbf0e1883788d41c_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_plain_tool_adc004ea421e2cc0ac39cc7a6b6d43d0d_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon-members.html create mode 100644 docs-src/html/class_intelli_tool_polygon.html create mode 100644 docs-src/html/class_intelli_tool_polygon.js create mode 100644 docs-src/html/class_intelli_tool_polygon.png create mode 100644 docs-src/html/class_intelli_tool_polygon__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_a087cbf2254010989df6106a357471499_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_a0e3a1135f04c73c159137ae219a38922_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_a47cad87cd02b128b02dc929713bd1d1b_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_a4e1473ff408ae2e11cf6a43f6f575f21_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_a713103300c9f023d64d9eec5ac05dd17_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_aa36b012b48311c36e7cd6771a5081427_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_polygon_ad5d3b741be6d0647a9cdc9da2cb8bc3d_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle-members.html create mode 100644 docs-src/html/class_intelli_tool_rectangle.html create mode 100644 docs-src/html/class_intelli_tool_rectangle.js create mode 100644 docs-src/html/class_intelli_tool_rectangle.png create mode 100644 docs-src/html/class_intelli_tool_rectangle__coll__graph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle__inherit__graph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_a445c53a56e859f970e59f5036e221e0c_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_a480c6804a4963c5a1c3f7ef84b63c1a8_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_a4b5931071e21eb6949ffe357315e408b_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_a7dc1463e726a21255e6297241dc71fb1_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_a94460e3ff1c19e80bde922c55f53cc43_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_ad43f653256a6516b9398f82054be0d7f_cgraph.dot create mode 100644 docs-src/html/class_intelli_tool_rectangle_ae03c307ccf66cbe3fd59e3657712368d_cgraph.dot create mode 100644 docs-src/html/class_intelli_toolsettings-members.html create mode 100644 docs-src/html/class_intelli_toolsettings.html create mode 100644 docs-src/html/class_intelli_toolsettings.js create mode 100644 docs-src/html/class_intelli_toolsettings_a5beb193b25e0665516244c61c5e65aa6_icgraph.dot create mode 100644 docs-src/html/class_intelli_toolsettings_a68528dd3bad8f39ba19fa6b12a4e415a_icgraph.dot create mode 100644 docs-src/html/class_intelli_toolsettings_a7d6ce2054ec4bcba7629dc2b514b6b5c_icgraph.dot create mode 100644 docs-src/html/class_intelli_toolsettings_a906d37de6ee94b433d53fe3e598cc9fa_icgraph.dot create mode 100644 docs-src/html/class_painting_area-members.html create mode 100644 docs-src/html/class_painting_area.html create mode 100644 docs-src/html/class_painting_area.js create mode 100644 docs-src/html/class_painting_area.png create mode 100644 docs-src/html/class_painting_area__coll__graph.dot create mode 100644 docs-src/html/class_painting_area__inherit__graph.dot create mode 100644 docs-src/html/class_painting_area_a1511a534e206089fff1d325e7ec7a8eb_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a1d6d86c25efdce9fe9031a9cd01c74c8_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a1f597740b4d7b4bc2e24c51f8cb0b6eb_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a24280454ebb80db7feba2fd621513353_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a35b5df914acb608cc29717659793359c_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a39ad76e1319659bfa38eee88ef33d395_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a427c5fc26480c7ae80b3480e85510bda_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a4735d4cf1dc58a9096d904e74c39c4df_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a4fa0ec23e78cc59f28c823584c721460_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a632848d99f44d33d7da2618fbc6775a4_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a66115307ff4a99cd7ca16423c5c8ecfb_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a675ee91b26b1c58be6d833f279d81597_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a71ac281e0de263208d4a3b9de74258ec_cgraph.dot create mode 100644 docs-src/html/class_painting_area_a79eb059829f27e8cdb3a54c5cd3d12c9_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a7ae21fd031ee1c04f92e042e86be0a90_icgraph.dot create mode 100644 docs-src/html/class_painting_area_a88c7e759aa8375a56129791645f46ea5_cgraph.dot create mode 100644 docs-src/html/class_painting_area_aa22e274b6094a9619f196cd7b49526b5_cgraph.dot create mode 100644 docs-src/html/class_painting_area_abfe445f8d9b70ae42bfeda874127dd15_cgraph.dot create mode 100644 docs-src/html/class_painting_area_ac576f58aad03b4dcd47611b6a4b9abb4_icgraph.dot create mode 100644 docs-src/html/class_painting_area_ac6d089f4357b22d9a9906fd4771de3e7_cgraph.dot create mode 100644 docs-src/html/class_painting_area_acab11ad35d07e9081203d8217d2c0855_icgraph.dot create mode 100644 docs-src/html/class_painting_area_acff4563d006fda491469bd41778d07eb_cgraph.dot create mode 100644 docs-src/html/class_painting_area_ae05f6893fb44bfcb34018573a609cd1a_cgraph.dot create mode 100644 docs-src/html/class_painting_area_ae261acaaa346610dfed489dbac17e789_cgraph.dot create mode 100644 docs-src/html/class_painting_area_ae92b27dfd09573c224d2ae1958d3bead_icgraph.dot create mode 100644 docs-src/html/class_painting_area_aeb5eb394b979ea90f2be9849fdda1774_cgraph.dot create mode 100644 docs-src/html/class_unit_test-members.html create mode 100644 docs-src/html/class_unit_test.html create mode 100644 docs-src/html/class_unit_test.js create mode 100644 docs-src/html/class_unit_test.png create mode 100644 docs-src/html/classes.html create mode 100644 docs-src/html/closed.png create mode 100644 docs-src/html/dir_000000_000001.html create mode 100644 docs-src/html/dir_000001_000002.html create mode 100644 docs-src/html/dir_000001_000005.html create mode 100644 docs-src/html/dir_000002_000003.html create mode 100644 docs-src/html/dir_000002_000006.html create mode 100644 docs-src/html/dir_000003_000004.html create mode 100644 docs-src/html/dir_000004_000003.html create mode 100644 docs-src/html/dir_000004_000005.html create mode 100644 docs-src/html/dir_000005_000002.html create mode 100644 docs-src/html/dir_000005_000003.html create mode 100644 docs-src/html/dir_000005_000004.html create mode 100644 docs-src/html/dir_000005_000006.html create mode 100644 docs-src/html/dir_000006_000002.html create mode 100644 docs-src/html/dir_000006_000003.html create mode 100644 docs-src/html/dir_000006_000004.html create mode 100644 docs-src/html/dir_000006_000005.html create mode 100644 docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.html create mode 100644 docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.js create mode 100644 docs-src/html/dir_13830bfc3dd6736fe878600c9081919f_dep.dot create mode 100644 docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.html create mode 100644 docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.js create mode 100644 docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5_dep.dot create mode 100644 docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.html create mode 100644 docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.js create mode 100644 docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2_dep.dot create mode 100644 docs-src/html/dir_5dabb14988a75c922e285f444641a133.html create mode 100644 docs-src/html/dir_5dabb14988a75c922e285f444641a133.js create mode 100644 docs-src/html/dir_5dabb14988a75c922e285f444641a133_dep.dot create mode 100644 docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.dot create mode 100644 docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.html create mode 100644 docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.js create mode 100644 docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2_dep.dot create mode 100644 docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.html create mode 100644 docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.js create mode 100644 docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a_dep.dot create mode 100644 docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.html create mode 100644 docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.js create mode 100644 docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c_dep.dot create mode 100644 docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.html create mode 100644 docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.js create mode 100644 docs-src/html/dir_941490de56ac122cf77df9922cbcc750.html create mode 100644 docs-src/html/dir_941490de56ac122cf77df9922cbcc750.js create mode 100644 docs-src/html/dir_941490de56ac122cf77df9922cbcc750_dep.dot create mode 100644 docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.html create mode 100644 docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.js create mode 100644 docs-src/html/dir_e6d96184223881d115efa44ca0dfa844_dep.dot create mode 100644 docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.html create mode 100644 docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.js create mode 100644 docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.html create mode 100644 docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.js create mode 100644 docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe_dep.dot create mode 100644 docs-src/html/doc.png create mode 100644 docs-src/html/doxygen.css create mode 100644 docs-src/html/doxygen.png create mode 100644 docs-src/html/dynsections.js create mode 100644 docs-src/html/files.html create mode 100644 docs-src/html/files_dup.js create mode 100644 docs-src/html/folderclosed.png create mode 100644 docs-src/html/folderopen.png create mode 100644 docs-src/html/functions.html create mode 100644 docs-src/html/functions_b.html create mode 100644 docs-src/html/functions_c.html create mode 100644 docs-src/html/functions_d.html create mode 100644 docs-src/html/functions_dup.js create mode 100644 docs-src/html/functions_enum.html create mode 100644 docs-src/html/functions_f.html create mode 100644 docs-src/html/functions_func.html create mode 100644 docs-src/html/functions_g.html create mode 100644 docs-src/html/functions_h.html create mode 100644 docs-src/html/functions_i.html create mode 100644 docs-src/html/functions_l.html create mode 100644 docs-src/html/functions_m.html create mode 100644 docs-src/html/functions_o.html create mode 100644 docs-src/html/functions_p.html create mode 100644 docs-src/html/functions_r.html create mode 100644 docs-src/html/functions_s.html create mode 100644 docs-src/html/functions_t.html create mode 100644 docs-src/html/functions_u.html create mode 100644 docs-src/html/functions_vars.html create mode 100644 docs-src/html/functions_w.html create mode 100644 docs-src/html/functions_~.html create mode 100644 docs-src/html/globals.html create mode 100644 docs-src/html/globals_defs.html create mode 100644 docs-src/html/globals_enum.html create mode 100644 docs-src/html/globals_func.html create mode 100644 docs-src/html/graph_legend.dot create mode 100644 docs-src/html/graph_legend.html create mode 100644 docs-src/html/hierarchy.html create mode 100644 docs-src/html/hierarchy.js create mode 100644 docs-src/html/index.html create mode 100644 docs-src/html/inherit_graph_0.dot create mode 100644 docs-src/html/inherit_graph_1.dot create mode 100644 docs-src/html/inherit_graph_2.dot create mode 100644 docs-src/html/inherit_graph_3.dot create mode 100644 docs-src/html/inherit_graph_4.dot create mode 100644 docs-src/html/inherit_graph_5.dot create mode 100644 docs-src/html/inherit_graph_6.dot create mode 100644 docs-src/html/inherit_graph_7.dot create mode 100644 docs-src/html/inherit_graph_8.dot create mode 100644 docs-src/html/inherits.html create mode 100644 docs-src/html/jquery.js create mode 100644 docs-src/html/main_8cpp.html create mode 100644 docs-src/html/main_8cpp.js create mode 100644 docs-src/html/main_8cpp__incl.dot create mode 100644 docs-src/html/main_8cpp_source.html create mode 100644 docs-src/html/main_unit_test_8cpp.html create mode 100644 docs-src/html/main_unit_test_8cpp_source.html create mode 100644 docs-src/html/menu.js create mode 100644 docs-src/html/menudata.js create mode 100644 docs-src/html/namespace_intelli_datamanager.html create mode 100644 docs-src/html/namespace_intelli_helper.html create mode 100644 docs-src/html/namespace_intelli_helper_a214dc3624ba4562a03dc922e3dd7b617_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_cgraph.dot create mode 100644 docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_cgraph.dot create mode 100644 docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_helper_afdd9fe78cc5d21b59642910220768149_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_triangulation.html create mode 100644 docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_cgraph.dot create mode 100644 docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_cgraph.dot create mode 100644 docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_triangulation_acdaf1ed598e868b25e9e06d580da32e5_icgraph.dot create mode 100644 docs-src/html/namespace_intelli_triangulation_af9af549a7faff35a74c1265b290ea0ca_icgraph.dot create mode 100644 docs-src/html/namespacemembers.html create mode 100644 docs-src/html/namespacemembers_func.html create mode 100644 docs-src/html/namespaces.html create mode 100644 docs-src/html/namespaces_dup.js create mode 100644 docs-src/html/nav_f.png create mode 100644 docs-src/html/nav_g.png create mode 100644 docs-src/html/nav_h.png create mode 100644 docs-src/html/navtree.css create mode 100644 docs-src/html/navtree.js create mode 100644 docs-src/html/navtreedata.js create mode 100644 docs-src/html/navtreeindex0.js create mode 100644 docs-src/html/navtreeindex1.js create mode 100644 docs-src/html/open.png create mode 100644 docs-src/html/resize.js create mode 100644 docs-src/html/search/all_0.html create mode 100644 docs-src/html/search/all_0.js create mode 100644 docs-src/html/search/all_1.html create mode 100644 docs-src/html/search/all_1.js create mode 100644 docs-src/html/search/all_10.html create mode 100644 docs-src/html/search/all_10.js create mode 100644 docs-src/html/search/all_11.html create mode 100644 docs-src/html/search/all_11.js create mode 100644 docs-src/html/search/all_12.html create mode 100644 docs-src/html/search/all_12.js create mode 100644 docs-src/html/search/all_2.html create mode 100644 docs-src/html/search/all_2.js create mode 100644 docs-src/html/search/all_3.html create mode 100644 docs-src/html/search/all_3.js create mode 100644 docs-src/html/search/all_4.html create mode 100644 docs-src/html/search/all_4.js create mode 100644 docs-src/html/search/all_5.html create mode 100644 docs-src/html/search/all_5.js create mode 100644 docs-src/html/search/all_6.html create mode 100644 docs-src/html/search/all_6.js create mode 100644 docs-src/html/search/all_7.html create mode 100644 docs-src/html/search/all_7.js create mode 100644 docs-src/html/search/all_8.html create mode 100644 docs-src/html/search/all_8.js create mode 100644 docs-src/html/search/all_9.html create mode 100644 docs-src/html/search/all_9.js create mode 100644 docs-src/html/search/all_a.html create mode 100644 docs-src/html/search/all_a.js create mode 100644 docs-src/html/search/all_b.html create mode 100644 docs-src/html/search/all_b.js create mode 100644 docs-src/html/search/all_c.html create mode 100644 docs-src/html/search/all_c.js create mode 100644 docs-src/html/search/all_d.html create mode 100644 docs-src/html/search/all_d.js create mode 100644 docs-src/html/search/all_e.html create mode 100644 docs-src/html/search/all_e.js create mode 100644 docs-src/html/search/all_f.html create mode 100644 docs-src/html/search/all_f.js create mode 100644 docs-src/html/search/classes_0.html create mode 100644 docs-src/html/search/classes_0.js create mode 100644 docs-src/html/search/classes_1.html create mode 100644 docs-src/html/search/classes_1.js create mode 100644 docs-src/html/search/classes_2.html create mode 100644 docs-src/html/search/classes_2.js create mode 100644 docs-src/html/search/classes_3.html create mode 100644 docs-src/html/search/classes_3.js create mode 100644 docs-src/html/search/classes_4.html create mode 100644 docs-src/html/search/classes_4.js create mode 100644 docs-src/html/search/close.png create mode 100644 docs-src/html/search/defines_0.html create mode 100644 docs-src/html/search/defines_0.js create mode 100644 docs-src/html/search/enums_0.html create mode 100644 docs-src/html/search/enums_0.js create mode 100644 docs-src/html/search/enums_1.html create mode 100644 docs-src/html/search/enums_1.js create mode 100644 docs-src/html/search/enums_2.html create mode 100644 docs-src/html/search/enums_2.js create mode 100644 docs-src/html/search/enumvalues_0.html create mode 100644 docs-src/html/search/enumvalues_0.js create mode 100644 docs-src/html/search/enumvalues_1.html create mode 100644 docs-src/html/search/enumvalues_1.js create mode 100644 docs-src/html/search/enumvalues_2.html create mode 100644 docs-src/html/search/enumvalues_2.js create mode 100644 docs-src/html/search/enumvalues_3.html create mode 100644 docs-src/html/search/enumvalues_3.js create mode 100644 docs-src/html/search/enumvalues_4.html create mode 100644 docs-src/html/search/enumvalues_4.js create mode 100644 docs-src/html/search/enumvalues_5.html create mode 100644 docs-src/html/search/enumvalues_5.js create mode 100644 docs-src/html/search/enumvalues_6.html create mode 100644 docs-src/html/search/enumvalues_6.js create mode 100644 docs-src/html/search/enumvalues_7.html create mode 100644 docs-src/html/search/enumvalues_7.js create mode 100644 docs-src/html/search/files_0.html create mode 100644 docs-src/html/search/files_0.js create mode 100644 docs-src/html/search/files_1.html create mode 100644 docs-src/html/search/files_1.js create mode 100644 docs-src/html/search/files_2.html create mode 100644 docs-src/html/search/files_2.js create mode 100644 docs-src/html/search/files_3.html create mode 100644 docs-src/html/search/files_3.js create mode 100644 docs-src/html/search/functions_0.html create mode 100644 docs-src/html/search/functions_0.js create mode 100644 docs-src/html/search/functions_1.html create mode 100644 docs-src/html/search/functions_1.js create mode 100644 docs-src/html/search/functions_2.html create mode 100644 docs-src/html/search/functions_2.js create mode 100644 docs-src/html/search/functions_3.html create mode 100644 docs-src/html/search/functions_3.js create mode 100644 docs-src/html/search/functions_4.html create mode 100644 docs-src/html/search/functions_4.js create mode 100644 docs-src/html/search/functions_5.html create mode 100644 docs-src/html/search/functions_5.js create mode 100644 docs-src/html/search/functions_6.html create mode 100644 docs-src/html/search/functions_6.js create mode 100644 docs-src/html/search/functions_7.html create mode 100644 docs-src/html/search/functions_7.js create mode 100644 docs-src/html/search/functions_8.html create mode 100644 docs-src/html/search/functions_8.js create mode 100644 docs-src/html/search/functions_9.html create mode 100644 docs-src/html/search/functions_9.js create mode 100644 docs-src/html/search/functions_a.html create mode 100644 docs-src/html/search/functions_a.js create mode 100644 docs-src/html/search/functions_b.html create mode 100644 docs-src/html/search/functions_b.js create mode 100644 docs-src/html/search/functions_c.html create mode 100644 docs-src/html/search/functions_c.js create mode 100644 docs-src/html/search/functions_d.html create mode 100644 docs-src/html/search/functions_d.js create mode 100644 docs-src/html/search/functions_e.html create mode 100644 docs-src/html/search/functions_e.js create mode 100644 docs-src/html/search/mag_sel.png create mode 100644 docs-src/html/search/namespaces_0.html create mode 100644 docs-src/html/search/namespaces_0.js create mode 100644 docs-src/html/search/nomatches.html create mode 100644 docs-src/html/search/search.css create mode 100644 docs-src/html/search/search.js create mode 100644 docs-src/html/search/search_l.png create mode 100644 docs-src/html/search/search_m.png create mode 100644 docs-src/html/search/search_r.png create mode 100644 docs-src/html/search/searchdata.js create mode 100644 docs-src/html/search/variables_0.html create mode 100644 docs-src/html/search/variables_0.js create mode 100644 docs-src/html/search/variables_1.html create mode 100644 docs-src/html/search/variables_1.js create mode 100644 docs-src/html/search/variables_2.html create mode 100644 docs-src/html/search/variables_2.js create mode 100644 docs-src/html/search/variables_3.html create mode 100644 docs-src/html/search/variables_3.js create mode 100644 docs-src/html/search/variables_4.html create mode 100644 docs-src/html/search/variables_4.js create mode 100644 docs-src/html/search/variables_5.html create mode 100644 docs-src/html/search/variables_5.js create mode 100644 docs-src/html/search/variables_6.html create mode 100644 docs-src/html/search/variables_6.js create mode 100644 docs-src/html/search/variables_7.html create mode 100644 docs-src/html/search/variables_7.js create mode 100644 docs-src/html/search/variables_8.html create mode 100644 docs-src/html/search/variables_8.js create mode 100644 docs-src/html/splitbar.png create mode 100644 docs-src/html/struct_layer_object-members.html create mode 100644 docs-src/html/struct_layer_object.html create mode 100644 docs-src/html/struct_layer_object.js create mode 100644 docs-src/html/struct_layer_object__coll__graph.dot create mode 100644 docs-src/html/struct_triangle-members.html create mode 100644 docs-src/html/struct_triangle.html create mode 100644 docs-src/html/struct_triangle.js create mode 100644 docs-src/html/sync_off.png create mode 100644 docs-src/html/sync_on.png create mode 100644 docs-src/html/tab_a.png create mode 100644 docs-src/html/tab_b.png create mode 100644 docs-src/html/tab_h.png create mode 100644 docs-src/html/tab_s.png create mode 100644 docs-src/html/tabs.css create mode 100644 docs-src/html/tst__unittest_8cpp.html create mode 100644 docs-src/html/tst__unittest_8cpp_source.html rename {docs => docs-src}/referenzsystem.docx (100%) create mode 100644 docs/Benutzerhandbuch.pdf create mode 100644 docs/Entwicklerhandbuch.pdf diff --git a/docs/CRC-Karten/CRC-Karten.docx b/docs-src/CRC-Karten/CRC-Karten.docx similarity index 100% rename from docs/CRC-Karten/CRC-Karten.docx rename to docs-src/CRC-Karten/CRC-Karten.docx diff --git a/docs/CRC-Karten/CRC-Karten.pdf b/docs-src/CRC-Karten/CRC-Karten.pdf similarity index 100% rename from docs/CRC-Karten/CRC-Karten.pdf rename to docs-src/CRC-Karten/CRC-Karten.pdf diff --git a/docs/Charts/Author Work per Week/author_work_per_week.svg b/docs-src/Charts/Author Work per Week/author_work_per_week.svg similarity index 100% rename from docs/Charts/Author Work per Week/author_work_per_week.svg rename to docs-src/Charts/Author Work per Week/author_work_per_week.svg diff --git a/docs/Charts/Author Work per Week/convert-data.py b/docs-src/Charts/Author Work per Week/convert-data.py similarity index 100% rename from docs/Charts/Author Work per Week/convert-data.py rename to docs-src/Charts/Author Work per Week/convert-data.py diff --git a/docs/Charts/Author Work per Week/lines_of_code_by_author.dat b/docs-src/Charts/Author Work per Week/lines_of_code_by_author.dat similarity index 100% rename from docs/Charts/Author Work per Week/lines_of_code_by_author.dat rename to docs-src/Charts/Author Work per Week/lines_of_code_by_author.dat diff --git a/docs/Charts/Author Work per Week/lines_of_code_by_author.plot b/docs-src/Charts/Author Work per Week/lines_of_code_by_author.plot similarity index 100% rename from docs/Charts/Author Work per Week/lines_of_code_by_author.plot rename to docs-src/Charts/Author Work per Week/lines_of_code_by_author.plot diff --git a/docs/Charts/Author Work per Week/output.dat b/docs-src/Charts/Author Work per Week/output.dat similarity index 100% rename from docs/Charts/Author Work per Week/output.dat rename to docs-src/Charts/Author Work per Week/output.dat diff --git a/docs/Charts/Author Work per Week/workload_per_week.plt b/docs-src/Charts/Author Work per Week/workload_per_week.plt similarity index 100% rename from docs/Charts/Author Work per Week/workload_per_week.plt rename to docs-src/Charts/Author Work per Week/workload_per_week.plt diff --git a/docs/Charts/Work Pies/Code.svg b/docs-src/Charts/Work Pies/Code.svg similarity index 100% rename from docs/Charts/Work Pies/Code.svg rename to docs-src/Charts/Work Pies/Code.svg diff --git a/docs/Charts/Work Pies/Dokumentation.svg b/docs-src/Charts/Work Pies/Dokumentation.svg similarity index 100% rename from docs/Charts/Work Pies/Dokumentation.svg rename to docs-src/Charts/Work Pies/Dokumentation.svg diff --git a/docs/Charts/Work Pies/Kundenkommunikation.svg b/docs-src/Charts/Work Pies/Kundenkommunikation.svg similarity index 100% rename from docs/Charts/Work Pies/Kundenkommunikation.svg rename to docs-src/Charts/Work Pies/Kundenkommunikation.svg diff --git a/docs/Charts/Work Pies/Legende.svg b/docs-src/Charts/Work Pies/Legende.svg similarity index 100% rename from docs/Charts/Work Pies/Legende.svg rename to docs-src/Charts/Work Pies/Legende.svg diff --git a/docs/Charts/Work Pies/Teammanagment.svg b/docs-src/Charts/Work Pies/Teammanagment.svg similarity index 100% rename from docs/Charts/Work Pies/Teammanagment.svg rename to docs-src/Charts/Work Pies/Teammanagment.svg diff --git a/docs/Charts/Work Pies/UI Design.svg b/docs-src/Charts/Work Pies/UI Design.svg similarity index 100% rename from docs/Charts/Work Pies/UI Design.svg rename to docs-src/Charts/Work Pies/UI Design.svg diff --git a/docs/Charts/Work Pies/aufteilungen.txt b/docs-src/Charts/Work Pies/aufteilungen.txt similarity index 100% rename from docs/Charts/Work Pies/aufteilungen.txt rename to docs-src/Charts/Work Pies/aufteilungen.txt diff --git a/docs/Charts/Workload_per_Week.svg b/docs-src/Charts/Workload_per_Week.svg similarity index 100% rename from docs/Charts/Workload_per_Week.svg rename to docs-src/Charts/Workload_per_Week.svg diff --git a/docs/Entwicklerhandbuch/Entwicklerhandbuch.docx b/docs-src/Entwicklerhandbuch/Entwicklerhandbuch.docx similarity index 100% rename from docs/Entwicklerhandbuch/Entwicklerhandbuch.docx rename to docs-src/Entwicklerhandbuch/Entwicklerhandbuch.docx diff --git a/docs/Entwicklerhandbuch/Entwicklerhandbuch.pdf b/docs-src/Entwicklerhandbuch/Entwicklerhandbuch.pdf similarity index 100% rename from docs/Entwicklerhandbuch/Entwicklerhandbuch.pdf rename to docs-src/Entwicklerhandbuch/Entwicklerhandbuch.pdf diff --git a/docs/Entwicklerhandbuch/Sequenzdiagram-PenTool.svg b/docs-src/Entwicklerhandbuch/Sequenzdiagram-PenTool.svg similarity index 100% rename from docs/Entwicklerhandbuch/Sequenzdiagram-PenTool.svg rename to docs-src/Entwicklerhandbuch/Sequenzdiagram-PenTool.svg diff --git a/docs/Entwicklerhandbuch/Sequenzdiagram-PlainTool.svg b/docs-src/Entwicklerhandbuch/Sequenzdiagram-PlainTool.svg similarity index 100% rename from docs/Entwicklerhandbuch/Sequenzdiagram-PlainTool.svg rename to docs-src/Entwicklerhandbuch/Sequenzdiagram-PlainTool.svg diff --git a/docs/Entwicklerhandbuch/UML.svg b/docs-src/Entwicklerhandbuch/UML.svg similarity index 100% rename from docs/Entwicklerhandbuch/UML.svg rename to docs-src/Entwicklerhandbuch/UML.svg diff --git a/docs/Entwicklerhandbuch/Use_Case_1.svg b/docs-src/Entwicklerhandbuch/Use_Case_1.svg similarity index 100% rename from docs/Entwicklerhandbuch/Use_Case_1.svg rename to docs-src/Entwicklerhandbuch/Use_Case_1.svg diff --git a/docs/Entwicklerhandbuch/Use_Case_2.svg b/docs-src/Entwicklerhandbuch/Use_Case_2.svg similarity index 100% rename from docs/Entwicklerhandbuch/Use_Case_2.svg rename to docs-src/Entwicklerhandbuch/Use_Case_2.svg diff --git a/docs/Entwicklerhandbuch/Zustandsiagram-Layer-Color.svg b/docs-src/Entwicklerhandbuch/Zustandsiagram-Layer-Color.svg similarity index 100% rename from docs/Entwicklerhandbuch/Zustandsiagram-Layer-Color.svg rename to docs-src/Entwicklerhandbuch/Zustandsiagram-Layer-Color.svg diff --git a/docs/Entwicklerhandbuch/Zustandsiagram-Tool.svg b/docs-src/Entwicklerhandbuch/Zustandsiagram-Tool.svg similarity index 100% rename from docs/Entwicklerhandbuch/Zustandsiagram-Tool.svg rename to docs-src/Entwicklerhandbuch/Zustandsiagram-Tool.svg diff --git a/docs/Manual/assets/all-tools.png b/docs-src/Manual/assets/all-tools.png similarity index 100% rename from docs/Manual/assets/all-tools.png rename to docs-src/Manual/assets/all-tools.png diff --git a/docs/Manual/assets/change-colors.png b/docs-src/Manual/assets/change-colors.png similarity index 100% rename from docs/Manual/assets/change-colors.png rename to docs-src/Manual/assets/change-colors.png diff --git a/docs/Manual/assets/close-window.png b/docs-src/Manual/assets/close-window.png similarity index 100% rename from docs/Manual/assets/close-window.png rename to docs-src/Manual/assets/close-window.png diff --git a/docs/Manual/assets/color-switch.png b/docs-src/Manual/assets/color-switch.png similarity index 100% rename from docs/Manual/assets/color-switch.png rename to docs-src/Manual/assets/color-switch.png diff --git a/docs/Manual/assets/create-layer.png b/docs-src/Manual/assets/create-layer.png similarity index 100% rename from docs/Manual/assets/create-layer.png rename to docs-src/Manual/assets/create-layer.png diff --git a/docs/Manual/assets/file-open.png b/docs-src/Manual/assets/file-open.png similarity index 100% rename from docs/Manual/assets/file-open.png rename to docs-src/Manual/assets/file-open.png diff --git a/docs/Manual/assets/file-options.png b/docs-src/Manual/assets/file-options.png similarity index 100% rename from docs/Manual/assets/file-options.png rename to docs-src/Manual/assets/file-options.png diff --git a/docs/Manual/assets/file-save.png b/docs-src/Manual/assets/file-save.png similarity index 100% rename from docs/Manual/assets/file-save.png rename to docs-src/Manual/assets/file-save.png diff --git a/docs/Manual/assets/icon.png b/docs-src/Manual/assets/icon.png similarity index 100% rename from docs/Manual/assets/icon.png rename to docs-src/Manual/assets/icon.png diff --git a/docs/Manual/assets/icon.svg b/docs-src/Manual/assets/icon.svg similarity index 100% rename from docs/Manual/assets/icon.svg rename to docs-src/Manual/assets/icon.svg diff --git a/docs/Manual/assets/layer-options.png b/docs-src/Manual/assets/layer-options.png similarity index 100% rename from docs/Manual/assets/layer-options.png rename to docs-src/Manual/assets/layer-options.png diff --git a/docs/Manual/assets/maximize-window.png b/docs-src/Manual/assets/maximize-window.png similarity index 100% rename from docs/Manual/assets/maximize-window.png rename to docs-src/Manual/assets/maximize-window.png diff --git a/docs/Manual/assets/minimize-window.png b/docs-src/Manual/assets/minimize-window.png similarity index 100% rename from docs/Manual/assets/minimize-window.png rename to docs-src/Manual/assets/minimize-window.png diff --git a/docs/Manual/assets/startup.png b/docs-src/Manual/assets/startup.png similarity index 100% rename from docs/Manual/assets/startup.png rename to docs-src/Manual/assets/startup.png diff --git a/docs/Manual/assets/tool-circle.png b/docs-src/Manual/assets/tool-circle.png similarity index 100% rename from docs/Manual/assets/tool-circle.png rename to docs-src/Manual/assets/tool-circle.png diff --git a/docs/Manual/assets/tool-flood-fill.png b/docs-src/Manual/assets/tool-flood-fill.png similarity index 100% rename from docs/Manual/assets/tool-flood-fill.png rename to docs-src/Manual/assets/tool-flood-fill.png diff --git a/docs/Manual/assets/tool-gradient.png b/docs-src/Manual/assets/tool-gradient.png similarity index 100% rename from docs/Manual/assets/tool-gradient.png rename to docs-src/Manual/assets/tool-gradient.png diff --git a/docs/Manual/assets/tool-magic-wand.png b/docs-src/Manual/assets/tool-magic-wand.png similarity index 100% rename from docs/Manual/assets/tool-magic-wand.png rename to docs-src/Manual/assets/tool-magic-wand.png diff --git a/docs/Manual/assets/tool-pen.png b/docs-src/Manual/assets/tool-pen.png similarity index 100% rename from docs/Manual/assets/tool-pen.png rename to docs-src/Manual/assets/tool-pen.png diff --git a/docs/Manual/assets/tool-plain.png b/docs-src/Manual/assets/tool-plain.png similarity index 100% rename from docs/Manual/assets/tool-plain.png rename to docs-src/Manual/assets/tool-plain.png diff --git a/docs/Manual/assets/toollist.png b/docs-src/Manual/assets/toollist.png similarity index 100% rename from docs/Manual/assets/toollist.png rename to docs-src/Manual/assets/toollist.png diff --git a/docs/Manual/manual.aux b/docs-src/Manual/manual.aux similarity index 100% rename from docs/Manual/manual.aux rename to docs-src/Manual/manual.aux diff --git a/docs/Manual/manual.log b/docs-src/Manual/manual.log similarity index 100% rename from docs/Manual/manual.log rename to docs-src/Manual/manual.log diff --git a/docs/Manual/manual.pdf b/docs-src/Manual/manual.pdf similarity index 100% rename from docs/Manual/manual.pdf rename to docs-src/Manual/manual.pdf diff --git a/docs/Manual/manual.synctex.gz b/docs-src/Manual/manual.synctex.gz similarity index 100% rename from docs/Manual/manual.synctex.gz rename to docs-src/Manual/manual.synctex.gz diff --git a/docs/Manual/manual.tex b/docs-src/Manual/manual.tex similarity index 100% rename from docs/Manual/manual.tex rename to docs-src/Manual/manual.tex diff --git a/docs/Manual/manual.toc b/docs-src/Manual/manual.toc similarity index 100% rename from docs/Manual/manual.toc rename to docs-src/Manual/manual.toc diff --git a/docs/Sequenzdiagramme/Sequenzdiagram-PenTool.uxf b/docs-src/Sequenzdiagramme/Sequenzdiagram-PenTool.uxf similarity index 100% rename from docs/Sequenzdiagramme/Sequenzdiagram-PenTool.uxf rename to docs-src/Sequenzdiagramme/Sequenzdiagram-PenTool.uxf diff --git a/docs/Sequenzdiagramme/Sequenzdiagram-PlainTool.uxf b/docs-src/Sequenzdiagramme/Sequenzdiagram-PlainTool.uxf similarity index 100% rename from docs/Sequenzdiagramme/Sequenzdiagram-PlainTool.uxf rename to docs-src/Sequenzdiagramme/Sequenzdiagram-PlainTool.uxf diff --git a/docs/ToDo/todo.org b/docs-src/ToDo/todo.org similarity index 100% rename from docs/ToDo/todo.org rename to docs-src/ToDo/todo.org diff --git a/docs/ToDo/todo.pdf b/docs-src/ToDo/todo.pdf similarity index 100% rename from docs/ToDo/todo.pdf rename to docs-src/ToDo/todo.pdf diff --git a/docs/UML.uxf b/docs-src/UML.uxf similarity index 95% rename from docs/UML.uxf rename to docs-src/UML.uxf index 7b6c53b..ec2c8c5 100644 --- a/docs/UML.uxf +++ b/docs-src/UML.uxf @@ -1,640 +1,640 @@ - - - 6 - - UMLClass - - 1338 - 84 - 192 - 120 - - /*IntelliImage*/ --- -#imageData: QImage --isFastRendering: Boolean --- -#resizeImage(image, newSize): void -+drawPixel(p1, color): void -+drawLine(p1, p2, color, penWidth): void -+drawPlain(color): void -/+getDisplayable(displaySize, alpha): QImage/ -+loadImage(fileName): Boolean -+getPixelColor(point): QColor -... - - - - UMLClass - - 1344 - 270 - 186 - 48 - - *IntelliRasterImage* --- --- -#calculateVisibility(): void -+getDisplayable(displaySize, alpha): QImage -... - - - - UMLClass - - 1338 - 438 - 192 - 90 - - *IntelliShapedImage* --- --triangles: vector<Triangle> -#polygonData: vector<QPoint> --- --calculateVisibility(): void -+getDisplayable(displaySize, alpha): QImage -+getPolygonData(): vector<QPoint> -+setPolygon(polygonData): void -... - - - - UMLClass - - 744 - 366 - 174 - 150 - - /*IntelliTool*/ --- -#Area: PaintingArea -#colorPicker: IntelliColorPicker -#Active: LayerObject -#Canvas: LayerObject -#drawing: Boolean -#ActiveType: Tooltype --- -/+onMouseRightPressed(x,y): void/ -/+onMouseLeftPressed(x,y): void/ -/+onMouseRightReleased(x,y): void/ -/+onMousLeftReleased(x,y): void/ -/+onWheelScrolled(value): void/ -/+onMouseMoved(x,y): void/ -... - - - - Relation - - 1392 - 198 - 18 - 84 - - lt=<<- - 10.0;10.0;10.0;120.0 - - - Relation - - 1392 - 312 - 18 - 138 - - lt=<<- - 10.0;10.0;10.0;210.0 - - - UMLClass - - 870 - 210 - 144 - 48 - - <<Enumeration>> -*ImageType* --- - RASTERIMAGE - SHAPEDIMAGE - - - - UMLClass - - 432 - 810 - 150 - 90 - - *IntelliToolFloodFill* --- --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - UMLClass - - 432 - 564 - 150 - 90 - - *IntelliToolPlain* --- --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - UMLClass - - 876 - 774 - 144 - 120 - - *IntelliToolGradient* --- --startPoint: QPoint --endPoint: QPoint --LineColor: QColor --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - UMLClass - - 1122 - 780 - 150 - 108 - - *IntelliToolRectangle* --- --alphaInner: Integer --edgeWidth: Integer --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - UMLClass - - 1128 - 642 - 144 - 120 - - *IntelliToolLine* --- --start: QPoint --lineWidth: Integer --lineStyle: LineStyle --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - UMLClass - - 672 - 768 - 150 - 126 - - *IntelliToolPolygon* --- --lineWidth: Integer --isDrawingOfPolygon: Boolean --PointIsNearStart: Boolean --alphaInner: Integer --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - Relation - - 816 - 510 - 210 - 276 - - lt=<<- - 10.0;10.0;330.0;440.0 - - - Relation - - 576 - 510 - 228 - 312 - - lt=<<- - 360.0;10.0;10.0;500.0 - - - Relation - - 498 - 510 - 264 - 66 - - lt=<<- - 420.0;10.0;10.0;90.0 - - - Relation - - 834 - 510 - 306 - 282 - - lt=<<- - 10.0;10.0;490.0;450.0 - - - Relation - - 858 - 510 - 282 - 144 - - lt=<<- - 10.0;10.0;450.0;220.0 - - - Relation - - 732 - 510 - 90 - 270 - - lt=<<- - 130.0;10.0;10.0;430.0 - - - UMLClass - - 432 - 684 - 150 - 120 - - *IntelliToolCircle* --- --Middle: QPoint --alphaInner: Integer --edgeWidth: Integer --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - Relation - - 576 - 510 - 216 - 186 - - lt=<<- - 340.0;10.0;10.0;290.0 - - - UMLClass - - 1164 - 84 - 168 - 246 - - *PaintingArea* --- --Canvas: QImage --maxWidth: Integer --maxHeigth: Integer --Tool: IntelliTool --colorPicker: IntelliColorPicker --layerBundle: vector<LayerObject> --activeLayer: Integer --- -+open(fileName): Boolean -+save(fileName, fileFormat): void -+addLayer(width, heigth, widthOffset, -heigthOffset, ImageType): Integer -+addLayerAt(idx, width, heigth, widthOffset, -heigthOffset, ImageType): Integer -+deleteLayer(index): void -+setLayerToActive(index): void -+movePositionActive(x,y): void -+moveActiveLayer(idx): void -+setAlphaOfLayer(index, alpha): void -+floodFill(r,g,b,a): void -+getWidthOfActive(): Integer -+getHeigthOfActive(): Integer --- - Also overrides every Inputevent and - creates every Tool. - -group=1 - - - - UMLClass - - 1020 - 84 - 138 - 90 - - <<dataType>> -*LayerObject* --- -+image: IntelliImage -+width: Integer -+heigth: Integer -+widthOffset: Integer -+heigthOffset: Integer -+alpha: Integer --- - - - - UMLClass - - 324 - 150 - 192 - 78 - - /*IntelliToolSetttings*/ --- --lineWidth: Integer --innerAlpha: Integer --- -+getInnerAlpha(): Integer -+setInnerAlpha( innerAlpha): void -+getLineWidth(): Integer -+setLineWidth( LineWidth): void - - - - UMLClass - - 522 - 84 - 150 - 90 - - /*IntelliColorPicker*/ --- --firstColor: QColor --secondColor: QColor --- -+switchColors(): void -+setFirstColor(Color): void -+setSecondColor(Color): void -+getFirstColor(): QColor -+getSecondColor(): QColor - - - - UMLClass - - 1020 - 180 - 138 - 60 - - <<dataType>> -*Triangle* --- -+A: QPoint -+B: QPoint -+C: QPoint --- - - - - UMLClass - - 1020 - 246 - 138 - 42 - - <<dataType>> -*QImage* --- --- --- - Handles the ImageData - - - - UMLClass - - 1020 - 294 - 138 - 42 - - <<dataType>> -*QPoint* --- --- --- - Handles points with x,y,z. - - - - UMLClass - - 1020 - 348 - 138 - 42 - - <<dataType>> -*QColor* --- --- --- - Cotains RGBA Color Data. - - - - UMLClass - - 1128 - 516 - 144 - 108 - - *IntelliToolPen* --- --penWidth: Integer --point: QPoint --- -+onMouseRightPressed(x,y): void -+onMouseLeftPressed(x,y): void -+onMouseRightReleased(x,y): void -+onMousLeftReleased(x,y): void -+onWheelScrolled(value): void -+onMouseMoved(x,y): void -... - - - - Relation - - 912 - 498 - 228 - 30 - - lt=<<- - 10.0;10.0;360.0;30.0 - - - UMLClass - - 870 - 84 - 144 - 114 - - <<Enumeration>> -*Tooltype* --- - CIRCLE - FLOODFILL - GRADIENT - LINE - PEN - PLAIN - POLYGON - RECTANGLE - NONE - - - - UMLClass - - 1020 - 408 - 138 - 54 - - <<dataType>> -*vector<T>* --- --- --- - Is a Vector of witch contains - data with equal type as type T. - - - - UMLClass - - 324 - 84 - 192 - 54 - - /*IntelliRenderSettings*/ --- --fastRendering: Boolean --- -+isFastRendering(): Boolean -+setFastRendering(Updatesetting): void - - - - UMLClass - - 324 - 240 - 192 - 54 - - /*IntelliTriangulation*/ --- --- -+isInTriangle(tri, P): Boolean -+calculateTriangles(polyPoints): vector<Triangle> -+isInPolygon(triangles, point): Boolean - - - - UMLClass - - 684 - 84 - 174 - 48 - - <<NAMESPACE>> -*IntelliDatamanager* --- - ::loadProject(Canvas, filePath): Boolean - ::saveProject(Canvas, filePath): Boolean - - - + + + 6 + + UMLClass + + 1338 + 84 + 192 + 120 + + /*IntelliImage*/ +-- +#imageData: QImage +-isFastRendering: Boolean +-- +#resizeImage(image, newSize): void ++drawPixel(p1, color): void ++drawLine(p1, p2, color, penWidth): void ++drawPlain(color): void +/+getDisplayable(displaySize, alpha): QImage/ ++loadImage(fileName): Boolean ++getPixelColor(point): QColor +... + + + + UMLClass + + 1344 + 270 + 186 + 48 + + *IntelliRasterImage* +-- +-- +#calculateVisibility(): void ++getDisplayable(displaySize, alpha): QImage +... + + + + UMLClass + + 1338 + 438 + 192 + 90 + + *IntelliShapedImage* +-- +-triangles: vector<Triangle> +#polygonData: vector<QPoint> +-- +-calculateVisibility(): void ++getDisplayable(displaySize, alpha): QImage ++getPolygonData(): vector<QPoint> ++setPolygon(polygonData): void +... + + + + UMLClass + + 744 + 366 + 174 + 150 + + /*IntelliTool*/ +-- +#Area: PaintingArea +#colorPicker: IntelliColorPicker +#Active: LayerObject +#Canvas: LayerObject +#drawing: Boolean +#ActiveType: Tooltype +-- +/+onMouseRightPressed(x,y): void/ +/+onMouseLeftPressed(x,y): void/ +/+onMouseRightReleased(x,y): void/ +/+onMousLeftReleased(x,y): void/ +/+onWheelScrolled(value): void/ +/+onMouseMoved(x,y): void/ +... + + + + Relation + + 1392 + 198 + 18 + 84 + + lt=<<- + 10.0;10.0;10.0;120.0 + + + Relation + + 1392 + 312 + 18 + 138 + + lt=<<- + 10.0;10.0;10.0;210.0 + + + UMLClass + + 870 + 210 + 144 + 48 + + <<Enumeration>> +*ImageType* +-- + RASTERIMAGE + SHAPEDIMAGE + + + + UMLClass + + 432 + 810 + 150 + 90 + + *IntelliToolFloodFill* +-- +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + UMLClass + + 432 + 564 + 150 + 90 + + *IntelliToolPlain* +-- +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + UMLClass + + 876 + 774 + 144 + 120 + + *IntelliToolGradient* +-- +-startPoint: QPoint +-endPoint: QPoint +-LineColor: QColor +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + UMLClass + + 1122 + 780 + 150 + 108 + + *IntelliToolRectangle* +-- +-alphaInner: Integer +-edgeWidth: Integer +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + UMLClass + + 1128 + 642 + 144 + 120 + + *IntelliToolLine* +-- +-start: QPoint +-lineWidth: Integer +-lineStyle: LineStyle +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + UMLClass + + 672 + 768 + 150 + 126 + + *IntelliToolPolygon* +-- +-lineWidth: Integer +-isDrawingOfPolygon: Boolean +-PointIsNearStart: Boolean +-alphaInner: Integer +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + Relation + + 816 + 510 + 210 + 276 + + lt=<<- + 10.0;10.0;330.0;440.0 + + + Relation + + 576 + 510 + 228 + 312 + + lt=<<- + 360.0;10.0;10.0;500.0 + + + Relation + + 498 + 510 + 264 + 66 + + lt=<<- + 420.0;10.0;10.0;90.0 + + + Relation + + 834 + 510 + 306 + 282 + + lt=<<- + 10.0;10.0;490.0;450.0 + + + Relation + + 858 + 510 + 282 + 144 + + lt=<<- + 10.0;10.0;450.0;220.0 + + + Relation + + 732 + 510 + 90 + 270 + + lt=<<- + 130.0;10.0;10.0;430.0 + + + UMLClass + + 432 + 684 + 150 + 120 + + *IntelliToolCircle* +-- +-Middle: QPoint +-alphaInner: Integer +-edgeWidth: Integer +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + Relation + + 576 + 510 + 216 + 186 + + lt=<<- + 340.0;10.0;10.0;290.0 + + + UMLClass + + 1164 + 84 + 168 + 246 + + *PaintingArea* +-- +-Canvas: QImage +-maxWidth: Integer +-maxHeigth: Integer +-Tool: IntelliTool +-colorPicker: IntelliColorPicker +-layerBundle: vector<LayerObject> +-activeLayer: Integer +-- ++open(fileName): Boolean ++save(fileName, fileFormat): void ++addLayer(width, heigth, widthOffset, +heigthOffset, ImageType): Integer ++addLayerAt(idx, width, heigth, widthOffset, +heigthOffset, ImageType): Integer ++deleteLayer(index): void ++setLayerToActive(index): void ++movePositionActive(x,y): void ++moveActiveLayer(idx): void ++setAlphaOfLayer(index, alpha): void ++floodFill(r,g,b,a): void ++getWidthOfActive(): Integer ++getHeigthOfActive(): Integer +-- + Also overrides every Inputevent and + creates every Tool. + +group=1 + + + + UMLClass + + 1020 + 84 + 138 + 90 + + <<dataType>> +*LayerObject* +-- ++image: IntelliImage ++width: Integer ++heigth: Integer ++widthOffset: Integer ++heigthOffset: Integer ++alpha: Integer +-- + + + + UMLClass + + 324 + 150 + 192 + 78 + + /*IntelliToolSetttings*/ +-- +-lineWidth: Integer +-innerAlpha: Integer +-- ++getInnerAlpha(): Integer ++setInnerAlpha( innerAlpha): void ++getLineWidth(): Integer ++setLineWidth( LineWidth): void + + + + UMLClass + + 522 + 84 + 150 + 90 + + /*IntelliColorPicker*/ +-- +-firstColor: QColor +-secondColor: QColor +-- ++switchColors(): void ++setFirstColor(Color): void ++setSecondColor(Color): void ++getFirstColor(): QColor ++getSecondColor(): QColor + + + + UMLClass + + 1020 + 180 + 138 + 60 + + <<dataType>> +*Triangle* +-- ++A: QPoint ++B: QPoint ++C: QPoint +-- + + + + UMLClass + + 1020 + 246 + 138 + 42 + + <<dataType>> +*QImage* +-- +-- +-- + Handles the ImageData + + + + UMLClass + + 1020 + 294 + 138 + 42 + + <<dataType>> +*QPoint* +-- +-- +-- + Handles points with x,y,z. + + + + UMLClass + + 1020 + 348 + 138 + 42 + + <<dataType>> +*QColor* +-- +-- +-- + Cotains RGBA Color Data. + + + + UMLClass + + 1128 + 516 + 144 + 108 + + *IntelliToolPen* +-- +-penWidth: Integer +-point: QPoint +-- ++onMouseRightPressed(x,y): void ++onMouseLeftPressed(x,y): void ++onMouseRightReleased(x,y): void ++onMousLeftReleased(x,y): void ++onWheelScrolled(value): void ++onMouseMoved(x,y): void +... + + + + Relation + + 912 + 498 + 228 + 30 + + lt=<<- + 10.0;10.0;360.0;30.0 + + + UMLClass + + 870 + 84 + 144 + 114 + + <<Enumeration>> +*Tooltype* +-- + CIRCLE + FLOODFILL + GRADIENT + LINE + PEN + PLAIN + POLYGON + RECTANGLE + NONE + + + + UMLClass + + 1020 + 408 + 138 + 54 + + <<dataType>> +*vector<T>* +-- +-- +-- + Is a Vector of witch contains + data with equal type as type T. + + + + UMLClass + + 324 + 84 + 192 + 54 + + /*IntelliRenderSettings*/ +-- +-fastRendering: Boolean +-- ++isFastRendering(): Boolean ++setFastRendering(Updatesetting): void + + + + UMLClass + + 324 + 240 + 192 + 54 + + /*IntelliTriangulation*/ +-- +-- ++isInTriangle(tri, P): Boolean ++calculateTriangles(polyPoints): vector<Triangle> ++isInPolygon(triangles, point): Boolean + + + + UMLClass + + 684 + 84 + 174 + 48 + + <<NAMESPACE>> +*IntelliDatamanager* +-- + ::loadProject(Canvas, filePath): Boolean + ::saveProject(Canvas, filePath): Boolean + + + diff --git a/docs/UnitTest_Benchmark.xlsx b/docs-src/UnitTest_Benchmark.xlsx similarity index 100% rename from docs/UnitTest_Benchmark.xlsx rename to docs-src/UnitTest_Benchmark.xlsx diff --git a/docs/Use Case/Use_Case_1.uxf b/docs-src/Use Case/Use_Case_1.uxf similarity index 100% rename from docs/Use Case/Use_Case_1.uxf rename to docs-src/Use Case/Use_Case_1.uxf diff --git a/docs/Use Case/Use_Case_2.uxf b/docs-src/Use Case/Use_Case_2.uxf similarity index 100% rename from docs/Use Case/Use_Case_2.uxf rename to docs-src/Use Case/Use_Case_2.uxf diff --git a/docs/Volere Snow Cards/Req_0001.txt b/docs-src/Volere Snow Cards/Req_0001.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0001.txt rename to docs-src/Volere Snow Cards/Req_0001.txt diff --git a/docs/Volere Snow Cards/Req_0002.txt b/docs-src/Volere Snow Cards/Req_0002.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0002.txt rename to docs-src/Volere Snow Cards/Req_0002.txt diff --git a/docs/Volere Snow Cards/Req_0003.txt b/docs-src/Volere Snow Cards/Req_0003.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0003.txt rename to docs-src/Volere Snow Cards/Req_0003.txt diff --git a/docs/Volere Snow Cards/Req_0004.txt b/docs-src/Volere Snow Cards/Req_0004.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0004.txt rename to docs-src/Volere Snow Cards/Req_0004.txt diff --git a/docs/Volere Snow Cards/Req_0005.txt b/docs-src/Volere Snow Cards/Req_0005.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0005.txt rename to docs-src/Volere Snow Cards/Req_0005.txt diff --git a/docs/Volere Snow Cards/Req_0006.txt b/docs-src/Volere Snow Cards/Req_0006.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0006.txt rename to docs-src/Volere Snow Cards/Req_0006.txt diff --git a/docs/Volere Snow Cards/Req_0007.txt b/docs-src/Volere Snow Cards/Req_0007.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0007.txt rename to docs-src/Volere Snow Cards/Req_0007.txt diff --git a/docs/Volere Snow Cards/Req_0008.txt b/docs-src/Volere Snow Cards/Req_0008.txt similarity index 100% rename from docs/Volere Snow Cards/Req_0008.txt rename to docs-src/Volere Snow Cards/Req_0008.txt diff --git a/docs/Zustandsdiagramm/Zustandsiagram-Layer-Color.uxf b/docs-src/Zustandsdiagramm/Zustandsiagram-Layer-Color.uxf similarity index 100% rename from docs/Zustandsdiagramm/Zustandsiagram-Layer-Color.uxf rename to docs-src/Zustandsdiagramm/Zustandsiagram-Layer-Color.uxf diff --git a/docs/Zustandsdiagramm/Zustandsiagram-Tool.uxf b/docs-src/Zustandsdiagramm/Zustandsiagram-Tool.uxf similarity index 100% rename from docs/Zustandsdiagramm/Zustandsiagram-Tool.uxf rename to docs-src/Zustandsdiagramm/Zustandsiagram-Tool.uxf diff --git a/docs-src/html/_intelli_color_picker_8cpp.html b/docs-src/html/_intelli_color_picker_8cpp.html new file mode 100644 index 0000000..5962e3b --- /dev/null +++ b/docs-src/html/_intelli_color_picker_8cpp.html @@ -0,0 +1,104 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliColorPicker.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.cpp File Reference
+
+ +
+ + + + diff --git a/docs-src/html/_intelli_color_picker_8cpp_source.html b/docs-src/html/_intelli_color_picker_8cpp_source.html new file mode 100644 index 0000000..8b8d5ff --- /dev/null +++ b/docs-src/html/_intelli_color_picker_8cpp_source.html @@ -0,0 +1,143 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliColorPicker.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliColorPicker.h"
+
2 
+ +
4  initializeColors();
+
5 }
+
6 
+ +
8 
+
9 }
+
10 
+ +
12  std::swap(firstColor, secondColor);
+
13 }
+
14 
+ +
16  return this->firstColor;
+
17 }
+
18 
+ +
20  return this->secondColor;
+
21 }
+
22 
+ +
24  this->firstColor = Color;
+
25 }
+
26 
+ +
28  this->secondColor = Color;
+
29 }
+
30 
+
31 void IntelliColorPicker::initializeColors(){
+
32  this->firstColor = QColor(255,0,0,255);
+
33  this->secondColor = QColor(0,0,0,255);
+
34 }
+
+
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual ~IntelliColorPicker()
IntelliColorPicker destructor clears up his used memory, if there is some.
+
void setSecondColor(QColor Color)
A function to set the secondary color.
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
+
void setFirstColor(QColor Color)
A function to set the primary color.
+
void swapColors()
A function switching primary and secondary color.
+
IntelliColorPicker()
IntelliColorPicker constructor, setting 2 preset colors, be careful, theese color may change in produ...
+ + + + diff --git a/docs-src/html/_intelli_color_picker_8h.html b/docs-src/html/_intelli_color_picker_8h.html new file mode 100644 index 0000000..c1b1408 --- /dev/null +++ b/docs-src/html/_intelli_color_picker_8h.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliColorPicker.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliColorPicker.h File Reference
+
+
+
#include "QColor"
+#include "QPoint"
+#include "QColorDialog"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliColorPicker
 The IntelliColorPicker manages the selected colors for one whole project. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_color_picker_8h__dep__incl.dot b/docs-src/html/_intelli_color_picker_8h__dep__incl.dot new file mode 100644 index 0000000..154a774 --- /dev/null +++ b/docs-src/html/_intelli_color_picker_8h__dep__incl.dot @@ -0,0 +1,65 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliColorPicker.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliColorPicker.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Intelli\lHelper/IntelliColorPicker.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_helper_2_intelli_color_picker_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node3 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node3 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node3 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node3 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node1 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliColorPicker.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_tool_2_intelli_color_picker_8cpp.html",tooltip=" "]; + Node1 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node15 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/Tool\l/IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8h.html",tooltip=" "]; + Node16 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8h.html",tooltip=" "]; + Node17 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="intelliphoto/src/Tool\l/IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8h.html",tooltip=" "]; + Node18 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="intelliphoto/src/Tool\l/IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8h.html",tooltip=" "]; + Node19 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="intelliphoto/src/Tool\l/IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8h.html",tooltip=" "]; + Node20 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node21 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8h.html",tooltip=" "]; + Node22 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_color_picker_8h__incl.dot b/docs-src/html/_intelli_color_picker_8h__incl.dot new file mode 100644 index 0000000..4c74e72 --- /dev/null +++ b/docs-src/html/_intelli_color_picker_8h__incl.dot @@ -0,0 +1,13 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliColorPicker.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliColorPicker.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_color_picker_8h_source.html b/docs-src/html/_intelli_color_picker_8h_source.html new file mode 100644 index 0000000..4c94c90 --- /dev/null +++ b/docs-src/html/_intelli_color_picker_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliColorPicker.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLSETCOLORTOOL_H
+
2 #define INTELLITOOLSETCOLORTOOL_H
+
3 
+
4 #include "QColor"
+
5 #include "QPoint"
+
6 #include "QColorDialog"
+
7 
+
8 //for unit testing
+
9 class UnitTest;
+
10 
+ +
15 friend UnitTest;
+
16 public:
+ +
21 
+
25 virtual ~IntelliColorPicker();
+
26 
+
30 void swapColors();
+
31 
+
36 QColor getFirstColor() const;
+
37 
+
42 QColor getSecondColor() const;
+
43 
+
48 void setFirstColor(QColor Color);
+
49 
+
54 void setSecondColor(QColor Color);
+
55 
+
56 private:
+
60 QColor firstColor;
+
61 
+
65 QColor secondColor;
+
66 
+
70 void initializeColors();
+
71 };
+
72 
+
73 #endif
+
+
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual ~IntelliColorPicker()
IntelliColorPicker destructor clears up his used memory, if there is some.
+
void setSecondColor(QColor Color)
A function to set the secondary color.
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
void setFirstColor(QColor Color)
A function to set the primary color.
+
The IntelliColorPicker manages the selected colors for one whole project.
+
Definition: mainUnitTest.cpp:8
+
void swapColors()
A function switching primary and secondary color.
+
IntelliColorPicker()
IntelliColorPicker constructor, setting 2 preset colors, be careful, theese color may change in produ...
+ + + + diff --git a/docs-src/html/_intelli_datamanager_8cpp.html b/docs-src/html/_intelli_datamanager_8cpp.html new file mode 100644 index 0000000..d720eb0 --- /dev/null +++ b/docs-src/html/_intelli_datamanager_8cpp.html @@ -0,0 +1,105 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliDatamanager.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliDatamanager.cpp File Reference
+
+ +
+ + + + diff --git a/docs-src/html/_intelli_datamanager_8cpp_source.html b/docs-src/html/_intelli_datamanager_8cpp_source.html new file mode 100644 index 0000000..935572b --- /dev/null +++ b/docs-src/html/_intelli_datamanager_8cpp_source.html @@ -0,0 +1,219 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliDatamanager.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliDatamanager.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliDatamanager.h"
+
2 #include "Layer/PaintingArea.h"
+
3 
+
4 bool IntelliDatamanager::saveProject(PaintingArea* Canvas, QString filePath){
+
5  QFile openFile(filePath);
+
6 
+
7  if(openFile.open(QIODevice::WriteOnly)) {
+
8 
+
9  QTextStream out(&openFile);
+
10  std::vector<LayerObject>* layerBundle = Canvas->getLayerBundle();
+
11  size_t numberOfLayers = layerBundle->size();
+
12  out << 7 << endl; //version tag
+
13  out << Canvas->getRenderSettings() << " ";
+
14  out << Canvas->getMaxWidth() << " " << Canvas->getMaxHeight() << endl; //dimensions of canvas
+
15  out << numberOfLayers << endl; //number of layers
+
16  for(size_t i = 0; i<numberOfLayers; i++) {
+
17  int width = layerBundle->at(i).width;
+
18  int height = layerBundle->at(i).height;
+
19  out << width << endl; //width
+
20  out << height << endl; //height
+
21  out << layerBundle->at(i).widthOffset << endl; //widthOffset
+
22  out << layerBundle->at(i).heightOffset << endl; //HeightOffset
+
23  out << layerBundle->at(i).alpha << endl; //alpha of layer
+
24  if(layerBundle->at(i).image->getTypeOfImage() == ImageType::RASTERIMAGE) {
+
25  out << 0 << " ";
+
26  }else{
+
27  out << 1 << " ";
+
28  }
+
29  std::vector<QPoint> points = layerBundle->at(i).image->getPolygonData();
+
30  out << points.size() << " ";
+
31  for(size_t j = 0; j<points.size(); j++) {
+
32  out << points.at(j).x() << " " << points.at(j).y() << " ";
+
33  }
+
34  for(int j = 0; j<height; j++) {
+
35  for(int k = 0; k<width; k++) {
+
36  QColor pixColor = layerBundle->at(i).image->getImageData().pixelColor(j,k);
+
37  out << pixColor.red() << " " << pixColor.green() << " " << pixColor.blue() << " " << pixColor.alpha() << " ";
+
38  }
+
39  }
+
40 
+
41  }
+
42  out << "\nFormat designed and approved by IntelliPhoto Team 7. All rigths reserved.";
+
43  openFile.close();
+
44  return true;
+
45  }
+
46 
+
47  return false;
+
48 }
+
49 
+
50 bool IntelliDatamanager::loadProject(PaintingArea* Canvas, QString filePath){
+
51  QFile openFile(filePath);
+
52  Canvas->deleteAllLayers();
+
53  if(openFile.open(QIODevice::ReadOnly)) {
+
54  QTextStream in(&openFile);
+
55 
+
56  float version;
+
57  int rendersetting;
+
58  int widthCanvas, heightCanvas, numberOffLayers;
+
59  in >> version;
+
60  in >> rendersetting;
+
61  in >> widthCanvas >> heightCanvas;
+
62  in >> numberOffLayers;
+
63 
+
64  Canvas->setCanvasDimensions(widthCanvas, heightCanvas);
+
65  for(int i = 0; i<numberOffLayers; i++) {
+
66  int width, height, widthOffset, heightOffset, alpha;
+
67  in >> width >> height >> widthOffset >> heightOffset >> alpha;
+
68 
+
69  int typeFlag;
+
70  size_t numberOfPoints;
+
71  std::vector<QPoint> polyPoints;
+
72 
+
73  in >> typeFlag >> numberOfPoints;
+
74  if(typeFlag==0) {
+
75  Canvas->addLayer(width, height, widthOffset, heightOffset, alpha, ImageType::RASTERIMAGE);
+
76  }else{
+
77  Canvas->addLayer(width, height, widthOffset, heightOffset, alpha, ImageType::SHAPEDIMAGE);
+
78  }
+
79  polyPoints.reserve(numberOfPoints);
+
80  for(size_t j = 0; j<numberOfPoints; j++) {
+
81  int x, y;
+
82  in >> x >> y;
+
83  polyPoints.push_back(QPoint(x,y));
+
84  }
+
85  Canvas->setPolygonDataToActive(polyPoints);
+
86 
+
87  for(int j = 0; j<height; j++) {
+
88  for(int k = 0; k<width; k++) {
+
89  int red, green, blue, alpha;
+
90  in >> red >> green >> blue >> alpha;
+
91  Canvas->drawPixelOntoActive(QColor(red, green, blue, alpha), QPoint(j, k));
+
92  }
+
93  }
+
94  }
+
95  Canvas->setRenderSettings(static_cast<bool>(rendersetting));
+
96  openFile.close();
+
97  return true;
+
98  }
+
99 
+
100  return false;
+
101 }
+
+
+
@ RASTERIMAGE
+
void setRenderSettings(bool isFastRenderingOn)
setRenderSettings updates all Images to the new Rendersetting.
+
int getMaxWidth()
getMaxWidth gets the max width of the Canvas.
+
bool loadProject(PaintingArea *Canvas, QString filePath="unnamed.idf")
loadProject loads a project from a file, closes current project.
+
int getMaxHeight()
getMaxHeight gets the max height of the Canvas.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
void drawPixelOntoActive(QColor color, QPoint point)
drawPixelOntoActive draws a pixel onto the image data of the active Layer.
+
std::vector< LayerObject > * getLayerBundle()
getLayerBundle returns the real active layerbundle (care!)
+
@ SHAPEDIMAGE
+
+
void deleteAllLayers()
deleteAllLayers deletes all layers
+
void setCanvasDimensions(int maxWidth, int maxHeight)
setCanvasDimensions sets the dimension of the Canvas
+
bool saveProject(PaintingArea *Canvas, QString filePath="unnamed.idf")
saveProject saves the current project to a file.
+
bool getRenderSettings()
getRenderSettings updates all Images to the new Rendersetting.
+
int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)
The addLayer adds a layer to the current project/ painting area.
+
void setPolygonDataToActive(std::vector< QPoint > points)
setPolygonDataToActive sets polygondata to the active Layer.
+
+ + + + diff --git a/docs-src/html/_intelli_datamanager_8h.html b/docs-src/html/_intelli_datamanager_8h.html new file mode 100644 index 0000000..cfe6b8a --- /dev/null +++ b/docs-src/html/_intelli_datamanager_8h.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliDatamanager.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliDatamanager.h File Reference
+
+
+
#include <QFile>
+#include <QDebug>
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

 IntelliDatamanager
 
+ + + + + + + +

+Functions

bool IntelliDatamanager::loadProject (PaintingArea *Canvas, QString filePath="unnamed.idf")
 loadProject loads a project from a file, closes current project. More...
 
bool IntelliDatamanager::saveProject (PaintingArea *Canvas, QString filePath="unnamed.idf")
 saveProject saves the current project to a file. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_datamanager_8h.js b/docs-src/html/_intelli_datamanager_8h.js new file mode 100644 index 0000000..e31fa0f --- /dev/null +++ b/docs-src/html/_intelli_datamanager_8h.js @@ -0,0 +1,5 @@ +var _intelli_datamanager_8h = +[ + [ "loadProject", "_intelli_datamanager_8h.html#a41920e07aa9e0b2756323779f7fe8de2", null ], + [ "saveProject", "_intelli_datamanager_8h.html#ac02f6f47ff8785ad9d49588baaca3d54", null ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_datamanager_8h_source.html b/docs-src/html/_intelli_datamanager_8h_source.html new file mode 100644 index 0000000..603f53d --- /dev/null +++ b/docs-src/html/_intelli_datamanager_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliDatamanager.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliDatamanager.h
+
+
+Go to the documentation of this file.
1  #ifndef INTELLIDATAMANAGER_H
+
2 #define INTELLIDATAMANAGER_H
+
3 
+
4 #include <QFile>
+
5 #include <QDebug>
+
6 
+
7 class PaintingArea;
+
8 
+
9 namespace IntelliDatamanager {
+
10 
+
17 bool loadProject(PaintingArea* Canvas, QString filePath = "unnamed.idf");
+
18 
+
25 bool saveProject(PaintingArea* Canvas, QString filePath = "unnamed.idf");
+
26 
+
27 }
+
28 
+
29 #endif // INTELLIDATAMANAGER_H
+
+
+
+
bool loadProject(PaintingArea *Canvas, QString filePath="unnamed.idf")
loadProject loads a project from a file, closes current project.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool saveProject(PaintingArea *Canvas, QString filePath="unnamed.idf")
saveProject saves the current project to a file.
+ + + + diff --git a/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp.html b/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp.html new file mode 100644 index 0000000..c91b3b8 --- /dev/null +++ b/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp.html @@ -0,0 +1,104 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliColorPicker.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.cpp File Reference
+
+ +
+ + + + diff --git a/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp__incl.dot b/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp__incl.dot new file mode 100644 index 0000000..3dfeb55 --- /dev/null +++ b/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp__incl.dot @@ -0,0 +1,15 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliColorPicker.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliColorPicker.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp_source.html b/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp_source.html new file mode 100644 index 0000000..5ff0ba5 --- /dev/null +++ b/docs-src/html/_intelli_helper_2_intelli_color_picker_8cpp_source.html @@ -0,0 +1,139 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliColorPicker.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliColorPicker.h"
+
2 
+ +
4  firstColor = {255,0,0,255};
+
5  secondColor = {0,255,255,255};
+
6 }
+
7 
+ +
9 
+
10 }
+
11 
+ +
13  std::swap(firstColor, secondColor);
+
14 }
+
15 
+ +
17  return this->firstColor;
+
18 }
+
19 
+ +
21  return this->secondColor;
+
22 }
+
23 
+ +
25  this->firstColor = Color;
+
26 }
+
27 
+ +
29  this->secondColor = Color;
+
30 }
+
+
+
virtual ~IntelliColorPicker()
IntelliColorPicker destructor clears up his used memory, if there is some.
+
void setSecondColor(QColor Color)
A function to set the secondary color.
+
QColor getSecondColor()
A function to read the secondary selected color.
+
+
void setFirstColor(QColor Color)
A function to set the primary color.
+
QColor getFirstColor()
A function to read the primary selected color.
+
void swapColors()
A function switching primary and secondary color.
+
IntelliColorPicker()
IntelliColorPicker constructor, setting 2 preset colors, be careful, theese color may change in produ...
+ + + + diff --git a/docs-src/html/_intelli_helper_8cpp.html b/docs-src/html/_intelli_helper_8cpp.html new file mode 100644 index 0000000..c4f89ed --- /dev/null +++ b/docs-src/html/_intelli_helper_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/IntelliHelper/IntelliHelper.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliHelper.cpp File Reference
+
+
+
#include "IntelliHelper.h"
+#include <algorithm>
+#include <queue>
+#include <cmath>
+
+Include dependency graph for IntelliHelper.cpp:
+
+
+
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_helper_8cpp__incl.dot b/docs-src/html/_intelli_helper_8cpp__incl.dot new file mode 100644 index 0000000..3f3ebd7 --- /dev/null +++ b/docs-src/html/_intelli_helper_8cpp__incl.dot @@ -0,0 +1,19 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliHelper.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliHelper.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_helper_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="algorithm",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="queue",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="cmath",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_helper_8cpp_source.html b/docs-src/html/_intelli_helper_8cpp_source.html new file mode 100644 index 0000000..1b67b46 --- /dev/null +++ b/docs-src/html/_intelli_helper_8cpp_source.html @@ -0,0 +1,236 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/IntelliHelper/IntelliHelper.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliHelper.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliHelper.h"
+
2 #include <algorithm>
+
3 #include <queue>
+
4 #include <cmath>
+
5 
+
6 
+
7 std::vector<Triangle> IntelliHelper::calculateTriangles(std::vector<QPoint> polyPoints){
+
8  // helper for managing the triangle vertices and their state
+
9  struct TriangleHelper {
+
10  QPoint vertex;
+
11  float interiorAngle;
+
12  int index;
+
13  bool isTip;
+
14  };
+
15 
+
16  // calculates the inner angle of 'point'
+
17  auto calculateInner = [](QPoint& point, QPoint& prev, QPoint& post){
+
18  QPoint AP(point.x()-prev.x(), point.y()-prev.y());
+
19  QPoint BP(point.x()-post.x(), point.y()-post.y());
+
20 
+
21  float topSclar = AP.x()*BP.x()+AP.y()*BP.y();
+
22  float absolute = sqrt(pow(AP.x(),2.)+pow(AP.y(),2.))*sqrt(pow(BP.x(),2.)+pow(BP.y(),2.));
+
23  return acos(topSclar/absolute);
+
24  };
+
25 
+
26  // gets the first element of vec for which element.isTip == true holds
+
27  auto getTip= [](const std::vector<TriangleHelper>& vec){
+
28  size_t min = 0;
+
29  for(size_t i=0; i<vec.size(); i++) {
+
30  if(vec[i].interiorAngle<vec[min].interiorAngle) {
+
31  min = i;
+
32  }
+
33  }
+
34  return vec[min];
+
35  };
+
36 
+
37  // get the vertex Index bevor index in relation to the container length
+
38  auto getPrev = [](int index, int length){
+
39  return (index-1)>=0 ? (index-1) : (length-1);
+
40  };
+
41 
+
42  // get the vertex Index after index in relation to the container lenght
+
43  auto getPost = [](int index, int length){
+
44  return (index+1)%length;
+
45  };
+
46 
+
47  // return if the vertex is a tip
+
48  auto isTip = [](float angle){
+
49  return static_cast<double>(angle)<(M_PI/2.);
+
50  };
+
51 
+
52  std::vector<TriangleHelper> Vertices;
+
53  std::vector<Triangle> Triangles;
+
54 
+
55  // set up all vertices and calculate intirior angle
+
56  for(int i=0; i<static_cast<int>(polyPoints.size()); i++) {
+
57  TriangleHelper helper;
+
58  int prev = getPrev(i, static_cast<int>(polyPoints.size()));
+
59  int post = getPost(i, static_cast<int>(polyPoints.size()));
+
60 
+
61  helper.vertex = polyPoints[static_cast<size_t>(i)];
+
62  helper.index = i;
+
63 
+
64  helper.interiorAngle = calculateInner(polyPoints[static_cast<size_t>(i)],
+
65  polyPoints[static_cast<size_t>(prev)],
+
66  polyPoints[static_cast<size_t>(post)]);
+
67  helper.isTip = isTip(helper.interiorAngle);
+
68  Vertices.push_back(helper);
+
69  }
+
70 
+
71  // search triangles based on the intirior angles of each vertey
+
72  while(Triangles.size() != polyPoints.size()-2) {
+
73  Triangle tri;
+
74  TriangleHelper smallest = getTip(Vertices);
+
75  int prev = getPrev(smallest.index, static_cast<int>(Vertices.size()));
+
76  int post = getPost(smallest.index, static_cast<int>(Vertices.size()));
+
77 
+
78  // set triangle and push it
+
79  tri.A = Vertices[static_cast<size_t>(prev)].vertex;
+
80  tri.B = Vertices[static_cast<size_t>(smallest.index)].vertex;
+
81  tri.C = Vertices[static_cast<size_t>(post)].vertex;
+
82  Triangles.push_back(tri);
+
83 
+
84  // update Vertice array
+
85  Vertices.erase(Vertices.begin()+smallest.index);
+
86  for(size_t i=static_cast<size_t>(smallest.index); i<Vertices.size(); i++) {
+
87  Vertices[i].index-=1;
+
88  }
+
89 
+
90  // update post und prev index
+
91  post = post-1;
+
92  prev = prev<smallest.index ? prev : (prev-1);
+
93 
+
94  // calcultae neighboors of prev and post to calculate new interior angles
+
95  int prevOfPrev = getPrev(prev, static_cast<int>(Vertices.size()));
+
96  int postOfPrev = getPost(prev, static_cast<int>(Vertices.size()));
+
97 
+
98  int prevOfPost = getPrev(post, static_cast<int>(Vertices.size()));
+
99  int postOfPost = getPost(post, static_cast<int>(Vertices.size()));
+
100 
+
101  // update vertices with interior angles
+
102  // updtae prev
+
103  Vertices[static_cast<size_t>(prev)].interiorAngle = calculateInner(Vertices[static_cast<size_t>(prev)].vertex,
+
104  Vertices[static_cast<size_t>(prevOfPrev)].vertex,
+
105  Vertices[static_cast<size_t>(postOfPrev)].vertex);
+
106  Vertices[static_cast<size_t>(prev)].isTip = isTip(Vertices[static_cast<size_t>(prev)].interiorAngle);
+
107  // update post
+
108  Vertices[static_cast<size_t>(post)].interiorAngle = calculateInner(Vertices[static_cast<size_t>(post)].vertex,
+
109  Vertices[static_cast<size_t>(prevOfPost)].vertex,
+
110  Vertices[static_cast<size_t>(postOfPost)].vertex);
+
111  Vertices[static_cast<size_t>(post)].isTip = isTip(Vertices[static_cast<size_t>(post)].interiorAngle);
+
112  }
+
113  return Triangles;
+
114 }
+
115 
+
116 bool IntelliHelper::isInPolygon(std::vector<Triangle> &triangles, QPoint &point){
+
117  for(auto triangle : triangles) {
+
118  if(IntelliHelper::isInTriangle(triangle, point)) {
+
119  return true;
+
120  }
+
121  }
+
122  return false;
+
123 }
+
+
+
bool isInTriangle(Triangle &tri, QPoint &P)
A function to check if a given point is in a triangle.
Definition: IntelliHelper.h:33
+
+
QPoint B
Definition: IntelliHelper.h:11
+
QPoint C
Definition: IntelliHelper.h:11
+
The Triangle struct holds the 3 vertices of a triangle.
Definition: IntelliHelper.h:10
+
bool isInPolygon(std::vector< Triangle > &triangles, QPoint &point)
A function to check if a point lies in a polygon by checking its spanning triangles.
+
QPoint A
Definition: IntelliHelper.h:11
+
std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
+ + + + diff --git a/docs-src/html/_intelli_helper_8h.html b/docs-src/html/_intelli_helper_8h.html new file mode 100644 index 0000000..f0a631b --- /dev/null +++ b/docs-src/html/_intelli_helper_8h.html @@ -0,0 +1,150 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/IntelliHelper/IntelliHelper.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliHelper.h File Reference
+
+
+
#include <QPoint>
+#include <vector>
+
+Include dependency graph for IntelliHelper.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  Triangle
 The Triangle struct holds the 3 vertices of a triangle. More...
 
+ + + +

+Namespaces

 IntelliHelper
 
+ + + + + + + + + + + + + +

+Functions

float IntelliHelper::sign (QPoint &p1, QPoint &p2, QPoint &p3)
 A function to get the 2*area of a traingle, using its determinat. More...
 
bool IntelliHelper::isInTriangle (Triangle &tri, QPoint &P)
 A function to check if a given point is in a triangle. More...
 
std::vector< TriangleIntelliHelper::calculateTriangles (std::vector< QPoint > polyPoints)
 A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by clipping ears of a planar graph. More...
 
bool IntelliHelper::isInPolygon (std::vector< Triangle > &triangles, QPoint &point)
 A function to check if a point lies in a polygon by checking its spanning triangles. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_helper_8h.js b/docs-src/html/_intelli_helper_8h.js new file mode 100644 index 0000000..769083d --- /dev/null +++ b/docs-src/html/_intelli_helper_8h.js @@ -0,0 +1,8 @@ +var _intelli_helper_8h = +[ + [ "Triangle", "struct_triangle.html", "struct_triangle" ], + [ "calculateTriangles", "_intelli_helper_8h.html#a214dc3624ba4562a03dc922e3dd7b617", null ], + [ "isInPolygon", "_intelli_helper_8h.html#a44d516b3e619e2a743e9c98dd75cf901", null ], + [ "isInTriangle", "_intelli_helper_8h.html#a9fcfe72f00e870be4a8ab9f2e17483c9", null ], + [ "sign", "_intelli_helper_8h.html#afdd9fe78cc5d21b59642910220768149", null ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_helper_8h__dep__incl.dot b/docs-src/html/_intelli_helper_8h__dep__incl.dot new file mode 100644 index 0000000..a439ef7 --- /dev/null +++ b/docs-src/html/_intelli_helper_8h__dep__incl.dot @@ -0,0 +1,43 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliHelper.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliHelper.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node4 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node4 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node4 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node4 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node4 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node4 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node4 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Intelli\lHelper/IntelliHelper.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_helper_8cpp.html",tooltip=" "]; + Node1 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/main.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$main_8cpp.html",tooltip=" "]; + Node1 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node17 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_helper_8h__incl.dot b/docs-src/html/_intelli_helper_8h__incl.dot new file mode 100644 index 0000000..cce00ee --- /dev/null +++ b/docs-src/html/_intelli_helper_8h__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliHelper.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliHelper.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_helper_8h_source.html b/docs-src/html/_intelli_helper_8h_source.html new file mode 100644 index 0000000..c6c3d54 --- /dev/null +++ b/docs-src/html/_intelli_helper_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/IntelliHelper/IntelliHelper.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliHelper.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLIHELPER_H
+
2 #define INTELLIHELPER_H
+
3 
+
4 #include <QPoint>
+
5 #include <vector>
+
6 
+
10 struct Triangle {
+
11  QPoint A,B,C;
+
12 };
+
13 
+
14 namespace IntelliHelper {
+
15 
+
23 inline float sign(QPoint& p1, QPoint& p2, QPoint& p3){
+
24  return (p1.x()-p3.x())*(p2.y()-p3.y())-(p2.x()-p3.x())*(p1.y()-p3.y());
+
25 }
+
26 
+
33 inline bool isInTriangle(Triangle& tri, QPoint& P){
+
34  float val1, val2, val3;
+
35  bool neg, pos;
+
36 
+
37  val1 = IntelliHelper::sign(P,tri.A,tri.B);
+
38  val2 = IntelliHelper::sign(P,tri.B,tri.C);
+
39  val3 = IntelliHelper::sign(P,tri.C,tri.A);
+
40 
+
41  neg = (val1<0.f) || (val2<0.f) || (val3<0.f);
+
42  pos = (val1>0.f) || (val2>0.f) || (val3>0.f);
+
43 
+
44  return !(neg && pos);
+
45 }
+
46 
+
52 std::vector<Triangle> calculateTriangles(std::vector<QPoint> polyPoints);
+
53 
+
60 bool isInPolygon(std::vector<Triangle> &triangles, QPoint &point);
+
61 }
+
62 
+
63 #endif
+
+
+
bool isInTriangle(Triangle &tri, QPoint &P)
A function to check if a given point is in a triangle.
Definition: IntelliHelper.h:33
+
QPoint B
Definition: IntelliHelper.h:11
+
QPoint C
Definition: IntelliHelper.h:11
+
Definition: IntelliHelper.h:14
+
The Triangle struct holds the 3 vertices of a triangle.
Definition: IntelliHelper.h:10
+
bool isInPolygon(std::vector< Triangle > &triangles, QPoint &point)
A function to check if a point lies in a polygon by checking its spanning triangles.
+
QPoint A
Definition: IntelliHelper.h:11
+
std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
+
float sign(QPoint &p1, QPoint &p2, QPoint &p3)
A function to get the 2*area of a traingle, using its determinat.
Definition: IntelliHelper.h:23
+ + + + diff --git a/docs-src/html/_intelli_image_8cpp.html b/docs-src/html/_intelli_image_8cpp.html new file mode 100644 index 0000000..5a9a149 --- /dev/null +++ b/docs-src/html/_intelli_image_8cpp.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliImage.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliImage.cpp File Reference
+
+
+
#include "Image/IntelliImage.h"
+#include <QSize>
+#include <QPainter>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_image_8cpp__incl.dot b/docs-src/html/_intelli_image_8cpp__incl.dot new file mode 100644 index 0000000..e551c27 --- /dev/null +++ b/docs-src/html/_intelli_image_8cpp__incl.dot @@ -0,0 +1,30 @@ +digraph "intelliphoto/src/Image/IntelliImage.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliImage.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node9 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QPainter",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_image_8cpp_source.html b/docs-src/html/_intelli_image_8cpp_source.html new file mode 100644 index 0000000..e6ac50e --- /dev/null +++ b/docs-src/html/_intelli_image_8cpp_source.html @@ -0,0 +1,292 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliImage.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliImage.cpp
+
+
+Go to the documentation of this file.
1 #include "Image/IntelliImage.h"
+
2 #include <QSize>
+
3 #include <QPainter>
+
4 
+
5 IntelliImage:: IntelliImage(int width, int height, bool fastRendererOn)
+
6  : imageData(QSize(width, height), fastRendererOn ? QImage::Format_Indexed8 : QImage::Format_ARGB32){
+
7  if(fastRendererOn) {
+
8  imageData = imageData.convertToFormat(QImage::Format_ARGB32);
+
9  }
+
10  imageData.fill(QColor(255,255,255,255));
+
11  if(fastRendererOn) {
+
12  imageData = imageData.convertToFormat(QImage::Format_Indexed8);
+
13  }
+
14  this->fastRenderering = fastRendererOn;
+
15 
+
16 }
+
17 
+
18 
+ +
20 
+
21 }
+
22 
+
23 bool IntelliImage::loadImage(const QString &filePath){
+
24  // Holds the image
+
25  QImage loadedImage;
+
26 
+
27  // If the image wasn't loaded leave this function
+
28  if (!loadedImage.load(filePath))
+
29  return false;
+
30 
+
31  // scaled Image to size of Layer
+
32  loadedImage = loadedImage.scaled(imageData.size(),Qt::IgnoreAspectRatio);
+
33 
+
34  imageData = loadedImage.convertToFormat(fastRenderering ? QImage::Format_Indexed8 : QImage::Format_ARGB32);
+
35  return true;
+
36 }
+
37 
+
38 void IntelliImage::resizeImage(QImage*image, const QSize &newSize){
+
39  // Check if we need to redraw the image
+
40  if (image->size() == newSize)
+
41  return;
+
42 
+
43  // Create a new image to display and fill it with white
+
44  QImage newImage(newSize, QImage::Format_ARGB32);
+
45  newImage.fill(qRgb(255, 255, 255));
+
46 
+
47  // Draw the image
+
48  QPainter painter(&newImage);
+
49  painter.drawImage(QPoint(0, 0), *image);
+
50  if(fastRenderering) {
+
51  *image = newImage.convertToFormat(QImage::Format_Indexed8);
+
52  }
+
53  else{
+
54  *image = newImage;
+
55  }
+
56 }
+
57 
+
58 void IntelliImage::drawPixel(const QPoint &p1, const QColor& color){
+
59  if(fastRenderering) {
+
60  this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
+
61  }
+
62  // Used to draw on the widget
+
63  QPainter* painter = new QPainter(&imageData);
+
64 
+
65  // Set the current settings for the pen
+
66  painter->setPen(QPen(color, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+
67 
+
68  // Draw a line from the last registered point to the current
+
69  painter->drawPoint(p1);
+
70  delete painter;
+
71  painter = nullptr;
+
72 
+
73  if(fastRenderering) {
+
74  this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+
75  }
+
76 }
+
77 
+
78 void IntelliImage::drawPoint(const QPoint &p1, const QColor& color, const int& penWidth){
+
79  if(fastRenderering) {
+
80  this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
+
81  }
+
82  // Used to draw on the widget
+
83  QPainter* painter = new QPainter(&imageData);
+
84 
+
85  // Set the current settings for the pen
+
86  painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+
87  // Draw a line from the last registered point to the current
+
88  painter->drawPoint(p1);
+
89  delete painter;
+
90 
+
91  painter = nullptr;
+
92  if(fastRenderering) {
+
93  this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+
94  }
+
95 }
+
96 
+
97 void IntelliImage::drawLine(const QPoint &p1, const QPoint& p2, const QColor& color, const int& penWidth){
+
98  if(fastRenderering) {
+
99  this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
+
100  }
+
101  // Used to draw on the widget
+
102  QPainter* painter = new QPainter(&imageData);
+
103 
+
104  // Set the current settings for the pen
+
105  painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+
106 
+
107  // Draw a line from the last registered point to the current
+
108  painter->drawLine(p1, p2);
+
109  delete painter;
+
110  painter = nullptr;
+
111 
+
112  if(fastRenderering) {
+
113  this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+
114  }
+
115 }
+
116 
+
117 void IntelliImage::drawPlain(const QColor& color){
+
118  if(fastRenderering) {
+
119  this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
+
120  }
+
121  imageData.fill(color);
+
122  if(fastRenderering) {
+
123  this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+
124  }
+
125 }
+
126 
+
127 QColor IntelliImage::getPixelColor(QPoint& point){
+
128  if(fastRenderering) {
+
129  QImage copy = this->imageData.convertToFormat(QImage::Format_ARGB32);
+
130  return copy.pixelColor(point);
+
131  }
+
132  return imageData.pixelColor(point);
+
133 }
+
134 
+ +
136  QImage copy = imageData;
+
137  if(fastRenderering) {
+
138  copy = copy.convertToFormat(QImage::Format_ARGB32);
+
139  }
+
140  return copy;
+
141 }
+
142 
+
143 void IntelliImage::setImageData(const QImage& newData){
+
144  imageData = newData;
+
145  if(fastRenderering) {
+
146  this->imageData = imageData.convertToFormat(QImage::Format_Indexed8);
+
147  }
+
148  else {
+
149  this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
+
150  }
+
151 }
+
152 
+
153 void IntelliImage::updateRendererSetting(bool fastRendererOn){
+
154  this->fastRenderering = fastRendererOn;
+
155  if(fastRenderering) {
+
156  this->imageData = imageData.convertToFormat(QImage::Format_Indexed8);
+
157  }
+
158  else {
+
159  this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
+
160  }
+
161 }
+
162 
+ +
164  return imageData.width();
+
165 }
+
166 
+ +
168  return imageData.height();
+
169 }
+
170 
+ +
172  return this->fastRenderering;
+
173 }
+
+
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
+
virtual ~IntelliImage()=0
An Abstract Destructor.
+
virtual void drawPixel(const QPoint &p1, const QColor &color)
A funtcion used to draw a pixel on the Image with the given Color.
+
virtual bool isFastRendering() const
isFastRendering returns if the Image is in fast rendering mode.
+
IntelliImage(int width, int height, bool fastRendererOn)
The Construcor of the IntelliImage. Given the Image dimensions.
Definition: IntelliImage.cpp:5
+
virtual void drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)
A function that draws a point between on a given point in a given color.
+
virtual void updateRendererSetting(bool fastRendererOn)
updateRendererSetting updates the existing image format to the new format.
+
bool fastRenderering
fastRendering is the flag that represents the usage of 8bit pictures.
Definition: IntelliImage.h:51
+
virtual QImage getImageData()
getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!...
+
void resizeImage(QImage *image, const QSize &newSize)
+
virtual void setImageData(const QImage &newData)
setImageData overwrites the old imageData the new imageData.
+
virtual QColor getPixelColor(QPoint &point)
A function that returns the pixelcolor at a certain point.
+
virtual int getHeight() const
getHeight returns the height of the Image.
+
QImage imageData
The underlying image data.
Definition: IntelliImage.h:41
+
virtual bool loadImage(const QString &filePath)
A function that loads and sclaes an image to the fitting dimensions.
+
virtual int getWidth() const
getWidth returns the width of the Image.
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+ + + + diff --git a/docs-src/html/_intelli_image_8h.html b/docs-src/html/_intelli_image_8h.html new file mode 100644 index 0000000..cd1515b --- /dev/null +++ b/docs-src/html/_intelli_image_8h.html @@ -0,0 +1,160 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliImage.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliImage.h File Reference
+
+
+
#include <QImage>
+#include <QPoint>
+#include <QColor>
+#include <QSize>
+#include <QWidget>
+#include <vector>
+#include "IntelliHelper/IntelliTriangulation.h"
+#include "IntelliHelper/IntelliRenderSettings.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliImage
 An abstract class which manages the basic IntelliImage operations. More...
 
+ + + + +

+Enumerations

enum  ImageType { ImageType::RASTERIMAGE, +ImageType::SHAPEDIMAGE + }
 The Types, which an Image can be. More...
 
+

Enumeration Type Documentation

+ +

◆ ImageType

+ +
+
+ + + + + +
+ + + + +
enum ImageType
+
+strong
+
+ +

The Types, which an Image can be.

+ + + +
Enumerator
RASTERIMAGE 
SHAPEDIMAGE 
+ +

Definition at line 22 of file IntelliImage.h.

+ +
+
+
+
+ + + + diff --git a/docs-src/html/_intelli_image_8h.js b/docs-src/html/_intelli_image_8h.js new file mode 100644 index 0000000..a944119 --- /dev/null +++ b/docs-src/html/_intelli_image_8h.js @@ -0,0 +1,8 @@ +var _intelli_image_8h = +[ + [ "IntelliImage", "class_intelli_image.html", "class_intelli_image" ], + [ "ImageType", "_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0", [ + [ "RASTERIMAGE", "_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0add5823fd73c42c0154fa2abbd70283b9", null ], + [ "SHAPEDIMAGE", "_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0ac065b60ec4cf443808263527bdc0df37", null ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_image_8h__dep__incl.dot b/docs-src/html/_intelli_image_8h__dep__incl.dot new file mode 100644 index 0000000..f000464 --- /dev/null +++ b/docs-src/html/_intelli_image_8h__dep__incl.dot @@ -0,0 +1,43 @@ +digraph "intelliphoto/src/Image/IntelliImage.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Image\l/IntelliImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Image\l/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Image\l/IntelliRasterImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8cpp.html",tooltip=" "]; + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8cpp.html",tooltip=" "]; + Node5 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node7 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node7 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node7 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node7 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node7 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node7 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node7 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node7 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node7 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node5 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_image_8h__incl.dot b/docs-src/html/_intelli_image_8h__incl.dot new file mode 100644 index 0000000..39d5fcc --- /dev/null +++ b/docs-src/html/_intelli_image_8h__incl.dot @@ -0,0 +1,25 @@ +digraph "intelliphoto/src/Image/IntelliImage.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node8 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_image_8h_source.html b/docs-src/html/_intelli_image_8h_source.html new file mode 100644 index 0000000..e0ca3b1 --- /dev/null +++ b/docs-src/html/_intelli_image_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliImage.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliImage.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLIIMAGE_H
+
2 #define INTELLIIMAGE_H
+
3 
+
4 #include <QImage>
+
5 #include <QPoint>
+
6 #include <QColor>
+
7 #include <QSize>
+
8 #include <QWidget>
+
9 #include <vector>
+
10 
+ + +
13 
+
14 //for unit testing
+
15 class UnitTest;
+
16 
+
17 class IntelliTool;
+
18 
+
22 enum class ImageType {
+ + +
25 };
+
26 
+
30 class IntelliImage {
+
31 friend UnitTest;
+
32 friend IntelliTool;
+
33 public:
+
34 
+
35 protected:
+
36 void resizeImage(QImage*image, const QSize &newSize);
+
37 
+
41 QImage imageData;
+
42 
+ +
47 
+ +
52 
+
53 public:
+
60 IntelliImage(int width, int height, bool fastRendererOn);
+
61 
+
62 
+
66 virtual ~IntelliImage() = 0;
+
67 
+
68 
+
74 virtual void drawPixel(const QPoint &p1, const QColor& color);
+
75 
+
83 virtual void drawLine(const QPoint &p1, const QPoint& p2, const QColor& color, const int& penWidth);
+
84 
+
91 virtual void drawPoint(const QPoint &p1, const QColor& color, const int& penWidth);
+
92 
+
97 virtual void drawPlain(const QColor& color);
+
98 
+
105 virtual QImage getDisplayable(const QSize& displaySize, int alpha) = 0;
+
106 
+
112 virtual QImage getDisplayable(int alpha = 255) = 0;
+
113 
+
118 virtual IntelliImage* getDeepCopy() = 0;
+
119 
+
123 virtual void calculateVisiblity() = 0;
+
124 
+
129 virtual void setPolygon(const std::vector<QPoint>& polygonData) = 0;
+
130 
+
135 virtual std::vector<QPoint> getPolygonData(){
+
136  return std::vector<QPoint>();
+
137 }
+
138 
+ +
140  return TypeOfImage;
+
141 }
+
142 
+
148 virtual bool loadImage(const QString &filePath);
+
149 
+
155 virtual QColor getPixelColor(QPoint& point);
+
156 
+
161 virtual void updateRendererSetting(bool fastRendererOn);
+
162 
+
166 virtual QImage getImageData();
+
167 
+
172 virtual void setImageData(const QImage& newData);
+
173 
+
178 virtual int getWidth() const;
+
179 
+
184 virtual int getHeight() const;
+
185 
+
190 virtual bool isFastRendering() const;
+
191 
+
192 };
+
193 
+
194 #endif
+
+
+
@ RASTERIMAGE
+
ImageType
The Types, which an Image can be.
Definition: IntelliImage.h:22
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
virtual ~IntelliImage()=0
An Abstract Destructor.
+
+
virtual void drawPixel(const QPoint &p1, const QColor &color)
A funtcion used to draw a pixel on the Image with the given Color.
+
virtual QImage getDisplayable(const QSize &displaySize, int alpha)=0
A function returning the displayable ImageData in a requested transparence and size.
+
virtual bool isFastRendering() const
isFastRendering returns if the Image is in fast rendering mode.
+
virtual ImageType getTypeOfImage()
Definition: IntelliImage.h:139
+
virtual std::vector< QPoint > getPolygonData()
A function that returns the Polygondata if existent.
Definition: IntelliImage.h:135
+
IntelliImage(int width, int height, bool fastRendererOn)
The Construcor of the IntelliImage. Given the Image dimensions.
Definition: IntelliImage.cpp:5
+
virtual void drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)
A function that draws a point between on a given point in a given color.
+
virtual void updateRendererSetting(bool fastRendererOn)
updateRendererSetting updates the existing image format to the new format.
+
bool fastRenderering
fastRendering is the flag that represents the usage of 8bit pictures.
Definition: IntelliImage.h:51
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual QImage getImageData()
getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!...
+
void resizeImage(QImage *image, const QSize &newSize)
+
virtual void setImageData(const QImage &newData)
setImageData overwrites the old imageData the new imageData.
+
@ SHAPEDIMAGE
+
ImageType TypeOfImage
The Type, an Image is.
Definition: IntelliImage.h:46
+
virtual QColor getPixelColor(QPoint &point)
A function that returns the pixelcolor at a certain point.
+
virtual int getHeight() const
getHeight returns the height of the Image.
+
QImage imageData
The underlying image data.
Definition: IntelliImage.h:41
+
Definition: mainUnitTest.cpp:8
+
virtual bool loadImage(const QString &filePath)
A function that loads and sclaes an image to the fitting dimensions.
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
virtual IntelliImage * getDeepCopy()=0
A function that copys all that returns a [allocated] Image.
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
+
virtual int getWidth() const
getWidth returns the width of the Image.
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+
virtual void setPolygon(const std::vector< QPoint > &polygonData)=0
An abstract function that sets the data of the visible Polygon, if needed.
+ + + + diff --git a/docs-src/html/_intelli_input_dialog_8cpp.html b/docs-src/html/_intelli_input_dialog_8cpp.html new file mode 100644 index 0000000..4ce2fb6 --- /dev/null +++ b/docs-src/html/_intelli_input_dialog_8cpp.html @@ -0,0 +1,104 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliInputDialog.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliInputDialog.cpp File Reference
+
+ +
+ + + + diff --git a/docs-src/html/_intelli_input_dialog_8cpp_source.html b/docs-src/html/_intelli_input_dialog_8cpp_source.html new file mode 100644 index 0000000..a2d0a2d --- /dev/null +++ b/docs-src/html/_intelli_input_dialog_8cpp_source.html @@ -0,0 +1,191 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliInputDialog.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliInputDialog.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliInputDialog.h"
+
2 
+
3 IntelliInputDialog::IntelliInputDialog(QString Title, QString Label, int value, int minValue, int maxValue, int step, bool* ok)
+
4 {
+
5  this->valueInt = value;
+
6  this->notClosed = ok;
+
7  if(notClosed != nullptr) {
+
8  *notClosed = false;
+
9  }
+
10  createInputBox(Title, Label, value, minValue, maxValue, step);
+
11  createConnections();
+
12  setInputBoxStyle();
+
13  this->exec();
+
14 }
+
15 
+
16 int IntelliInputDialog::getInt(QString Title, QString Label, int value, int minValue, int maxValue, int step, bool* ok){
+
17  IntelliInputDialog dialog(Title, Label, value, minValue, maxValue, step, ok);
+
18  return dialog.valueInt;
+
19 }
+
20 
+
21 void IntelliInputDialog::createInputBox(QString Title, QString Label, int value, int minValue, int maxValue, int step){
+
22  this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
+
23  if(Title == nullptr) {
+
24  this->setWindowTitle("Input Box");
+
25  }
+
26  else{
+
27  this->setWindowTitle(Title);
+
28  }
+
29  this->Layout = new QGridLayout();
+
30  this->ButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+
31 
+
32  this->InputLabel = new QLabel();
+
33  if(Label == nullptr) {
+
34  this->InputLabel->setText("Width:");
+
35  }
+
36  else{
+
37  this->InputLabel->setText(Label);
+
38  }
+
39  this->InputLabel->setFixedSize(Linesize);
+
40 
+
41  this->Input = new QSpinBox();
+
42  this->Input->setFixedSize(Linesize);
+
43  this->Input->setRange(minValue,maxValue);
+
44  this->Input->setSingleStep(step);
+
45  this->Input->setValue(value);
+
46 
+
47  this->okButton = ButtonBox->button(QDialogButtonBox::Ok);
+
48  this->okButton->setFixedSize(Buttonsize);
+
49  this->okButton->setAutoDefault(false);
+
50  this->okButton->setDefault(false);
+
51 
+
52  this->cancelButton = ButtonBox->button(QDialogButtonBox::Cancel);
+
53  this->cancelButton->setFixedSize(Buttonsize);
+
54  this->cancelButton->setAutoDefault(false);
+
55  this->cancelButton->setDefault(false);
+
56 
+
57  Layout->addWidget(InputLabel,1,1,1,1);
+
58  Layout->addWidget(Input,2,1,1,1);
+
59  Layout->addWidget(ButtonBox,3,1,1,1);
+
60  this->setLayout(Layout);
+
61  this->resize(172,94);
+
62  this->show();
+
63 }
+
64 
+
65 void IntelliInputDialog::createConnections(){
+
66  connect(okButton, SIGNAL(clicked()), this, SLOT(slotEingabe()));
+
67  connect(cancelButton, SIGNAL(clicked()), this, SLOT(slotCloseEvent()));
+
68 }
+
69 
+
70 void IntelliInputDialog::setInputBoxStyle(){
+
71  this->setStyleSheet("color: white;" "background-color: rgb(64, 64, 64);" "selection-color: rgb(200, 10, 10);" "selection-background-color: rgb(64, 64, 64);");
+
72 }
+
73 
+ +
75  this->close();
+
76 }
+
77 
+ +
79  valueInt = QString("%1").arg(Input->value()).toInt();
+
80  if(notClosed != nullptr) {
+
81  *notClosed = true;
+
82  }
+
83  this->close();
+
84 }
+
+
+
void slotCloseEvent()
slotCloseEvent is a slot for catching the close Event.
+
+
The IntelliInputDialog class is a customized Input Dialog to get Integers.
+
IntelliInputDialog(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
IntelliInputDialog is the baisc constructor to for the InputDialog.
+
static int getInt(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
getInt is a static funktion ´, which creates an Input Dialog and gets an Integer.
+
void slotEingabe()
slotEingabe is a slot for catching the Input Event.
+ + + + diff --git a/docs-src/html/_intelli_input_dialog_8h.html b/docs-src/html/_intelli_input_dialog_8h.html new file mode 100644 index 0000000..4641e20 --- /dev/null +++ b/docs-src/html/_intelli_input_dialog_8h.html @@ -0,0 +1,119 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliInputDialog.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliInputDialog.h File Reference
+
+
+
#include <QSize>
+#include <QDialog>
+#include <QLabel>
+#include <QGridLayout>
+#include <QDialogButtonBox>
+#include <QPushButton>
+#include <QSpinBox>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliInputDialog
 The IntelliInputDialog class is a customized Input Dialog to get Integers. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_input_dialog_8h_source.html b/docs-src/html/_intelli_input_dialog_8h_source.html new file mode 100644 index 0000000..157061d --- /dev/null +++ b/docs-src/html/_intelli_input_dialog_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliInputDialog.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliInputDialog.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLIINPUTDIALOG_H
+
2 #define INTELLIINPUTDIALOG_H
+
3 
+
4 #include <QSize>
+
5 #include <QDialog>
+
6 #include <QLabel>
+
7 #include <QGridLayout>
+
8 #include <QDialogButtonBox>
+
9 #include <QPushButton>
+
10 #include <QSpinBox>
+
11 
+
15 class IntelliInputDialog : public QDialog
+
16 {
+
17 Q_OBJECT
+
18 public:
+
29 IntelliInputDialog(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool* ok = nullptr);
+
30 
+
42 static int getInt(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool* ok = nullptr);
+
43 
+
44 public slots:
+
48 void slotCloseEvent();
+
49 
+
53 void slotEingabe();
+
54 
+
55 private:
+
65 void createInputBox(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1);
+
66 
+
70 void createConnections();
+
71 
+
75 void setInputBoxStyle();
+
76 
+
80 int valueInt;
+
81 
+
85 QGridLayout* Layout;
+
86 
+
90 QDialogButtonBox* ButtonBox;
+
91 
+
95 bool* notClosed;
+
96 
+
100 const QSize Linesize = QSize(150,20);
+
101 
+
105 const QSize Buttonsize = QSize(72,20);
+
106 
+
110 QLabel* InputLabel;
+
111 
+
115 QSpinBox* Input;
+
116 
+
120 QPushButton* okButton;
+
121 
+
125 QPushButton* cancelButton;
+
126 };
+
127 
+
128 #endif // INTELLIINPUTDIALOG_H
+
+
+
void slotCloseEvent()
slotCloseEvent is a slot for catching the close Event.
+
The IntelliInputDialog class is a customized Input Dialog to get Integers.
+
IntelliInputDialog(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
IntelliInputDialog is the baisc constructor to for the InputDialog.
+
static int getInt(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
getInt is a static funktion ´, which creates an Input Dialog and gets an Integer.
+
void slotEingabe()
slotEingabe is a slot for catching the Input Event.
+ + + + diff --git a/docs-src/html/_intelli_photo_gui_8cpp.html b/docs-src/html/_intelli_photo_gui_8cpp.html new file mode 100644 index 0000000..aaa354d --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8cpp.html @@ -0,0 +1,111 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliPhotoGui.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliPhotoGui.cpp File Reference
+
+
+
#include "IntelliPhotoGui.h"
+#include "Layer/PaintingArea.h"
+#include <QEvent>
+#include <QCloseEvent>
+#include <QDebug>
+#include <string>
+#include <QScreen>
+#include <QGuiApplication>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_photo_gui_8cpp.js b/docs-src/html/_intelli_photo_gui_8cpp.js new file mode 100644 index 0000000..ebdbfbd --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8cpp.js @@ -0,0 +1,5 @@ +var _intelli_photo_gui_8cpp = +[ + [ "slotCreateFloodFillTool", "_intelli_photo_gui_8cpp.html#ac2f8320173dfaf943bb39e39cb1a23e5", null ], + [ "slotCreatePenTool", "_intelli_photo_gui_8cpp.html#a30169da42b55e0339af0d28dfc8ccd40", null ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_photo_gui_8cpp__incl.dot b/docs-src/html/_intelli_photo_gui_8cpp__incl.dot new file mode 100644 index 0000000..8c50d72 --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8cpp__incl.dot @@ -0,0 +1,74 @@ +digraph "intelliphoto/src/GUI/IntelliPhotoGui.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node17 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node17 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node17 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node20 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node12 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node22 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node23 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="Tool/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node25 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node24 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node24 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_photo_gui_8cpp_source.html b/docs-src/html/_intelli_photo_gui_8cpp_source.html new file mode 100644 index 0000000..79a41e6 --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8cpp_source.html @@ -0,0 +1,1115 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliPhotoGui.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliPhotoGui.cpp
+
+
+Go to the documentation of this file.
1 // ---------- IntelliPhotoGui.cpp ----------
+
2 
+
3 #include "IntelliPhotoGui.h"
+
4 #include "Layer/PaintingArea.h"
+
5 
+
6 #include <QEvent>
+
7 #include <QCloseEvent>
+
8 #include <QDebug>
+
9 #include <string>
+
10 #include <QScreen>
+
11 #include <QGuiApplication>
+
12 
+
13 // IntelliPhotoGui constructor
+ +
15  // create Gui elements and lay them out
+
16  createGui();
+
17  // Create actions
+
18  createActions();
+
19  // create Menus
+
20  createMenus();
+
21  // set style of the gui
+
22  setIntelliStyle();
+
23  // Size the app
+
24  resize(600,600);
+
25  showMaximized();
+
26  setDefaultValues();
+
27 }
+
28 
+
29 // User tried to close the app
+
30 void IntelliPhotoGui::closeEvent(QCloseEvent*event){
+
31  // If they try to close maybeSave() returns true
+
32  // if no changes have been made and the app closes
+
33  if (maybeSave()) {
+
34  event->accept();
+
35  } else {
+
36  // If there have been changes ignore the event
+
37  event->ignore();
+
38  }
+
39 }
+
40 
+
41 // Check if the current image has been changed and then
+
42 // open a dialog to open a file
+
43 void IntelliPhotoGui::slotOpen(){
+
44  // Check if changes have been made since last save
+
45  // maybeSave() returns true if no changes have been made
+
46  if (maybeSave()) {
+
47 
+
48  // Get the file to open from a dialog
+
49  // tr sets the window title to Open File
+
50  // QDir opens the current dirctory
+
51  QString fileName = QFileDialog::getOpenFileName(this,
+
52  tr("Open File"), QDir::currentPath(), nullptr, nullptr, QFileDialog::DontUseNativeDialog);
+
53 
+
54  // If we have a file name load the image and place
+
55  // it in the paintingArea
+
56  if (!fileName.isEmpty()) {
+
57  bool rightFileType = true;
+
58  if(fileName.size()>=4) {
+
59  QString endung(".idf");
+
60  int length = fileName.size();
+
61  for(int i = 0; i<4; i++) {
+
62  if(endung[i]!=fileName[length - 4 + i]) {
+
63  rightFileType = false;
+
64  break;
+
65  }
+
66  }
+
67  }
+
68 
+
69  if(rightFileType) {
+
70  IntelliDatamanager::loadProject(paintingArea,fileName);
+
71  UpdateGui();
+
72 
+
73  }
+
74  else{
+
75  paintingArea->open(fileName);
+
76  }
+
77  }
+
78  }
+
79 }
+
80 
+
81 // Called when the user clicks Save As in the menu
+
82 void IntelliPhotoGui::slotSave(){
+
83  // A QAction represents the action of the user clicking
+
84  QAction*action = qobject_cast<QAction*>(sender());
+
85 
+
86  // Stores the array of bytes of the users data
+
87  QByteArray fileFormat = action->data().toByteArray();
+
88 
+
89  // Pass it to be saved
+
90  saveFile(fileFormat);
+
91 }
+
92 
+
93 // Opens a dialog that allows the user to create a New RASTER Layer
+
94 void IntelliPhotoGui::slotCreateNewRasterLayer(){
+
95  // Stores button value
+
96  bool ok1, ok2;
+
97 
+
98  // "New Layer" is the title of the window
+
99  // the next tr is the text to display
+
100  // Define the standard Value, min, max, step and ok button
+
101  int width = IntelliInputDialog::getInt("New Raster Layer", "Width:", 200, 1, paintingArea->getMaxWidth(), 1, &ok1);
+
102 
+
103  int height = IntelliInputDialog::getInt("New Raster Layer", "Height:", 200, 1, paintingArea->getMaxHeight(), 1, &ok2);
+
104 
+
105  // Create New Layer
+
106  if (ok1&&ok2) {
+
107  paintingArea->addLayer(width,height,0,0,255,ImageType::RASTERIMAGE);
+
108  paintingArea->historyadd();
+
109  UpdateGui();
+
110  }
+
111 }
+
112 
+
113 // Opens a dialog that allows the user to create a New SHAPED Layer
+
114 void IntelliPhotoGui::slotCreateNewShapedLayer(){
+
115  // Stores button value
+
116  bool ok1, ok2;
+
117 
+
118  // "New Layer" is the title of the window
+
119  // the next tr is the text to display
+
120  // Define the standard Value, min, max, step and ok button
+
121  int width = IntelliInputDialog::getInt("New Shaped Layer", "Width:", 200, 1, paintingArea->getMaxWidth(), 1, &ok1);
+
122 
+
123  int height = IntelliInputDialog::getInt("New Shaped Layer", "Height:", 200, 1, paintingArea->getMaxHeight(), 1, &ok2);
+
124 
+
125  // Create New Layer
+
126  if (ok1&&ok2) {
+
127  paintingArea->addLayer(width, height, 0, 0,255, ImageType::SHAPEDIMAGE);
+
128  paintingArea->historyadd();
+
129  UpdateGui();
+
130  }
+
131 }
+
132 
+
133 // Opens a dialog that allows the user to change Dimension
+
134 void IntelliPhotoGui::slotChangeDim(){
+
135  // Stores button value
+
136  bool ok1, ok2;
+
137 
+
138  // "change Dimension" is the title of the window
+
139  // the next tr is the text to display
+
140  // Define the standard Value, min, step and ok button
+
141  int width = IntelliInputDialog::getInt("New Canvas Size", "Width:", 600, 1, 50000, 1, &ok1);
+
142 
+
143  int height = IntelliInputDialog::getInt("New Canvas Size", "Height:", 600, 1, 50000, 1, &ok2);
+
144 
+
145 
+
146  // Change dimension
+
147  if (ok1&&ok2) {
+
148  paintingArea->setCanvasDimensions(width,height);
+
149  UpdateGui();
+
150  }
+
151 }
+
152 
+
153 // Opens a dialog that allows the user to delete a Layer
+
154 void IntelliPhotoGui::slotDeleteLayer(){
+
155 
+
156  bool ok1;
+
157  // "delete Layer" is the title of the window
+
158  // the next tr is the text to display
+
159  // Define the standard Value, min, max, step and ok button
+
160  int layerNumber = IntelliInputDialog::getInt("Delete Layer", "Number:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
+
161 
+
162  // Create New Layer
+
163  if(ok1) {
+
164  paintingArea->deleteLayer(layerNumber - 1);
+
165  paintingArea->historyadd();
+
166  UpdateGui();
+
167  }
+
168 }
+
169 
+
170 void IntelliPhotoGui::slotSetActiveAlpha(){
+
171 
+
172  bool ok1, ok2;
+
173  // "Layer to set on" is the title of the window
+
174  // the next tr is the text to display
+
175  // Define the standard Value, min, max, step and ok button
+
176 
+
177  int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
+
178 
+
179  // "New Alpha" is the title of the window
+
180  int alpha = IntelliInputDialog::getInt("Layer to set on", "Alpha:", 255, 0, 255, 1, &ok2);
+
181 
+
182  if (ok1&&ok2)
+
183  {
+
184  paintingArea->setLayerAlpha(layer - 1,alpha);
+
185  UpdateGui();
+
186  }
+
187 }
+
188 
+
189 void IntelliPhotoGui::slotSetPolygon(){
+
190  // Stores button value
+
191  bool ok1;
+
192 
+
193  // "Layer to set on" is the title of the window
+
194  // the next tr is the text to display
+
195  // Define the standard Value, min, max, step and ok button
+
196  int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
+
197 
+
198  if (ok1)
+
199  {
+
200  paintingArea->setPolygon(layer - 1);
+
201  UpdateGui();
+
202  }
+
203 }
+
204 
+
205 void IntelliPhotoGui::slotPositionMoveUp(){
+
206  paintingArea->movePositionActive(0,-20);
+
207  update();
+
208 }
+
209 
+
210 void IntelliPhotoGui::slotPositionMoveDown(){
+
211  paintingArea->movePositionActive(0,20);
+
212  update();
+
213 }
+
214 
+
215 void IntelliPhotoGui::slotPositionMoveLeft(){
+
216  paintingArea->movePositionActive(-20,0);
+
217  update();
+
218 }
+
219 
+
220 void IntelliPhotoGui::slotPositionMoveRight(){
+
221  paintingArea->movePositionActive(20,0);
+
222  update();
+
223 }
+
224 
+
225 void IntelliPhotoGui::slotMoveLayerUp(){
+
226  paintingArea->moveActiveLayer(1);
+
227  update();
+
228 }
+
229 
+
230 void IntelliPhotoGui::slotMoveLayerDown(){
+
231  paintingArea->moveActiveLayer(-1);
+
232  update();
+
233 }
+
234 
+
235 void IntelliPhotoGui::slotSetActiveLayer(){
+
236  bool ok1;
+
237  // "Layer to set on" is the title of the window
+
238  // the next tr is the text to display
+
239  // Define the standard Value, min, max, step and ok button
+
240  int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", 1, 1, static_cast<int>(paintingArea->layerBundle.size()), 1, &ok1);
+
241 
+
242  if(ok1) {
+
243  paintingArea->setLayerActive(layer - 1);
+
244  UpdateGui();
+
245  }
+
246 }
+
247 
+
248 void IntelliPhotoGui::slotUpdateFastRenderSettingsOn(){
+
249  paintingArea->setRenderSettings(true);
+
250  FastRendererLabel->setText("Fast Render: On");
+
251  UpdateGui();
+
252 }
+
253 
+
254 void IntelliPhotoGui::slotUpdateFastRenderSettingsOff(){
+
255  paintingArea->setRenderSettings(false);
+
256  FastRendererLabel->setText("Fast Render: Off");
+
257  UpdateGui();
+
258 }
+
259 
+
260 void IntelliPhotoGui::slotSetFirstColor(){
+
261  paintingArea->colorPickerSetFirstColor();
+
262  UpdateGui();
+
263 }
+
264 
+
265 void IntelliPhotoGui::slotSetSecondColor(){
+
266  paintingArea->colorPickerSetSecondColor();
+
267  UpdateGui();
+
268 }
+
269 
+
270 void IntelliPhotoGui::slotSwapColor(){
+
271  paintingArea->colorPickerSwapColors();
+
272  UpdateGui();
+
273 }
+
274 
+
275 void IntelliPhotoGui::slotCreatePenTool(){
+
276  PenButton->setChecked(true);
+
277  paintingArea->createPenTool();
+
278 }
+
279 
+
280 void IntelliPhotoGui::slotCreatePlainTool(){
+
281  PlainButton->setChecked(true);
+
282  paintingArea->createPlainTool();
+
283 }
+
284 
+
285 void IntelliPhotoGui::slotCreateLineTool(){
+
286  LineButton->setChecked(true);
+
287  paintingArea->createLineTool();
+
288 }
+
289 
+
290 void IntelliPhotoGui::slotCreateRectangleTool(){
+
291  RectangleButton->setChecked(true);
+
292  paintingArea->createRectangleTool();
+
293 }
+
294 
+
295 void IntelliPhotoGui::slotCreateCircleTool(){
+
296  CircleButton->setChecked(true);
+
297  paintingArea->createCircleTool();
+
298 }
+
299 
+
300 void IntelliPhotoGui::slotCreatePolygonTool(){
+
301  PolygonButton->setChecked(true);
+
302  paintingArea->createPolygonTool();
+
303 }
+
304 
+
305 void IntelliPhotoGui::slotCreateFloodFillTool(){
+
306  FloodFillButton->setChecked(true);
+
307  paintingArea->createFloodFillTool();
+
308 }
+
309 
+
310 void IntelliPhotoGui::slotCreateGradientTool(){
+
311  GradientButton->setChecked(true);
+
312  paintingArea->createGradientTool();
+
313 }
+
314 
+
315 // Open an about dialog
+
316 void IntelliPhotoGui::slotAboutDialog(){
+
317  // Window title and text to display
+
318  QMessageBox::about(this, tr("About Us"),
+
319  tr("<h1>About IntelliPhoto</h1><p>Version: v1.0<br>Developed by: Team 7<br>Interactive painting tool with layering and drawing capabilities.</p>"));
+
320 }
+
321 
+
322 void IntelliPhotoGui::slotEnterPressed(){
+
323  QString string = EditLineWidth->text();
+
324  if(string.toInt() > 50) {
+
325  EditLineWidth->setText("50");
+
326  }
+
327  paintingArea->Toolsettings.setLineWidth(string.toInt());
+
328  string = EditLineInnerAlpha->text();
+
329  if(string.toInt() > 255) {
+
330  EditLineInnerAlpha->setText("255");
+
331  }
+
332  paintingArea->Toolsettings.setInnerAlpha(string.toInt());
+
333 }
+
334 
+
335 void IntelliPhotoGui::slotResetToolButtons(){
+
336  CircleButton->setChecked(false);
+
337  FloodFillButton->setChecked(false);
+
338  GradientButton->setChecked(false);
+
339  LineButton->setChecked(false);
+
340  PenButton->setChecked(false);
+
341  PlainButton->setChecked(false);
+
342  PolygonButton->setChecked(false);
+
343  RectangleButton->setChecked(false);
+
344 }
+
345 
+
346 void IntelliPhotoGui::slotSetWidth(){
+
347  bool ok1;
+
348  int temp = IntelliInputDialog::getInt("Toolsettings", "Width:", 5, 1, 50, 1, &ok1);
+
349  if(ok1) {
+
350  paintingArea->Toolsettings.setLineWidth(temp);
+
351  EditLineWidth->setText(QString("%1").arg(temp));
+
352  }
+
353 }
+
354 
+
355 void IntelliPhotoGui::slotSetInnerAlpha(){
+
356  bool ok1;
+
357  int temp = IntelliInputDialog::getInt("Toolsettings", "Alpha:", 5, 1, 50, 1, &ok1);
+
358  if(ok1) {
+
359  paintingArea->Toolsettings.setInnerAlpha(temp);
+
360  EditLineInnerAlpha->setText(QString("%1").arg(temp));
+
361  }
+
362 }
+
363 
+
364 void IntelliPhotoGui::slotGoBack(){
+
365  paintingArea->historyGoBack();
+
366 }
+
367 
+
368 void IntelliPhotoGui::slotGoForward(){
+
369  paintingArea->historyGoForward();
+
370 }
+
371 
+
372 // Define menu actions that call functions
+
373 void IntelliPhotoGui::createActions(){
+
374  // Get a list of the supported file formats
+
375  // QImageWriter is used to write images to files
+
376  foreach (QByteArray format, QImageWriter::supportedImageFormats()) {
+
377  QString text = tr("%1...").arg(QString(format).toUpper());
+
378 
+
379  // Create an action for each file format
+
380  QAction*action = new QAction(text, this);
+
381 
+
382  // Set an action for each file format
+
383  action->setData(format);
+
384 
+
385  // When clicked call IntelliPhotoGui::save()
+
386  connect(action, SIGNAL(triggered()), this, SLOT(slotSave()));
+
387 
+
388  // Attach each file format option menu item to Save As
+
389  actionSaveAs.append(action);
+
390  }
+
391 
+
392  // Set exporter to actions
+
393  QAction*pngSaveAction = new QAction("PNG-8...", this);
+
394  pngSaveAction->setData("PNG");
+
395  // When clicked call IntelliPhotoGui::save()
+
396  connect(pngSaveAction, SIGNAL(triggered()), this, SLOT(slotSave()));
+
397  // Attach each PNG in save Menu
+
398  actionSaveAs.append(pngSaveAction);
+
399  pngSaveAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S));
+
400 
+
401  // Create exit action and tie to IntelliPhotoGui::close()
+
402  actionExit = new QAction(tr("&Exit"), this);
+
403  actionExit->setShortcuts(QKeySequence::Quit);
+
404  connect(actionExit, SIGNAL(triggered()), this, SLOT(close()));
+
405 
+
406  actionOpen = new QAction(tr("&Open"), this);
+
407  actionOpen->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
+
408  connect(actionOpen, SIGNAL(triggered()), this, SLOT(slotOpen()));
+
409 
+
410  // Create New RASTER Layer action and tie to IntelliPhotoGui::newLayer()
+
411  actionCreateNewRasterLayer = new QAction(tr("&Raster Image"), this);
+
412  actionCreateNewRasterLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
+
413  connect(actionCreateNewRasterLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewRasterLayer()));
+
414 
+
415 
+
416  // Create New SHAPED Layer action and tie to IntelliPhotoGui::newLayer()
+
417  actionCreateNewShapedLayer = new QAction(tr("&Shaped Image"), this);
+
418  actionCreateNewShapedLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N + Qt::ALT));
+
419  connect(actionCreateNewShapedLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewShapedLayer()));
+
420 
+
421  // Delete New Layer action and tie to IntelliPhotoGui::deleteLayer()
+
422  actionDeleteLayer = new QAction(tr("&Delete Layer"), this);
+
423  actionDeleteLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_D));
+
424  connect(actionDeleteLayer, SIGNAL(triggered()), this, SLOT(slotDeleteLayer()));
+
425 
+
426  actionChangeDim = new QAction(tr("&Change Dimension"), this);
+
427  actionChangeDim->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_X));
+
428  connect(actionChangeDim, SIGNAL(triggered()), this, SLOT(slotChangeDim()));
+
429  connect(dimCanvas, SIGNAL(clicked()), this, SLOT(slotChangeDim()));
+
430 
+
431  actionSetActiveLayer = new QAction(tr("&Set Active"), this);
+
432  actionSetActiveLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
+
433  connect(actionSetActiveLayer, SIGNAL(triggered()), this, SLOT(slotSetActiveLayer()));
+
434 
+
435  actionSetActiveAlpha = new QAction(tr("&Set Alpha"), this);
+
436  actionSetActiveAlpha->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_A));
+
437  connect(actionSetActiveAlpha, SIGNAL(triggered()), this, SLOT(slotSetActiveAlpha()));
+
438 
+
439  actionSetPolygon = new QAction(tr("&Set Polygon Data"), this);
+
440  actionSetPolygon->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_P));
+
441  connect(actionSetPolygon, SIGNAL(triggered()), this, SLOT(slotSetPolygon()));
+
442 
+
443  actionMovePositionUp = new QAction(tr("&Move Up"), this);
+
444  actionMovePositionUp->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Up));
+
445  connect(actionMovePositionUp, SIGNAL(triggered()), this, SLOT(slotPositionMoveUp()));
+
446 
+
447  actionMovePositionDown = new QAction(tr("&Move Down"), this);
+
448  actionMovePositionDown->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Down));
+
449  connect(actionMovePositionDown, SIGNAL(triggered()), this, SLOT(slotPositionMoveDown()));
+
450 
+
451  actionMovePositionLeft = new QAction(tr("&Move Left"), this);
+
452  actionMovePositionLeft->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Left));
+
453  connect(actionMovePositionLeft, SIGNAL(triggered()), this, SLOT(slotPositionMoveLeft()));
+
454 
+
455  actionMovePositionRight = new QAction(tr("&Move Right"), this);
+
456  actionMovePositionRight->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Right));
+
457  connect(actionMovePositionRight, SIGNAL(triggered()), this, SLOT(slotPositionMoveRight()));
+
458 
+
459  actionMoveLayerUp = new QAction(tr("&Move Forth"), this);
+
460  actionMoveLayerUp->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Up));
+
461  connect(actionMoveLayerUp, SIGNAL(triggered()), this, SLOT(slotMoveLayerUp()));
+
462 
+
463  actionMoveLayerDown = new QAction(tr("&Move Back"), this);
+
464  actionMoveLayerDown->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Down));
+
465  connect(actionMoveLayerDown, SIGNAL(triggered()), this, SLOT(slotMoveLayerDown()));
+
466 
+
467  // Create Update RenderSettings Actions here
+
468  actionUpdateFastRenderSettingsOn = new QAction(tr("&On"), this);
+
469  actionUpdateFastRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_A));
+
470  connect(actionUpdateFastRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateFastRenderSettingsOn()));
+
471 
+
472  actionUpdateFastRenderSettingsOff = new QAction(tr("&Off"), this);
+
473  actionUpdateFastRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_D));
+
474  connect(actionUpdateFastRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateFastRenderSettingsOff()));
+
475 
+
476  // Create Color Actions here
+
477  actionColorPickerFirstColor = new QAction(tr("&Main"), this);
+
478  actionColorPickerFirstColor->setShortcut(QKeySequence(Qt::ALT + Qt::Key_N));
+
479  connect(actionColorPickerFirstColor, SIGNAL(triggered()), this, SLOT(slotSetFirstColor()));
+
480  connect(FirstColorButton, SIGNAL(clicked()), this, SLOT(slotSetFirstColor()));
+
481 
+
482  actionColorPickerSecondColor = new QAction(tr("&Secondary"), this);
+
483  actionColorPickerSecondColor->setShortcut(QKeySequence(Qt::ALT + Qt::Key_M));
+
484  connect(actionColorPickerSecondColor, SIGNAL(triggered()), this, SLOT(slotSetSecondColor()));
+
485  connect(SecondColorButton, SIGNAL(clicked()), this, SLOT(slotSetSecondColor()));
+
486 
+
487  actionColorSwap = new QAction(tr("&Switch"), this);
+
488  actionColorSwap->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_S));
+
489  connect(actionColorSwap, SIGNAL(triggered()), this, SLOT(slotSwapColor()));
+
490  connect(SwitchColorButton, SIGNAL(clicked()), this, SLOT(slotSwapColor()));
+
491 
+
492  // Create Tool actions down here
+
493  actionCreatePlainTool = new QAction(tr("&Plain"), this);
+
494  actionCreatePlainTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_P));
+
495  connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
496  connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotCreatePlainTool()));
+
497 
+
498 
+
499  actionCreatePenTool = new QAction(tr("&Pen"),this);
+
500  actionCreatePenTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_S));
+
501  connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
502  connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotCreatePenTool()));
+
503 
+
504  actionCreateLineTool = new QAction(tr("&Line"), this);
+
505  actionCreateLineTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_L));
+
506  connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
507  connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotCreateLineTool()));
+
508 
+
509  actionCreateCircleTool = new QAction(tr("&Circle"), this);
+
510  actionCreateCircleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_C));
+
511  connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
512  connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotCreateCircleTool()));
+
513 
+
514  actionCreateRectangleTool = new QAction(tr("&Rectangle"), this);
+
515  actionCreateRectangleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_R));
+
516  connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
517  connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotCreateRectangleTool()));
+
518 
+
519  actionCreatePolygonTool = new QAction(tr("&Polygon"), this);
+
520  actionCreatePolygonTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_V));
+
521  connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
522  connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotCreatePolygonTool()));
+
523 
+
524  actionCreateFloodFillTool = new QAction(tr("&FloodFill"), this);
+
525  actionCreateFloodFillTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_F));
+
526  connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
527  connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotCreateFloodFillTool()));
+
528 
+
529  actionCreateGradientTool = new QAction(tr("&Gradient"),this);
+
530  actionCreateGradientTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_G));
+
531  connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+
532  connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotCreateGradientTool()));
+
533 
+
534  // Create about action and tie to IntelliPhotoGui::about()
+
535  actionAboutDialog = new QAction(tr("&About"), this);
+
536  connect(actionAboutDialog, SIGNAL(triggered()), this, SLOT(slotAboutDialog()));
+
537 
+
538  // Create about Qt action and tie to IntelliPhotoGui::aboutQt()
+
539  actionAboutQtDialog = new QAction(tr("About &Qt"), this);
+
540  connect(actionAboutQtDialog, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
+
541 
+
542  connect(EditLineWidth, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
+
543  connect(EditLineInnerAlpha, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
+
544 
+
545  connect(CircleButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
546  connect(CircleButton, SIGNAL(clicked()), this, SLOT(slotCreateCircleTool()));
+
547 
+
548  connect(FloodFillButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
549  connect(FloodFillButton, SIGNAL(clicked()), this, SLOT(slotCreateFloodFillTool()));
+
550 
+
551  connect(GradientButton, SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
552  connect(GradientButton, SIGNAL(clicked()), this, SLOT(slotCreateGradientTool()));
+
553 
+
554  connect(LineButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
555  connect(LineButton, SIGNAL(clicked()), this, SLOT(slotCreateLineTool()));
+
556 
+
557  connect(PenButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
558  connect(PenButton, SIGNAL(clicked()), this, SLOT(slotCreatePenTool()));
+
559 
+
560  connect(PlainButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
561  connect(PlainButton, SIGNAL(clicked()), this, SLOT(slotCreatePlainTool()));
+
562 
+
563  connect(PolygonButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
564  connect(PolygonButton, SIGNAL(clicked()), this, SLOT(slotCreatePolygonTool()));
+
565 
+
566  connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+
567  connect(RectangleButton, SIGNAL(clicked()), this, SLOT(slotCreateRectangleTool()));
+
568 
+
569  actionSetWidth = new QAction(tr("&Set Width"),this);
+
570  actionSetWidth->setShortcut(QKeySequence(Qt::ALT + Qt::Key_W));
+
571  connect(actionSetWidth, SIGNAL(triggered()), this, SLOT(slotSetWidth()));
+
572 
+
573  actionSetInnerAlpha = new QAction(tr("&Set Inner Alpha"),this);
+
574  actionSetInnerAlpha->setShortcut(QKeySequence(Qt::ALT + Qt::Key_A));
+
575  connect(actionSetInnerAlpha, SIGNAL(triggered()), this, SLOT(slotSetInnerAlpha()));
+
576 
+
577  actionGoBack = new QAction(tr("&Undo"),this);
+
578  actionGoBack->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Z));
+
579  connect(actionGoBack, SIGNAL(triggered()), this, SLOT(slotGoBack()));
+
580 
+
581  actionGoForward = new QAction(tr("&Redo"),this);
+
582  actionGoForward->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Y));
+
583  connect(actionGoForward, SIGNAL(triggered()), this, SLOT(slotGoForward()));
+
584 }
+
585 
+
586 // Create the menubar
+
587 void IntelliPhotoGui::createMenus(){
+
588  // Create Save As option and the list of file types
+
589  saveAsMenu = new QMenu(tr("&Export As"), this);
+
590  foreach (QAction * action, actionSaveAs)
+
591  saveAsMenu->addAction(action);
+
592 
+
593  // Attach all actions to file menu
+
594  fileMenu = new QMenu(tr("&File"), this);
+
595  fileMenu->addAction(actionOpen);
+
596  fileMenu->addMenu(saveAsMenu);
+
597  fileMenu->addSeparator();
+
598  fileMenu->addAction(actionExit);
+
599 
+
600  // Attach the save project option to file menu
+
601  QAction*projectSaveAction = new QAction("Save Project", this);
+
602  projectSaveAction->setData("idf");
+
603  connect(projectSaveAction, SIGNAL(triggered()), this, SLOT(slotSave()));
+
604  projectSaveAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S));
+
605  fileMenu->addAction(projectSaveAction);
+
606 
+
607  // Attach all actions to Render Settings
+
608  renderMenu = new QMenu(tr("&Fast Renderer"), this);
+
609  renderMenu->addAction(actionUpdateFastRenderSettingsOn);
+
610  renderMenu->addAction(actionUpdateFastRenderSettingsOff);
+
611 
+
612  // Attach all Layer Creations to Menu
+
613  layerCreationMenu = new QMenu(tr("&Create Layer"), this);
+
614  layerCreationMenu->addAction(actionCreateNewRasterLayer);
+
615  layerCreationMenu->addAction(actionCreateNewShapedLayer);
+
616 
+
617  // Attach all actions to Layer
+
618  layerMenu = new QMenu(tr("&Layer"), this);
+
619  layerMenu->addMenu(layerCreationMenu);
+
620  layerMenu->addSeparator();
+
621  layerMenu->addAction(actionSetActiveAlpha);
+
622  layerMenu->addAction(actionSetActiveLayer);
+
623  layerMenu->addAction(actionSetPolygon);
+
624  layerMenu->addSeparator();
+
625  layerMenu->addAction(actionMovePositionUp);
+
626  layerMenu->addAction(actionMovePositionDown);
+
627  layerMenu->addAction(actionMovePositionLeft);
+
628  layerMenu->addAction(actionMovePositionRight);
+
629  layerMenu->addAction(actionMoveLayerUp);
+
630  layerMenu->addAction(actionMoveLayerDown);
+
631  layerMenu->addSeparator();
+
632  layerMenu->addAction(actionDeleteLayer);
+
633 
+
634  // Attach all Color Options
+
635  colorMenu = new QMenu(tr("&Color"), this);
+
636  colorMenu->addAction(actionColorPickerFirstColor);
+
637  colorMenu->addAction(actionColorPickerSecondColor);
+
638  colorMenu->addAction(actionColorSwap);
+
639 
+
640  // Attach all Tool Creation Actions
+
641  toolCreationMenu = new QMenu(tr("&Tool Selection"), this);
+
642  toolCreationMenu->addAction(actionCreateCircleTool);
+
643  toolCreationMenu->addAction(actionCreateFloodFillTool);
+
644  toolCreationMenu->addAction(actionCreateGradientTool);
+
645  toolCreationMenu->addAction(actionCreateLineTool);
+
646  toolCreationMenu->addAction(actionCreatePenTool);
+
647  toolCreationMenu->addAction(actionCreatePlainTool);
+
648  toolCreationMenu->addAction(actionCreatePolygonTool);
+
649  toolCreationMenu->addAction(actionCreateRectangleTool);
+
650 
+
651  // Attach all Tool Setting Actions
+
652  toolSettingsMenu = new QMenu(tr("&Tool Settings"), this);
+
653  toolSettingsMenu->addAction(actionSetWidth);
+
654  toolSettingsMenu->addAction(actionSetInnerAlpha);
+
655 
+
656  // Attach all Tool Options
+
657  toolMenu = new QMenu(tr("&Tools"), this);
+
658  toolMenu->addMenu(toolCreationMenu);
+
659  toolMenu->addMenu(toolSettingsMenu);
+
660 
+
661  // Attach all actions to Options
+
662  optionMenu = new QMenu(tr("&Options"), this);
+
663  optionMenu->addAction(actionGoBack);
+
664  optionMenu->addAction(actionGoForward);
+
665  optionMenu->addSeparator();
+
666  optionMenu->addMenu(renderMenu);
+
667  optionMenu->addAction(actionChangeDim);
+
668 
+
669  // Attach all actions to Help
+
670  helpMenu = new QMenu(tr("&Help"), this);
+
671  helpMenu->addAction(actionAboutDialog);
+
672  helpMenu->addAction(actionAboutQtDialog);
+
673 
+
674  // Add menu items to the menubar
+
675  menuBar()->addMenu(fileMenu);
+
676  menuBar()->addMenu(optionMenu);
+
677  menuBar()->addMenu(layerMenu);
+
678  menuBar()->addMenu(toolMenu);
+
679  menuBar()->addMenu(colorMenu);
+
680  menuBar()->addMenu(helpMenu);
+
681 }
+
682 
+
683 void IntelliPhotoGui::createGui(){
+
684  // create a central widget to work on
+
685  centralGuiWidget = new QWidget(this);
+
686  setCentralWidget(centralGuiWidget);
+
687 
+
688  // create the grid for the layout
+
689  mainLayout = new QGridLayout(centralGuiWidget);
+
690  centralGuiWidget->setLayout(mainLayout);
+
691 
+
692  // create Gui elements
+
693  // get and set max width and height
+
694  paintingArea = new PaintingArea(1280, 720);
+
695  paintingArea->guiReference = this;
+
696 
+
697  QScreen*screen = QGuiApplication::primaryScreen();
+
698  QRect screenGeometry = screen->geometry();
+
699  Buttonsize.setWidth(screenGeometry.width() / 20);
+
700  Buttonsize.setHeight(screenGeometry.height() / 20);
+
701 
+
702  preview = QPixmap(":/Icons/Buttons/icons/circle-tool.svg");
+
703  CircleButton = new QPushButton();
+
704  CircleButton->setFixedSize(Buttonsize);
+
705  CircleButton->setIcon(preview);
+
706  CircleButton->setIconSize(Buttonsize);
+
707  CircleButton->setCheckable(true);
+
708 
+
709  preview = QPixmap(":/Icons/Buttons/icons/flood-fill-tool.svg");
+
710  FloodFillButton = new QPushButton();
+
711  FloodFillButton->setFixedSize(Buttonsize);
+
712  FloodFillButton->setIcon(preview);
+
713  FloodFillButton->setIconSize(Buttonsize);
+
714  FloodFillButton->setCheckable(true);
+
715 
+
716  preview = QPixmap(":/Icons/Buttons/icons/gradient-tool.svg");
+
717  GradientButton = new QPushButton();
+
718  GradientButton->setFixedSize(Buttonsize);
+
719  GradientButton->setIcon(preview);
+
720  GradientButton->setIconSize(Buttonsize);
+
721  GradientButton->setCheckable(true);
+
722 
+
723  preview = QPixmap(":/Icons/Buttons/icons/line-tool.svg");
+
724  LineButton = new QPushButton();
+
725  LineButton->setFixedSize(Buttonsize);
+
726  LineButton->setIcon(preview);
+
727  LineButton->setIconSize(Buttonsize);
+
728  LineButton->setCheckable(true);
+
729 
+
730  preview = QPixmap(":/Icons/Buttons/icons/pen-tool.svg");
+
731  PenButton = new QPushButton();
+
732  PenButton->setFixedSize(Buttonsize);
+
733  PenButton->setIcon(preview);
+
734  PenButton->setIconSize(Buttonsize);
+
735  PenButton->setCheckable(true);
+
736 
+
737  preview = QPixmap(":/Icons/Buttons/icons/plain-tool.svg");
+
738  PlainButton = new QPushButton();
+
739  PlainButton->setFixedSize(Buttonsize);
+
740  PlainButton->setIcon(preview);
+
741  PlainButton->setIconSize(Buttonsize);
+
742  PlainButton->setCheckable(true);
+
743 
+
744  preview = QPixmap(":/Icons/Buttons/icons/polygon-tool.svg");
+
745  PolygonButton = new QPushButton();
+
746  PolygonButton->setFixedSize(Buttonsize);
+
747  PolygonButton->setIcon(preview);
+
748  PolygonButton->setIconSize(Buttonsize);
+
749  PolygonButton->setCheckable(true);
+
750 
+
751  preview = QPixmap(":/Icons/Buttons/icons/rectangle-tool.svg");
+
752  RectangleButton = new QPushButton();
+
753  RectangleButton->setFixedSize(Buttonsize);
+
754  RectangleButton->setIcon(preview);
+
755  RectangleButton->setIconSize(Buttonsize);
+
756  RectangleButton->setCheckable(true);
+
757 
+
758  WidthLine = new QLabel();
+
759  WidthLine->setText("Width");
+
760  WidthLine->setFixedSize(Buttonsize.width() * 2,(Buttonsize.height() * 2) / 3);
+
761 
+
762  EditLineWidth = new QLineEdit();
+
763  EditLineWidth->setFixedSize(Buttonsize.width() * 2,(Buttonsize.height() * 2) / 3);
+
764  EditLineWidth->setText("5");
+
765  ValidatorLineWidth = new QIntValidator();
+
766  ValidatorLineWidth->setTop(99);
+
767  ValidatorLineWidth->setBottom(1);
+
768  EditLineWidth->setValidator(ValidatorLineWidth);
+
769 
+
770  innerAlphaLine = new QLabel();
+
771  innerAlphaLine->setText("Inner Alpha");
+
772  innerAlphaLine->setFixedSize(Buttonsize.width() * 2,(Buttonsize.height() * 2) / 3);
+
773 
+
774  EditLineInnerAlpha = new QLineEdit();
+
775  EditLineInnerAlpha->setFixedSize(Buttonsize.width() * 2,(Buttonsize.height() * 2) / 3);
+
776  EditLineInnerAlpha->setText("255");
+
777  ValidatorInnerAlpha = new QIntValidator();
+
778  ValidatorInnerAlpha->setTop(999);
+
779  ValidatorInnerAlpha->setBottom(0);
+
780  EditLineInnerAlpha->setValidator(ValidatorInnerAlpha);
+
781 
+
782  FirstColorButton = new QPushButton();
+
783  FirstColorButton->setFixedSize(Buttonsize);
+
784 
+
785  SecondColorButton = new QPushButton();
+
786  SecondColorButton->setFixedSize(Buttonsize);
+
787 
+
788  preview = QPixmap(":/Icons/Buttons/icons/Wechselpfeile.png");
+
789  SwitchColorButton = new QPushButton();
+
790  SwitchColorButton->setFixedSize(Buttonsize.width() * 2,Buttonsize.height());
+
791  SwitchColorButton->setIcon(preview);
+
792  SwitchColorButton->setIconSize(QSize(Buttonsize.width() * 2,Buttonsize.height()));
+
793 
+
794  ActiveLayerLabel = new QLabel();
+
795  QString string = QString("Active Layer: %1").arg(paintingArea->getIndexOfActiveLayer() + 1);
+
796  ActiveLayerLabel->setText(string);
+
797  ActiveLayerLabel->setFixedSize(Buttonsize.width() * 2 + 10,(Buttonsize.height() * 2) / 3);
+
798 
+
799  IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
+
800  if(activePicture) {
+
801  preview = preview.fromImage(activePicture->getImageData());
+
802  }else{
+
803  QImage tmp(1,1,QImage::Format_ARGB32);
+
804  tmp.fill(Qt::transparent);
+
805  preview = preview.fromImage(tmp);
+
806  }
+
807 
+
808  ActiveLayerImageLabel = new QLabel();
+
809  ActiveLayerImageLabel->setFixedSize(Buttonsize * 2);
+
810  ActiveLayerImageLabel->setPixmap(preview.scaled(Buttonsize * 2));
+
811 
+
812  dimActive = new QPushButton();
+
813  dimActive->setFixedSize(Buttonsize.width() * 2,Buttonsize.height() / 2);
+
814  dimActive->setText("0x0");
+
815 
+
816  dimCanvas = new QPushButton();
+
817  dimCanvas->setFixedSize(Buttonsize.width() * 2,Buttonsize.height() / 2);
+
818  QString String = QString("%1x%2").arg(paintingArea->Canvas->width()).arg(paintingArea->Canvas->height());
+
819  dimCanvas->setText(String);
+
820 
+
821  FastRendererLabel = new QLabel();
+
822  FastRendererLabel->setFixedSize(Buttonsize.width() * 2 + 15,(Buttonsize.height() * 2) / 3);
+
823  FastRendererLabel->setText("Fast Render: On");
+
824 
+
825  ScrollArea = new QScrollArea(this);
+
826  ScrollArea->setBackgroundRole(QPalette::Dark);
+
827  ScrollArea->setWidget(paintingArea);
+
828  ScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+
829  ScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+
830 
+
831  // set gui elements
+
832  mainLayout->addWidget(ScrollArea,1,1,20,1);
+
833  mainLayout->addWidget(CircleButton,1,2,1,1);
+
834  mainLayout->addWidget(FloodFillButton,1,3,1,1);
+
835  mainLayout->addWidget(LineButton,2,2,1,1);
+
836  mainLayout->addWidget(PenButton,2,3,1,1);
+
837  mainLayout->addWidget(PlainButton,3,2,1,1);
+
838  mainLayout->addWidget(PolygonButton,3,3,1,1);
+
839  mainLayout->addWidget(RectangleButton,4,2,1,1);
+
840  mainLayout->addWidget(GradientButton,4,3,1,1);
+
841  mainLayout->addWidget(WidthLine,5,2,1,2);
+
842  mainLayout->addWidget(EditLineWidth,6,2,1,2);
+
843  mainLayout->addWidget(innerAlphaLine,7,2,1,2);
+
844  mainLayout->addWidget(EditLineInnerAlpha,8,2,1,2);
+
845  mainLayout->addWidget(FirstColorButton,9,2,1,1);
+
846  mainLayout->addWidget(SecondColorButton,9,3,1,1);
+
847  mainLayout->addWidget(SwitchColorButton,10,2,1,2);
+
848  mainLayout->addWidget(ActiveLayerLabel,11,2,1,2);
+
849  mainLayout->addWidget(ActiveLayerImageLabel,12,2,1,2);
+
850  mainLayout->addWidget(dimActive,13,2,1,2);
+
851  mainLayout->addWidget(dimCanvas,14,2,1,2);
+
852  mainLayout->addWidget(FastRendererLabel,15,2,1,2);
+
853  mainLayout->setHorizontalSpacing(0);
+
854 
+
855 }
+
856 
+
857 void IntelliPhotoGui::setIntelliStyle(){
+
858  // Set the title
+
859  setWindowTitle("IntelliPhoto v1.0");
+
860  // Set style sheet
+
861  this->setStyleSheet("color: white;" "background-color: rgb(64, 64, 64);" "selection-color: rgb(200, 10, 10);" "selection-background-color: rgb(64, 64, 64);");
+
862 
+
863  QString string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
+
864  FirstColorButton->setStyleSheet(string);
+
865  string = QString("background-color: %1").arg(paintingArea->colorPicker.getSecondColor().name());
+
866  SecondColorButton->setStyleSheet(string);
+
867 }
+
868 
+
869 bool IntelliPhotoGui::maybeSave(){
+
870  // Check for changes since last save
+
871 #ifdef QT_NO_DEBUG
+
872  QMessageBox::StandardButton ret;
+
873 
+
874  // Painting is the title of the window
+
875  // Add text and the buttons
+
876  ret = QMessageBox::warning(this, tr("Painting"),
+
877  tr("The image has been modified.\n"
+
878  "Do you want to save your changes?"),
+
879  QMessageBox::Save | QMessageBox::Discard
+
880  | QMessageBox::Cancel);
+
881 
+
882  // If save button clicked call for file to be saved
+
883  if (ret == QMessageBox::Save) {
+
884  return saveFile("png");
+
885 
+
886  // If cancel do nothing
+
887  } else if (ret == QMessageBox::Cancel) {
+
888  return false;
+
889  }
+
890 #endif
+
891  return true;
+
892 }
+
893 
+
894 bool IntelliPhotoGui::saveFile(const QByteArray &fileFormat){
+
895  // Define path, name and default file type
+
896  QString initialPath = QDir::currentPath() + "/untitled." + fileFormat;
+
897 
+
898  // Get selected file from dialog
+
899  // Add the proper file formats and extensions
+
900  QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"),
+
901  initialPath,
+
902  tr("%1 Files (*.%2);;All Files (*)")
+
903  .arg(QString::fromLatin1(fileFormat.toUpper()))
+
904  .arg(QString::fromLatin1(fileFormat)), nullptr, QFileDialog::DontUseNativeDialog);
+
905 
+
906  // If no file do nothing
+
907  if (fileName.isEmpty()) {
+
908  return false;
+
909  } else {
+
910  // Call for the file to be saved
+
911  if(fileFormat == "idf") {
+
912  return IntelliDatamanager::saveProject(paintingArea, fileName);
+
913 
+
914  }
+
915  return paintingArea->save(fileName, fileFormat.constData());
+
916  }
+
917 }
+
918 
+
919 void IntelliPhotoGui::setDefaultValues(){
+
920  slotEnterPressed();
+
921 }
+
922 
+ +
924  if(value < 1) {
+
925  value = 1;
+
926  }else if(value > 50) {
+
927  value = 50;
+
928  }
+
929  EditLineWidth->setText(QString("%1").arg(value));
+
930 }
+
931 
+ +
933  QString string = QString("Active Layer: %1").arg(paintingArea->getIndexOfActiveLayer() + 1);
+
934  ActiveLayerLabel->setText(string);
+
935 
+
936  IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
+
937  if(activePicture) {
+
938  preview = preview.fromImage(activePicture->getImageData());
+
939  }else{
+
940  QImage tmp(1,1,QImage::Format_ARGB32);
+
941  tmp.fill(Qt::transparent);
+
942  preview = preview.fromImage(tmp);
+
943  }
+
944 
+
945 
+
946  ActiveLayerImageLabel->setPixmap(preview.scaled(Buttonsize * 2));
+
947 
+
948  string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
+
949  FirstColorButton->setStyleSheet(string);
+
950  string = QString("background-color: %1").arg(paintingArea->colorPicker.getSecondColor().name());
+
951  SecondColorButton->setStyleSheet(string);
+
952 
+
953  string = QString("%1x%2").arg(paintingArea->Canvas->width()).arg(paintingArea->Canvas->height());
+
954  dimCanvas->setText(string);
+
955 
+
956  if(paintingArea->layerBundle.size() != 0) {
+
957  string = QString("%1x%2").arg(paintingArea->layerBundle[static_cast<size_t>
+
958  (paintingArea->getIndexOfActiveLayer())].width).arg(paintingArea->layerBundle[static_cast<size_t>
+
959  (paintingArea->getIndexOfActiveLayer())].height);
+
960  dimActive->setText(string);
+
961  }
+
962  else{
+
963  dimActive->setText("0x0");
+
964  }
+
965 }
+
+
+
void createCircleTool()
createCircleTool creates a Circle Tool.
+
QColor getFirstColor() const
A function to read the primary selected color.
+
@ RASTERIMAGE
+
void setRenderSettings(bool isFastRenderingOn)
setRenderSettings updates all Images to the new Rendersetting.
+
IntelliImage * getImageOfActiveLayer()
getImageOfActiveLayer returns the image of the active Layer.
+
void createRectangleTool()
createRectangleTool creates a Rectangle Tool.
+
int getMaxWidth()
getMaxWidth gets the max width of the Canvas.
+
bool save(const QString &filePath, const char *fileFormat)
The save method is used for exporting the current project as one picture.
+
void setLayerAlpha(int idx, int alpha)
The setAlphaOfLayer method sets the alpha value of a specific layer.
+
bool loadProject(PaintingArea *Canvas, QString filePath="unnamed.idf")
loadProject loads a project from a file, closes current project.
+
void setLayerActive(int idx)
The setLayerToActive method marks a specific layer as active.
+
int getMaxHeight()
getMaxHeight gets the max height of the Canvas.
+
void deleteLayer(int idx, bool isTool=false)
The deleteLayer method removes a layer at a given idx.
+
void createPlainTool()
createPlainTool creates a Plain Tool.
+
IntelliPhotoGui()
The IntelliPhotoGui method is the constructor and is used to create a new instance of the main progra...
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
void createPenTool()
createPenTool creates a Pen Tool.
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
int getIndexOfActiveLayer()
getIndexOfActiveLayer returns the index of athe active Layer.
+
void historyGoBack()
historyGoBack go back in hisotry
+
void createLineTool()
createLineTool creates a Line Tool.
+
void colorPickerSetSecondColor()
The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color.
+
void colorPickerSetFirstColor()
The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color.
+
static int getInt(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
getInt is a static funktion ´, which creates an Input Dialog and gets an Integer.
+
+
void closeEvent(QCloseEvent *event) override
The closeEvent function handles closing events.
+
virtual QImage getImageData()
getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!...
+
@ SHAPEDIMAGE
+
void setToolWidth(int value)
setToolWidth stes a width to the tool
+
bool open(const QString &filePath)
The open method is used for loading a picture into the current layer.
+
void createPolygonTool()
createPolygonTool creates a Polygon Tool.
+
void moveActiveLayer(int idx)
The moveActiveLayer moves the active layer to a specific position in the layer stack.
+
IntelliColorPicker colorPicker
colorPicker a class to manage Tool color.
Definition: PaintingArea.h:286
+
+
void setCanvasDimensions(int maxWidth, int maxHeight)
setCanvasDimensions sets the dimension of the Canvas
+
void createFloodFillTool()
createFloodFillTool creates a Floodfill Tool.
+
void setInnerAlpha(int innerAlpha)
setInnerAlpha sets the inner alpha attribute of the Tool.
+
bool saveProject(PaintingArea *Canvas, QString filePath="unnamed.idf")
saveProject saves the current project to a file.
+
void UpdateGui()
UpdateGui a function to update all gui elements.
+
IntelliToolsettings Toolsettings
Toolsettings - a class to manage Tool settings.
Definition: PaintingArea.h:281
+
void setPolygon(int idx)
setPolygon is used for setting polygondata, it only works on RASTER images
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
void colorPickerSwapColors()
The colorPickerSwitchColor swaps the primary color with the secondary drawing color.
+
void movePositionActive(int x, int y)
The movePositionActive method moves the active layer to certain position.
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)
The addLayer adds a layer to the current project/ painting area.
+
void historyGoForward()
historyGoForward a function to undo the return of the previous state of the project.
+
void historyadd()
historyadd adds an hisotry step
+
void createGradientTool()
createGradientTool creates a Gradient Tool.
+ + + + diff --git a/docs-src/html/_intelli_photo_gui_8h.html b/docs-src/html/_intelli_photo_gui_8h.html new file mode 100644 index 0000000..1159e3d --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8h.html @@ -0,0 +1,128 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliPhotoGui.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliPhotoGui.h File Reference
+
+
+
#include <QAction>
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QImageWriter>
+#include <QMenu>
+#include <QMenuBar>
+#include <QList>
+#include <QMainWindow>
+#include <QGridLayout>
+#include <QPushButton>
+#include <QTextEdit>
+#include <QLabel>
+#include <QLineEdit>
+#include <QScrollArea>
+#include "IntelliInputDialog.h"
+#include "IntelliHelper/IntelliDatamanager.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliPhotoGui
 The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto program. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_photo_gui_8h__dep__incl.dot b/docs-src/html/_intelli_photo_gui_8h__dep__incl.dot new file mode 100644 index 0000000..2dae499 --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8h__dep__incl.dot @@ -0,0 +1,32 @@ +digraph "intelliphoto/src/GUI/IntelliPhotoGui.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node3 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node3 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node3 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/main.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$main_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_photo_gui_8h__incl.dot b/docs-src/html/_intelli_photo_gui_8h__incl.dot new file mode 100644 index 0000000..127439f --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8h__incl.dot @@ -0,0 +1,25 @@ +digraph "intelliphoto/src/GUI/IntelliPhotoGui.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_photo_gui_8h_source.html b/docs-src/html/_intelli_photo_gui_8h_source.html new file mode 100644 index 0000000..978638d --- /dev/null +++ b/docs-src/html/_intelli_photo_gui_8h_source.html @@ -0,0 +1,397 @@ + + + + + + + +IntelliPhoto: src/GUI/IntelliPhotoGui.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliPhotoGui.h
+
+
+Go to the documentation of this file.
1 #ifndef IntelliPhotoGui_H
+
2 #define IntelliPhotoGui_H
+
3 
+
4 #include <QAction>
+
5 #include <QFileDialog>
+
6 #include <QMessageBox>
+
7 #include <QImageWriter>
+
8 #include <QMenu>
+
9 #include <QMenuBar>
+
10 #include <QList>
+
11 #include <QMainWindow>
+
12 #include <QGridLayout>
+
13 #include <QPushButton>
+
14 #include <QTextEdit>
+
15 #include <QLabel>
+
16 #include <QLineEdit>
+
17 #include <QScrollArea>
+
18 #include "IntelliInputDialog.h"
+ +
20 
+
21 //for unit testing
+
22 class UnitTest;
+
23 
+
24 // PaintingArea used to paint the image
+
25 class PaintingArea;
+
26 
+
27 class IntelliTool;
+
28 
+
29 class IntelliColorPicker;
+
30 
+
34 class IntelliPhotoGui : public QMainWindow {
+
35 friend UnitTest;
+
36 // Declares our class as a QObject which is the base class
+
37 // for all Qt objects
+
38 // QObjects handle events
+
39 Q_OBJECT
+
40 public:
+ +
45 
+
49 void UpdateGui();
+
50 
+
55 void setToolWidth(int value);
+
56 
+
57 protected:
+
61 void closeEvent(QCloseEvent*event) override;
+
62 
+
63 private slots:
+
64 
+
68 void slotOpen();
+
69 
+
73 void slotSave();
+
74 
+
78 void slotCreateNewRasterLayer();
+
79 
+
83 void slotCreateNewShapedLayer();
+
84 
+
88 void slotDeleteLayer();
+
89 
+
93 void slotSetActiveLayer();
+
94 
+
98 void slotSetActiveAlpha();
+
99 
+
103 void slotSetPolygon();
+
104 
+
108 void slotPositionMoveUp();
+
109 
+
113 void slotPositionMoveDown();
+
114 
+
118 void slotPositionMoveLeft();
+
119 
+
123 void slotPositionMoveRight();
+
124 
+
128 void slotMoveLayerUp();
+
129 
+
133 void slotMoveLayerDown();
+
134 
+
138 void slotUpdateFastRenderSettingsOn();
+
139 
+
143 void slotUpdateFastRenderSettingsOff();
+
144 
+
148 void slotSetFirstColor();
+
149 
+
153 void slotSetSecondColor();
+
154 
+
158 void slotSwapColor();
+
159 
+
163 void slotCreatePenTool();
+
164 
+
168 void slotCreatePlainTool();
+
169 
+
173 void slotCreateLineTool();
+
174 
+
178 void slotCreateRectangleTool();
+
179 
+
183 void slotCreateCircleTool();
+
184 
+
188 void slotCreatePolygonTool();
+
189 
+
193 void slotCreateFloodFillTool();
+
194 
+
198 void slotCreateGradientTool();
+
199 
+
203 void slotAboutDialog();
+
204 
+
208 void slotChangeDim();
+
209 
+
213 void slotEnterPressed();
+
214 
+
218 void slotSetWidth();
+
219 
+
223 void slotSetInnerAlpha();
+
224 
+
228 void slotResetToolButtons();
+
229 
+
233 void slotGoBack();
+
234 
+
238 void slotGoForward();
+
239 
+
240 private:
+
241 
+
245 void createActions();
+
246 
+
250 void createMenus();
+
251 
+
255 void createGui();
+
256 
+
260 void setIntelliStyle();
+
261 
+
266 bool maybeSave();
+
267 
+
273 bool saveFile(const QByteArray &fileFormat);
+
274 
+
278 void setDefaultValues();
+
279 
+
283 PaintingArea* paintingArea;
+
284 
+
288 QPixmap preview;
+
289 
+
293 QSize Buttonsize;
+
294 
+
298 QPushButton* CircleButton;
+
299 
+
303 QPushButton* FloodFillButton;
+
304 
+
308 QPushButton* GradientButton;
+
309 
+
313 QPushButton* LineButton;
+
314 
+
318 QPushButton* PenButton;
+
319 
+
323 QPushButton* PlainButton;
+
324 
+
328 QPushButton* PolygonButton;
+
329 
+
333 QPushButton* RectangleButton;
+
334 
+
338 QPushButton* FirstColorButton;
+
339 
+
343 QPushButton* SecondColorButton;
+
344 
+
348 QPushButton* SwitchColorButton;
+
349 
+
353 QPushButton* dimActive;
+
354 
+
358 QPushButton* dimCanvas;
+
359 
+
363 QLabel* WidthLine;
+
364 
+
368 QLabel* innerAlphaLine;
+
369 
+
373 QLabel* ActiveLayerLabel;
+
374 
+
378 QLabel* ActiveLayerImageLabel;
+
379 
+
383 QLabel* FastRendererLabel;
+
384 
+
388 QScrollArea* ScrollArea;
+
389 
+
393 QLineEdit* EditLineWidth;
+
394 
+
398 QLineEdit* EditLineInnerAlpha;
+
399 
+
403 QIntValidator* ValidatorLineWidth;
+
404 
+
408 QIntValidator* ValidatorInnerAlpha;
+
409 
+
410 
+
414 QMenu* saveAsMenu;
+
415 
+
419 QMenu* fileMenu;
+
420 
+
424 QMenu* renderMenu;
+
425 
+
429 QMenu* optionMenu;
+
430 
+
434 QMenu* layerCreationMenu;
+
435 
+
439 QMenu* layerMenu;
+
440 
+
444 QMenu* colorMenu;
+
445 
+
449 QMenu* toolCreationMenu;
+
450 
+
454 QMenu* toolSettingsMenu;
+
455 
+
459 QMenu* toolMenu;
+
460 
+
464 QMenu* helpMenu;
+
465 
+
469 QAction* actionOpen;
+
470 
+
474 QAction* actionExit;
+
475 
+
479 QAction* actionUpdateFastRenderSettingsOn;
+
480 
+
484 QAction* actionUpdateFastRenderSettingsOff;
+
485 
+
489 QAction* actionColorPickerFirstColor;
+
490 
+
494 QAction* actionColorPickerSecondColor;
+
495 
+
499 QAction* actionColorSwap;
+
500 
+
504 QAction* actionCreatePenTool;
+
505 
+
509 QAction* actionCreatePlainTool;
+
510 
+
514 QAction* actionCreateLineTool;
+
515 
+
519 QAction* actionCreateRectangleTool;
+
520 
+
524 QAction* actionCreateCircleTool;
+
525 
+
529 QAction* actionCreatePolygonTool;
+
530 
+
534 QAction* actionCreateFloodFillTool;
+
535 
+
539 QAction* actionCreateGradientTool;
+
540 
+
544 QAction* actionChangeDim;
+
545 
+
549 QAction* actionSetWidth;
+
550 
+
554 QAction* actionSetInnerAlpha;
+
555 
+
559 QAction* actionAboutDialog;
+
560 
+
564 QAction* actionAboutQtDialog;
+
565 
+
569 QAction* actionCreateNewRasterLayer;
+
570 
+
574 QAction* actionCreateNewShapedLayer;
+
575 
+
579 QAction* actionDeleteLayer;
+
580 
+
584 QAction* actionSetActiveLayer;
+
585 
+
589 QAction* actionSetActiveAlpha;
+
590 
+
594 QAction* actionSetPolygon;
+
595 
+
599 QAction* actionMovePositionUp;
+
600 
+
604 QAction* actionMovePositionDown;
+
605 
+
609 QAction* actionMovePositionLeft;
+
610 
+
614 QAction* actionMovePositionRight;
+
615 
+
619 QAction* actionMoveLayerUp;
+
620 
+
624 QAction* actionMoveLayerDown;
+
625 
+
629 QList<QAction*> actionSaveAs;
+
630 
+
634 QAction* actionGoBack;
+
635 
+
639 QAction* actionGoForward;
+
640 
+
644 QWidget* centralGuiWidget;
+
645 
+
649 QGridLayout* mainLayout;
+
650 };
+
651 
+
652 #endif
+
+
+
+
The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto p...
+
IntelliPhotoGui()
The IntelliPhotoGui method is the constructor and is used to create a new instance of the main progra...
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
void closeEvent(QCloseEvent *event) override
The closeEvent function handles closing events.
+
void setToolWidth(int value)
setToolWidth stes a width to the tool
+
The IntelliColorPicker manages the selected colors for one whole project.
+
void UpdateGui()
UpdateGui a function to update all gui elements.
+
Definition: mainUnitTest.cpp:8
+
+ + + + diff --git a/docs-src/html/_intelli_raster_image_8cpp.html b/docs-src/html/_intelli_raster_image_8cpp.html new file mode 100644 index 0000000..21b14dc --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8cpp.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliRasterImage.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRasterImage.cpp File Reference
+
+
+
#include "Image/IntelliRasterImage.h"
+#include <QPainter>
+#include <QRect>
+#include <QDebug>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_raster_image_8cpp__incl.dot b/docs-src/html/_intelli_raster_image_8cpp__incl.dot new file mode 100644 index 0000000..ca2ddaa --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8cpp__incl.dot @@ -0,0 +1,35 @@ +digraph "intelliphoto/src/Image/IntelliRasterImage.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliRasterImage.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QPainter",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QRect",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QDebug",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_raster_image_8cpp_source.html b/docs-src/html/_intelli_raster_image_8cpp_source.html new file mode 100644 index 0000000..5633ab7 --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8cpp_source.html @@ -0,0 +1,170 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliRasterImage.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRasterImage.cpp
+
+
+Go to the documentation of this file.
+
2 #include <QPainter>
+
3 #include <QRect>
+
4 #include <QDebug>
+
5 
+
6 IntelliRasterImage::IntelliRasterImage(int width, int height, bool fastRendererOn)
+
7  : IntelliImage(width, height, fastRendererOn){
+ +
9 }
+
10 
+
11 
+ +
13 
+
14 }
+
15 
+ +
17  IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), false);
+
18  raster->imageData.fill(Qt::transparent);
+ +
20  return raster;
+
21 }
+
22 
+ +
24  // not used in raster image
+
25 }
+
26 
+ +
28  return getDisplayable(imageData.size(), alpha);
+
29 }
+
30 
+
31 QImage IntelliRasterImage::getDisplayable(const QSize& displaySize, int alpha){
+
32  QImage copy = imageData;
+
33  if(fastRenderering) {
+
34  copy = copy.convertToFormat(QImage::Format_ARGB32);
+
35  }
+
36  for(int y = 0; y<copy.height(); y++) {
+
37  for(int x = 0; x<copy.width(); x++) {
+
38  QColor clr = copy.pixelColor(x,y);
+
39  clr.setAlpha(std::min(alpha, clr.alpha()));
+
40  copy.setPixelColor(x,y, clr);
+
41  }
+
42  }
+
43  if(fastRenderering) {
+
44  copy = copy.convertToFormat(QImage::Format_Indexed8);
+
45  }
+
46  return copy.scaled(displaySize,Qt::IgnoreAspectRatio);
+
47 }
+
48 
+
49 void IntelliRasterImage::setPolygon(const std::vector<QPoint>& polygonData){
+
50  return;
+
51 }
+
52 
+
53 std::vector<QPoint> IntelliRasterImage::getPolygon(){
+
54  return std::vector<QPoint>();
+
55 }
+
+
+
@ RASTERIMAGE
+
virtual ~IntelliRasterImage() override
An Destructor.
+
IntelliRasterImage(int width, int height, bool fastRendererOn)
The Construcor of the IntelliRasterImage. Given the Image dimensions.
+
+
bool fastRenderering
fastRendering is the flag that represents the usage of 8bit pictures.
Definition: IntelliImage.h:51
+
virtual std::vector< QPoint > getPolygon()
getPolygon
+
virtual QImage getDisplayable(const QSize &displaySize, int alpha) override
A function returning the displayable ImageData in a requested transparence and size.
+
ImageType TypeOfImage
The Type, an Image is.
Definition: IntelliImage.h:46
+
QImage imageData
The underlying image data.
Definition: IntelliImage.h:41
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
virtual IntelliImage * getDeepCopy() override
A function that copys all that returns a [allocated] Image.
+
virtual void calculateVisiblity() override
A function that calculates the visibility of the image if a polygon is given. [does nothing in RASTER...
+
virtual void setPolygon(const std::vector< QPoint > &polygonData) override
An abstract function that sets the data of the visible Polygon, if needed.
+
The IntelliRasterImage manages a RASTERIMAGE.
+ + + + diff --git a/docs-src/html/_intelli_raster_image_8h.html b/docs-src/html/_intelli_raster_image_8h.html new file mode 100644 index 0000000..b81f2a4 --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8h.html @@ -0,0 +1,113 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliRasterImage.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliRasterImage.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliRasterImage
 The IntelliRasterImage manages a RASTERIMAGE. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_raster_image_8h__dep__incl.dot b/docs-src/html/_intelli_raster_image_8h__dep__incl.dot new file mode 100644 index 0000000..aa77306 --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8h__dep__incl.dot @@ -0,0 +1,38 @@ +digraph "intelliphoto/src/Image/IntelliRasterImage.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Image\l/IntelliRasterImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8cpp.html",tooltip=" "]; + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node5 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node5 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node5 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node5 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node5 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node5 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node5 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node5 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node5 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node5 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_raster_image_8h__incl.dot b/docs-src/html/_intelli_raster_image_8h__incl.dot new file mode 100644 index 0000000..4bb933b --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8h__incl.dot @@ -0,0 +1,27 @@ +digraph "intelliphoto/src/Image/IntelliRasterImage.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node9 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_raster_image_8h_source.html b/docs-src/html/_intelli_raster_image_8h_source.html new file mode 100644 index 0000000..d2cfed5 --- /dev/null +++ b/docs-src/html/_intelli_raster_image_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliRasterImage.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRasterImage.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLIRASTER_H
+
2 #define INTELLIRASTER_H
+
3 
+
4 #include "Image/IntelliImage.h"
+
5 
+
6 //for unit testing
+
7 class UnitTest;
+
8 
+ +
13 friend UnitTest;
+
14 friend IntelliTool;
+
15 protected:
+
19 virtual void calculateVisiblity() override;
+
20 public:
+
27 IntelliRasterImage(int width, int height, bool fastRendererOn);
+
28 
+
32 virtual ~IntelliRasterImage() override;
+
33 
+
40 virtual QImage getDisplayable(const QSize& displaySize,int alpha) override;
+
41 
+
47 virtual QImage getDisplayable(int alpha = 255) override;
+
48 
+
53 virtual IntelliImage* getDeepCopy() override;
+
54 
+
59 virtual void setPolygon(const std::vector<QPoint>& polygonData) override;
+
60 
+
65 virtual std::vector<QPoint> getPolygon();
+
66 };
+
67 
+
68 #endif
+
+
+
+
virtual ~IntelliRasterImage() override
An Destructor.
+
IntelliRasterImage(int width, int height, bool fastRendererOn)
The Construcor of the IntelliRasterImage. Given the Image dimensions.
+
virtual std::vector< QPoint > getPolygon()
getPolygon
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual QImage getDisplayable(const QSize &displaySize, int alpha) override
A function returning the displayable ImageData in a requested transparence and size.
+
Definition: mainUnitTest.cpp:8
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
virtual IntelliImage * getDeepCopy() override
A function that copys all that returns a [allocated] Image.
+
virtual void calculateVisiblity() override
A function that calculates the visibility of the image if a polygon is given. [does nothing in RASTER...
+
virtual void setPolygon(const std::vector< QPoint > &polygonData) override
An abstract function that sets the data of the visible Polygon, if needed.
+
The IntelliRasterImage manages a RASTERIMAGE.
+ + + + diff --git a/docs-src/html/_intelli_render_settings_8cpp.html b/docs-src/html/_intelli_render_settings_8cpp.html new file mode 100644 index 0000000..b190e8c --- /dev/null +++ b/docs-src/html/_intelli_render_settings_8cpp.html @@ -0,0 +1,104 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliRenderSettings.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRenderSettings.cpp File Reference
+
+ +
+ + + + diff --git a/docs-src/html/_intelli_render_settings_8cpp__incl.dot b/docs-src/html/_intelli_render_settings_8cpp__incl.dot new file mode 100644 index 0000000..8af1fea --- /dev/null +++ b/docs-src/html/_intelli_render_settings_8cpp__incl.dot @@ -0,0 +1,9 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliRenderSettings.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliRenderSettings.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRenderSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_render_settings_8cpp_source.html b/docs-src/html/_intelli_render_settings_8cpp_source.html new file mode 100644 index 0000000..fd5c90c --- /dev/null +++ b/docs-src/html/_intelli_render_settings_8cpp_source.html @@ -0,0 +1,119 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliRenderSettings.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRenderSettings.cpp
+
+
+Go to the documentation of this file.
+
2 
+ +
4 {
+
5 
+
6 }
+
7 
+
8 void IntelliRenderSettings::setFastRendering(bool Updatedsetting){
+
9  this->fastRenderering = Updatedsetting;
+
10 }
+
11 
+ +
13  return fastRenderering;
+
14 }
+
+
+
bool isFastRenderering() const
The getfastRenderer gets the value of the flag for the fastRenderer setting.
+
+
void setFastRendering(bool Updatedsetting)
setFastRendering sets fastRendering to Updatedsetting.
+
IntelliRenderSettings()
+ + + + diff --git a/docs-src/html/_intelli_render_settings_8h.html b/docs-src/html/_intelli_render_settings_8h.html new file mode 100644 index 0000000..8829ae8 --- /dev/null +++ b/docs-src/html/_intelli_render_settings_8h.html @@ -0,0 +1,112 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliRenderSettings.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliRenderSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliRenderSettings
 The IntelliRenderSettings class which manages the render Settings. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_render_settings_8h__dep__incl.dot b/docs-src/html/_intelli_render_settings_8h__dep__incl.dot new file mode 100644 index 0000000..3d1fc66 --- /dev/null +++ b/docs-src/html/_intelli_render_settings_8h__dep__incl.dot @@ -0,0 +1,47 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliRenderSettings.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliRenderSettings.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Image\l/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Image\l/IntelliImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8cpp.html",tooltip=" "]; + Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Image\l/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Image\l/IntelliRasterImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8cpp.html",tooltip=" "]; + Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8cpp.html",tooltip=" "]; + Node6 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node8 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node8 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node8 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node8 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node8 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node8 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node8 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node8 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node8 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node6 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="intelliphoto/src/Intelli\lHelper/IntelliRenderSettings.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_render_settings_8h_source.html b/docs-src/html/_intelli_render_settings_8h_source.html new file mode 100644 index 0000000..72e54e7 --- /dev/null +++ b/docs-src/html/_intelli_render_settings_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliRenderSettings.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRenderSettings.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLIRENDERSETTINGS_H
+
2 #define INTELLIRENDERSETTINGS_H
+
3 
+
4 //for unit testing
+
5 class UnitTest;
+
6 
+ +
11 {
+
12 friend UnitTest;
+
13 public:
+ +
15 
+
20 void setFastRendering(bool Updatedsetting);
+
25 bool isFastRenderering() const;
+
26 
+
27 private:
+
31 bool fastRenderering = true;
+
32 };
+
33 
+
34 #endif
+
+
+
bool isFastRenderering() const
The getfastRenderer gets the value of the flag for the fastRenderer setting.
+
The IntelliRenderSettings class which manages the render Settings.
+
void setFastRendering(bool Updatedsetting)
setFastRendering sets fastRendering to Updatedsetting.
+
Definition: mainUnitTest.cpp:8
+
IntelliRenderSettings()
+ + + + diff --git a/docs-src/html/_intelli_shaped_image_8cpp.html b/docs-src/html/_intelli_shaped_image_8cpp.html new file mode 100644 index 0000000..41a5357 --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8cpp.html @@ -0,0 +1,108 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliShapedImage.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliShapedImage.cpp File Reference
+
+
+
#include "Image/IntelliShapedImage.h"
+#include "IntelliHelper/IntelliTriangulation.h"
+#include <QPainter>
+#include <QRect>
+#include <QDebug>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_shaped_image_8cpp__incl.dot b/docs-src/html/_intelli_shaped_image_8cpp__incl.dot new file mode 100644 index 0000000..094d457 --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8cpp__incl.dot @@ -0,0 +1,39 @@ +digraph "intelliphoto/src/Image/IntelliShapedImage.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QPainter",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QRect",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QDebug",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_shaped_image_8cpp_source.html b/docs-src/html/_intelli_shaped_image_8cpp_source.html new file mode 100644 index 0000000..c93728a --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8cpp_source.html @@ -0,0 +1,235 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliShapedImage.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliShapedImage.cpp
+
+
+Go to the documentation of this file.
+ +
3 #include <QPainter>
+
4 #include <QRect>
+
5 #include <QDebug>
+
6 
+
7 IntelliShapedImage::IntelliShapedImage(int width, int height, bool fastRendererOn)
+
8  : IntelliRasterImage(width, height, fastRendererOn){
+ +
10 }
+
11 
+ +
13 
+
14 }
+
15 
+ +
17  return getDisplayable(imageData.size(),alpha);
+
18 }
+
19 
+ +
21  IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), false);
+
22  shaped->setPolygon(this->polygonData);
+
23  shaped->imageData.fill(Qt::transparent);
+ +
25  return shaped;
+
26 }
+
27 
+
28 void IntelliShapedImage::calculateVisiblity(){
+
29  if(polygonData.size()<2) {
+
30  return;
+
31  }
+
32  if(fastRenderering) {
+
33  this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
+
34  }
+
35 
+
36  if(polygonData.size()<=2) {
+
37  QColor clr;
+
38  for(int y = 0; y<imageData.height(); y++) {
+
39  for(int x = 0; x<imageData.width(); x++) {
+
40  clr = imageData.pixel(x,y);
+
41  clr.setAlpha(255);
+
42  imageData.setPixelColor(x,y,clr);
+
43  }
+
44  }
+
45  if(fastRenderering) {
+
46  this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+
47  }
+
48  return;
+
49  }
+
50  QColor clr;
+
51  for(int y = 0; y<imageData.height(); y++) {
+
52  for(int x = 0; x<imageData.width(); x++) {
+
53  QPoint ptr(x,y);
+
54  clr = imageData.pixelColor(x,y);
+
55  bool isInPolygon = IntelliTriangulation::isInPolygon(triangles, ptr);
+
56  if(isInPolygon) {
+
57  clr.setAlpha(std::min(255, clr.alpha()));
+
58  }else{
+
59  clr.setAlpha(0);
+
60  }
+
61  imageData.setPixelColor(x,y,clr);
+
62  }
+
63  }
+
64  if(fastRenderering) {
+
65  this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+
66  }
+
67 }
+
68 
+
69 QImage IntelliShapedImage::getDisplayable(const QSize& displaySize, int alpha){
+
70  QImage copy = imageData;
+
71  if(fastRenderering) {
+
72  copy = copy.convertToFormat(QImage::Format_ARGB32);
+
73  }
+
74  for(int y = 0; y<copy.height(); y++) {
+
75  for(int x = 0; x<copy.width(); x++) {
+
76  QColor clr = copy.pixelColor(x,y);
+
77  clr.setAlpha(std::min(alpha,clr.alpha()));
+
78  copy.setPixelColor(x,y, clr);
+
79  }
+
80  }
+
81  if(fastRenderering) {
+
82  copy = copy.convertToFormat(QImage::Format_Indexed8);
+
83  }
+
84  return copy.scaled(displaySize,Qt::IgnoreAspectRatio);
+
85 }
+
86 
+
87 void IntelliShapedImage::setPolygon(const std::vector<QPoint>& polygonData){
+
88  if(polygonData.size()<3) {
+
89  this->polygonData.clear();
+
90  }else{
+
91  this->polygonData.clear();
+
92  for(auto element:polygonData) {
+
93  this->polygonData.push_back(QPoint(element.x(), element.y()));
+
94  }
+ +
96  if(fastRenderering) {
+
97  imageData = imageData.convertToFormat(QImage::Format_ARGB32);
+
98  }
+
99  for(int y = 0; y<imageData.height(); y++) {
+
100  for(int x = 0; x<imageData.width(); x++) {
+
101  QColor clr = imageData.pixelColor(x,y);
+
102  clr.setAlpha(255);
+
103  imageData.setPixelColor(x,y,clr);
+
104  }
+
105  }
+
106  if(fastRenderering) {
+
107  imageData = imageData.convertToFormat(QImage::Format_Indexed8);
+
108  }
+
109  }
+
110  calculateVisiblity();
+
111  return;
+
112 }
+
113 
+
114 std::vector<QPoint> IntelliShapedImage::getPolygon(){
+
115  return polygonData;
+
116 }
+
+
+
virtual QImage getDisplayable(const QSize &displaySize, int alpha=255) override
A function returning the displayable ImageData in a requested transparence and size.
+
+
std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
+
virtual std::vector< QPoint > getPolygon() override
getPolygon
+
The IntelliShapedImage manages a Shapedimage.
+
virtual IntelliImage * getDeepCopy() override
A function that copys all that returns a [allocated] Image.
+
bool fastRenderering
fastRendering is the flag that represents the usage of 8bit pictures.
Definition: IntelliImage.h:51
+
@ SHAPEDIMAGE
+
ImageType TypeOfImage
The Type, an Image is.
Definition: IntelliImage.h:46
+
QImage imageData
The underlying image data.
Definition: IntelliImage.h:41
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
std::vector< QPoint > polygonData
The Vertices of The Polygon. Needs to be a planar Polygon.
+
IntelliShapedImage(int width, int height, bool fastRendererOn)
The Construcor of the IntelliShapedImage. Given the Image dimensions.
+
bool isInPolygon(const std::vector< Triangle > &triangles, QPoint &point)
A function to check if a point lies in a polygon by checking its spanning triangles.
+
virtual ~IntelliShapedImage() override
An Destructor.
+
The IntelliRasterImage manages a RASTERIMAGE.
+
+
virtual void setPolygon(const std::vector< QPoint > &polygonData) override
A function that sets the data of the visible Polygon.
+ + + + diff --git a/docs-src/html/_intelli_shaped_image_8h.html b/docs-src/html/_intelli_shaped_image_8h.html new file mode 100644 index 0000000..362277e --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8h.html @@ -0,0 +1,114 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliShapedImage.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliShapedImage.h File Reference
+
+
+
#include "Image/IntelliRasterImage.h"
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliShapedImage
 The IntelliShapedImage manages a Shapedimage. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_shaped_image_8h__dep__incl.dot b/docs-src/html/_intelli_shaped_image_8h__dep__incl.dot new file mode 100644 index 0000000..39ac329 --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8h__dep__incl.dot @@ -0,0 +1,32 @@ +digraph "intelliphoto/src/Image/IntelliShapedImage.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node3 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node3 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node3 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node3 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node3 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node3 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_shaped_image_8h__incl.dot b/docs-src/html/_intelli_shaped_image_8h__incl.dot new file mode 100644 index 0000000..d7a68a4 --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8h__incl.dot @@ -0,0 +1,30 @@ +digraph "intelliphoto/src/Image/IntelliShapedImage.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_shaped_image_8h_source.html b/docs-src/html/_intelli_shaped_image_8h_source.html new file mode 100644 index 0000000..1a04314 --- /dev/null +++ b/docs-src/html/_intelli_shaped_image_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +IntelliPhoto: src/Image/IntelliShapedImage.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliShapedImage.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLISHAPE_H
+
2 #define INTELLISHAPE_H
+
3 
+ +
5 #include <vector>
+
6 
+
7 //for unit testing
+
8 class UnitTest;
+
9 
+ +
14 friend UnitTest;
+
15 friend IntelliTool;
+
16 private:
+
20 std::vector<Triangle> triangles;
+
21 
+
25 virtual void calculateVisiblity() override;
+
26 protected:
+
27 
+
31 std::vector<QPoint> polygonData;
+
32 public:
+
39 IntelliShapedImage(int width, int height, bool fastRendererOn);
+
40 
+
44 virtual ~IntelliShapedImage() override;
+
45 
+
52 virtual QImage getDisplayable(const QSize& displaySize, int alpha = 255) override;
+
53 
+
59 virtual QImage getDisplayable(int alpha = 255) override;
+
60 
+
65 virtual IntelliImage* getDeepCopy() override;
+
66 
+
71 virtual std::vector<QPoint> getPolygonData() override {
+
72  return polygonData;
+
73 }
+
74 
+
79 virtual void setPolygon(const std::vector<QPoint>& polygonData) override;
+
80 
+
81 
+
86 virtual std::vector<QPoint> getPolygon() override;
+
87 };
+
88 
+
89 
+
90 #endif
+
+
+
virtual QImage getDisplayable(const QSize &displaySize, int alpha=255) override
A function returning the displayable ImageData in a requested transparence and size.
+
virtual std::vector< QPoint > getPolygon() override
getPolygon
+
The IntelliShapedImage manages a Shapedimage.
+
virtual IntelliImage * getDeepCopy() override
A function that copys all that returns a [allocated] Image.
+
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual std::vector< QPoint > getPolygonData() override
A function that returns the Polygondata if existent.
+
Definition: mainUnitTest.cpp:8
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
std::vector< QPoint > polygonData
The Vertices of The Polygon. Needs to be a planar Polygon.
+
IntelliShapedImage(int width, int height, bool fastRendererOn)
The Construcor of the IntelliShapedImage. Given the Image dimensions.
+
virtual ~IntelliShapedImage() override
An Destructor.
+
The IntelliRasterImage manages a RASTERIMAGE.
+
virtual void setPolygon(const std::vector< QPoint > &polygonData) override
A function that sets the data of the visible Polygon.
+ + + + diff --git a/docs-src/html/_intelli_tool_8cpp.html b/docs-src/html/_intelli_tool_8cpp.html new file mode 100644 index 0000000..4862a26 --- /dev/null +++ b/docs-src/html/_intelli_tool_8cpp.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliTool.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliTool.cpp File Reference
+
+ +
+ + + + diff --git a/docs-src/html/_intelli_tool_8cpp__incl.dot b/docs-src/html/_intelli_tool_8cpp__incl.dot new file mode 100644 index 0000000..0e9cd44 --- /dev/null +++ b/docs-src/html/_intelli_tool_8cpp__incl.dot @@ -0,0 +1,74 @@ +digraph "intelliphoto/src/Tool/IntelliTool.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node9 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node9 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node13 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node9 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node22 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node22 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node24 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node9 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node26 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node27 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_8cpp_source.html b/docs-src/html/_intelli_tool_8cpp_source.html new file mode 100644 index 0000000..46ce301 --- /dev/null +++ b/docs-src/html/_intelli_tool_8cpp_source.html @@ -0,0 +1,247 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliTool.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliTool.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliTool.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "GUI/IntelliPhotoGui.h"
+
4 
+ +
6  this->Area = Area;
+
7  this->colorPicker = colorPicker;
+
8  this->Toolsettings = Toolsettings;
+
9  this->isDrawing = false;
+
10  this->ActiveType = Tooltype::NONE;
+
11  this->activeLayer = nullptr;
+
12  this->Canvas = nullptr;
+
13 }
+
14 
+ +
16 
+
17 }
+
18 
+ +
20  if(isDrawing) {
+
21  isDrawing = false;
+
22  this->deleteToolLayer();
+
23  }
+
24 }
+
25 
+ +
27  //optional for tool
+
28 }
+
29 
+ +
31  this->isDrawing = this->createToolLayer();
+
32  if(isDrawing) {
+ +
34  }
+
35 }
+
36 
+ +
38  if(isDrawing) {
+
39  isDrawing = false;
+
40  this->mergeToolLayer();
+
41  this->deleteToolLayer();
+ +
43  Area->historyadd();
+
44 
+
45  }
+
46 }
+
47 
+
48 void IntelliTool::onMouseMoved(int x, int y){
+
49  if(isDrawing)
+ +
51 }
+
52 
+ +
54  //if needed for future general tasks implement in here
+
55  Area->guiReference->setToolWidth(value + Toolsettings->getLineWidth());
+
56 }
+
57 
+
58 bool IntelliTool::createToolLayer(){
+
59  if(Area->createTempTopLayer(Area->activeLayer)) {
+
60  this->activeLayer = &Area->layerBundle[static_cast<unsigned long long>(Area->activeLayer)];
+
61  this->Canvas = &Area->layerBundle[static_cast<unsigned long long>(Area->activeLayer + 1)];
+
62  return true;
+
63  }
+
64  return false;
+
65 }
+
66 
+
67 void IntelliTool::mergeToolLayer(){
+
68  QColor clr_0;
+
69  QColor clr_1;
+
70  QImage updatedImage = activeLayer->image->getImageData();
+
71 
+
72  for(int y = 0; y<activeLayer->height; y++) {
+
73  for(int x = 0; x<activeLayer->width; x++) {
+
74  clr_0 = updatedImage.pixelColor(x,y);
+
75  clr_1 = Canvas->image->imageData.pixelColor(x,y);
+
76  float t = static_cast<float>(clr_1.alpha()) / 255.f;
+
77  int r = static_cast<int>(static_cast<float>(clr_1.red()) * (t) + static_cast<float>(clr_0.red()) * (1.f - t) + 0.5f);
+
78  int g = static_cast<int>(static_cast<float>(clr_1.green()) * (t) + static_cast<float>(clr_0.green()) * (1.f - t) + 0.5f);
+
79  int b = static_cast<int>(static_cast<float>(clr_1.blue()) * (t) + static_cast<float>(clr_0.blue() * (1.f - t)) + 0.5f);
+
80  int a = std::min(clr_0.alpha() + clr_1.alpha(), 255);
+
81  clr_0.setRed(r);
+
82  clr_0.setGreen(g);
+
83  clr_0.setBlue(b);
+
84  clr_0.setAlpha(a);
+
85 
+
86  updatedImage.setPixelColor(x, y, clr_0);
+
87  }
+
88  }
+
89  activeLayer->image->setImageData(updatedImage);
+
90  if(Canvas->image->getPolygonData().size() > 0) {
+ +
92  }
+
93  Area->guiReference->UpdateGui();
+
94 }
+
95 
+
96 void IntelliTool::deleteToolLayer(){
+
97  Area->deleteLayer(Area->activeLayer + 1, true);
+
98  this->Canvas = nullptr;
+
99 }
+
100 
+ +
102  return ActiveType;
+
103 }
+
104 
+ +
106  return isDrawing;
+
107 }
+
+
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
bool getIsDrawing() const
getIsDrawing returns if the tool is currently drawing
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
Tooltype getTooltype() const
getTooltype returns the tools type
+
@ NONE
+
void deleteLayer(int idx, bool isTool=false)
The deleteLayer method removes a layer at a given idx.
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
Tooltype
The Tooltype enum categorising the toosl.
Definition: IntelliTool.h:23
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
virtual std::vector< QPoint > getPolygonData()
A function that returns the Polygondata if existent.
Definition: IntelliImage.h:135
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * activeLayer
A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or prev...
Definition: IntelliTool.h:74
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
int width
width - Stores the width of a layer in pixels.
Definition: PaintingArea.h:31
+
+
virtual QImage getImageData()
getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!...
+
virtual void setImageData(const QImage &newData)
setImageData overwrites the old imageData the new imageData.
+
void setToolWidth(int value)
setToolWidth stes a width to the tool
+
+
int height
height - Stores the height of a layer in pixels.
Definition: PaintingArea.h:35
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general Painting Area and colorPicker.
Definition: IntelliTool.cpp:5
+
void UpdateGui()
UpdateGui a function to update all gui elements.
+
QImage imageData
The underlying image data.
Definition: IntelliImage.h:41
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
void historyadd()
historyadd adds an hisotry step
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual ~IntelliTool()=0
An abstract Destructor.
Definition: IntelliTool.cpp:15
+
virtual void setPolygon(const std::vector< QPoint > &polygonData)=0
An abstract function that sets the data of the visible Polygon, if needed.
+ + + + diff --git a/docs-src/html/_intelli_tool_8h.html b/docs-src/html/_intelli_tool_8h.html new file mode 100644 index 0000000..220856d --- /dev/null +++ b/docs-src/html/_intelli_tool_8h.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliTool.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliTool.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliTool
 An abstract class that manages the basic events, like mouse clicks or scrolls events. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_8h__dep__incl.dot b/docs-src/html/_intelli_tool_8h__dep__incl.dot new file mode 100644 index 0000000..c1cead2 --- /dev/null +++ b/docs-src/html/_intelli_tool_8h__dep__incl.dot @@ -0,0 +1,58 @@ +digraph "intelliphoto/src/Tool/IntelliTool.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node2 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node2 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8h.html",tooltip=" "]; + Node13 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8h.html",tooltip=" "]; + Node14 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8h.html",tooltip=" "]; + Node15 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/Tool\l/IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8h.html",tooltip=" "]; + Node16 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8h.html",tooltip=" "]; + Node17 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node18 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8h.html",tooltip=" "]; + Node19 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_8h__incl.dot b/docs-src/html/_intelli_tool_8h__incl.dot new file mode 100644 index 0000000..3b0686b --- /dev/null +++ b/docs-src/html/_intelli_tool_8h__incl.dot @@ -0,0 +1,19 @@ +digraph "intelliphoto/src/Tool/IntelliTool.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_8h_source.html b/docs-src/html/_intelli_tool_8h_source.html new file mode 100644 index 0000000..4765f89 --- /dev/null +++ b/docs-src/html/_intelli_tool_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliTool.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliTool.h
+
+
+Go to the documentation of this file.
1 #ifndef Intelli_Tool_H
+
2 #define Intelli_Tool_H
+
3 
+ + +
6 #include <vector>
+
7 
+
8 //for unit testing
+
9 class UnitTest;
+
10 
+
11 struct LayerObject;
+
12 class PaintingArea;
+
13 
+
17 class IntelliTool {
+
18 friend UnitTest;
+
19 public:
+
23 enum class Tooltype {
+
24  CIRCLE,
+
25  FLOODFILL,
+
26  GRADIENT,
+
27  LINE,
+
28  PEN,
+
29  PLAIN,
+
30  POLYGON,
+
31  RECTANGLE,
+
32  NONE
+
33 };
+
34 private:
+
39 bool createToolLayer();
+
40 
+
44 void mergeToolLayer();
+
45 
+
49 void deleteToolLayer();
+
50 protected:
+ +
55 
+ +
60 
+ +
65 
+ +
70 
+ +
75 
+ +
80 
+
84 bool isDrawing = false;
+
85 
+
86 public:
+ +
93 
+
97 virtual ~IntelliTool() = 0;
+
98 
+
104 virtual void onMouseRightPressed(int x, int y);
+
105 
+
111 virtual void onMouseRightReleased(int x, int y);
+
112 
+
118 virtual void onMouseLeftPressed(int x, int y);
+
119 
+
125 virtual void onMouseLeftReleased(int x, int y);
+
126 
+
131 virtual void onWheelScrolled(int value);
+
132 
+
138 virtual void onMouseMoved(int x, int y);
+
139 
+
144 Tooltype getTooltype() const;
+
145 
+
150 bool getIsDrawing() const;
+
151 
+
152 };
+
153 #endif
+
+
+
@ PEN
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
bool getIsDrawing() const
getIsDrawing returns if the tool is currently drawing
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
Tooltype getTooltype() const
getTooltype returns the tools type
+
@ FLOODFILL
+
+
@ NONE
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
Tooltype
The Tooltype enum categorising the toosl.
Definition: IntelliTool.h:23
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
The LayerObject struct holds all the information needed to construct a layer.
Definition: PaintingArea.h:23
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * activeLayer
A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or prev...
Definition: IntelliTool.h:74
+
@ PLAIN
+
+
@ POLYGON
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general Painting Area and colorPicker.
Definition: IntelliTool.cpp:5
+
@ RECTANGLE
+
Definition: mainUnitTest.cpp:8
+
@ LINE
+
@ GRADIENT
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual ~IntelliTool()=0
An abstract Destructor.
Definition: IntelliTool.cpp:15
+
@ CIRCLE
+ + + + diff --git a/docs-src/html/_intelli_tool_circle_8cpp.html b/docs-src/html/_intelli_tool_circle_8cpp.html new file mode 100644 index 0000000..34f4c92 --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8cpp.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolCircle.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolCircle.cpp File Reference
+
+
+
#include "IntelliToolCircle.h"
+#include "Layer/PaintingArea.h"
+#include "QInputDialog"
+#include <cmath>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_circle_8cpp__incl.dot b/docs-src/html/_intelli_tool_circle_8cpp__incl.dot new file mode 100644 index 0000000..cbac39b --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8cpp__incl.dot @@ -0,0 +1,82 @@ +digraph "intelliphoto/src/Tool/IntelliToolCircle.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node10 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 [label="cmath",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_circle_8cpp_source.html b/docs-src/html/_intelli_tool_circle_8cpp_source.html new file mode 100644 index 0000000..bf7014e --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8cpp_source.html @@ -0,0 +1,221 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolCircle.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolCircle.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolCircle.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "QInputDialog"
+
4 #include <cmath>
+
5 
+ +
7  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
9 }
+
10 
+ + +
13 }
+
14 
+
15 void IntelliToolCircle::drawCircle(int radius){
+
16  QColor inner = this->colorPicker->getSecondColor();
+
17  inner.setAlpha(Toolsettings->getInnerAlpha());
+
18  int yMinimum, yMaximum, xMinimum, xMaximum;
+
19  yMinimum = centerPoint.y() - radius;
+
20  yMaximum = centerPoint.y() + radius;
+
21  // x = x0+-sqrt(r2-(y-y0)2)
+
22  for(int i = yMinimum; i<=yMaximum; i++) {
+
23  xMinimum = static_cast<int>(centerPoint.x() - sqrt(pow(radius,2) - pow(i - centerPoint.y(),2)));
+
24  xMaximum = static_cast<int>(centerPoint.x() + sqrt(pow(radius,2) - pow(i - centerPoint.y(),2)));
+
25  this->Canvas->image->drawLine(QPoint(xMinimum,i), QPoint(xMaximum,i),inner,1);
+
26  }
+
27 
+
28  //TODO implement circle drawing algorithm bresenham
+
29  radius = static_cast<int>(radius + (Toolsettings->getLineWidth() / 2.));
+
30  yMinimum = (centerPoint.y() - radius);
+
31  yMaximum = (centerPoint.y() + radius);
+
32  for(int i = yMinimum; i<=yMaximum; i++) {
+
33  xMinimum = static_cast<int>(centerPoint.x() - sqrt(pow(radius,2) - pow(i - centerPoint.y(),2)));
+
34  xMaximum = static_cast<int>(centerPoint.x() + sqrt(pow(radius,2) - pow(i - centerPoint.y(),2)));
+
35  this->Canvas->image->drawPoint(QPoint(xMinimum,i), colorPicker->getFirstColor(),Toolsettings->getLineWidth());
+
36  this->Canvas->image->drawPoint(QPoint(xMaximum,i), colorPicker->getFirstColor(),Toolsettings->getLineWidth());
+
37  }
+
38 
+
39  xMinimum = (centerPoint.x() - radius);
+
40  xMaximum = (centerPoint.x() + radius);
+
41  for(int i = xMinimum; i<=xMaximum; i++) {
+
42  int yMin = static_cast<int>(centerPoint.y() - sqrt(pow(radius,2) - pow(i - centerPoint.x(),2)));
+
43  int yMax = static_cast<int>(centerPoint.y() + sqrt(pow(radius,2) - pow(i - centerPoint.x(),2)));
+ + +
46  }
+
47 }
+
48 
+ + +
51 }
+
52 
+ + +
55 }
+
56 
+ + +
59  if(this->isDrawing) {
+
60  this->centerPoint = QPoint(x,y);
+
61  int radius = 1;
+
62  drawCircle(radius);
+ +
64  }
+
65 }
+
66 
+ + +
69 }
+
70 
+ + + +
74 }
+
75 
+ +
77  if(this->isDrawing) {
+
78  this->Canvas->image->drawPlain(Qt::transparent);
+
79  QPoint next(x,y);
+
80  int radius = static_cast<int>(sqrt(pow((centerPoint.x() - x),2) + pow((centerPoint.y() - y),2)));
+
81  drawCircle(radius);
+
82  }
+ +
84 }
+
+
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Clearing the canvas layer.
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. Changing the edge Width relative to value.
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
int getInnerAlpha() const
getInnerAlpha returns the inner alpha value.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
virtual void drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)
A function that draws a point between on a given point in a given color.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
IntelliToolCircle(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker. And reading in the inner alpha and ed...
+
virtual ~IntelliToolCircle() override
A Destructor.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse posit...
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse.
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+
@ CIRCLE
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Sets the middle point of the cricle.
+ + + + diff --git a/docs-src/html/_intelli_tool_circle_8h.html b/docs-src/html/_intelli_tool_circle_8h.html new file mode 100644 index 0000000..6a2b3db --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8h.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolCircle.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolCircle.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "QColor"
+#include "QPoint"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolCircle
 The IntelliToolCircle class represents a tool to draw a circle. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_circle_8h__dep__incl.dot b/docs-src/html/_intelli_tool_circle_8h__dep__incl.dot new file mode 100644 index 0000000..caf097a --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolCircle.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_circle_8h__incl.dot b/docs-src/html/_intelli_tool_circle_8h__incl.dot new file mode 100644 index 0000000..3ab8d29 --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8h__incl.dot @@ -0,0 +1,23 @@ +digraph "intelliphoto/src/Tool/IntelliToolCircle.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_circle_8h_source.html b/docs-src/html/_intelli_tool_circle_8h_source.html new file mode 100644 index 0000000..7cd1234 --- /dev/null +++ b/docs-src/html/_intelli_tool_circle_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolCircle.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolCircle.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLCIRCLE_H
+
2 #define INTELLITOOLCIRCLE_H
+
3 #include "IntelliTool.h"
+
4 
+
5 #include "QColor"
+
6 #include "QPoint"
+
7 
+
8 //for unit testing
+
9 class UnitTest;
+
10 
+ +
15 friend UnitTest;
+
20 void drawCircle(int radius);
+
21 
+
25 QPoint centerPoint;
+
26 
+
27 public:
+ +
34 
+
38 virtual ~IntelliToolCircle() override;
+
39 
+
45 virtual void onMouseRightPressed(int x, int y) override;
+
46 
+
52 virtual void onMouseRightReleased(int x, int y) override;
+
53 
+
59 virtual void onMouseLeftPressed(int x, int y) override;
+
60 
+
66 virtual void onMouseLeftReleased(int x, int y) override;
+
67 
+
72 virtual void onWheelScrolled(int value) override;
+
73 
+
79 virtual void onMouseMoved(int x, int y) override;
+
80 };
+
81 
+
82 #endif
+
+
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Clearing the canvas layer.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. Changing the edge Width relative to value.
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
IntelliToolCircle(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker. And reading in the inner alpha and ed...
+
virtual ~IntelliToolCircle() override
A Destructor.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
The IntelliColorPicker manages the selected colors for one whole project.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse posit...
+
Definition: mainUnitTest.cpp:8
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse.
+
The IntelliToolCircle class represents a tool to draw a circle.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Sets the middle point of the cricle.
+ + + + diff --git a/docs-src/html/_intelli_tool_flood_fill_8cpp.html b/docs-src/html/_intelli_tool_flood_fill_8cpp.html new file mode 100644 index 0000000..8f3dcd2 --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8cpp.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolFloodFill.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolFloodFill.cpp File Reference
+
+
+
#include "IntelliToolFloodFill.h"
+#include "Layer/PaintingArea.h"
+#include "QColorDialog"
+#include "QInputDialog"
+#include <functional>
+#include <queue>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_flood_fill_8cpp__incl.dot b/docs-src/html/_intelli_tool_flood_fill_8cpp__incl.dot new file mode 100644 index 0000000..db18bea --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8cpp__incl.dot @@ -0,0 +1,84 @@ +digraph "intelliphoto/src/Tool/IntelliToolFloodFill.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node10 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 [label="functional",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node31 [label="queue",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_flood_fill_8cpp_source.html b/docs-src/html/_intelli_tool_flood_fill_8cpp_source.html new file mode 100644 index 0000000..f1babb5 --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8cpp_source.html @@ -0,0 +1,216 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolFloodFill.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolFloodFill.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolFloodFill.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "QColorDialog"
+
4 #include "QInputDialog"
+
5 #include <functional>
+
6 #include <queue>
+
7 
+ +
9  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
11 }
+
12 
+ + +
15 }
+
16 
+ + +
19 }
+
20 
+ + +
23 }
+
24 
+ +
26  if(!(x>=0 && x<Area->getWidthOfActive() && y>=0 && y<Area->getHeightOfActive())) {
+
27  return;
+
28  }
+ +
30 
+
31  QPoint start(x,y);
+
32  std::queue<QPoint> Q;
+
33  Q.push(start);
+
34 
+
35  QColor oldColor = this->activeLayer->image->getPixelColor(start);
+
36  QColor newColor = this->colorPicker->getFirstColor();
+
37  if(newColor == oldColor) {
+
38  return;
+
39  }
+
40  Canvas->image->drawPixel(start,newColor);
+
41 
+
42  QPoint left, right, top, down;
+
43  while(!Q.empty()) {
+
44  QPoint Current = Q.front();
+
45  Q.pop();
+
46 
+
47  left = QPoint(Current.x() - 1,Current.y() );
+
48  right = QPoint(Current.x() + 1,Current.y() );
+
49  top = QPoint(Current.x(),Current.y() - 1);
+
50  down = QPoint(Current.x(),Current.y() + 1);
+
51  if((right.x() < Canvas->width) && (Canvas->image->getPixelColor(right) != newColor) && (activeLayer->image->getPixelColor(right) == oldColor)) {
+
52  Canvas->image->drawPixel(right,newColor);
+
53  Q.push(right);
+
54  }
+
55  if((left.x() >= 0) && (Canvas->image->getPixelColor(left) != newColor) && (activeLayer->image->getPixelColor(left) == oldColor)) {
+
56  Canvas->image->drawPixel(left,newColor);
+
57  Q.push(left);
+
58  }
+
59  if((top.y() >= 0) && (Canvas->image->getPixelColor(top) != newColor) && (activeLayer->image->getPixelColor(top) == oldColor)) {
+
60  Canvas->image->drawPixel(top,newColor);
+
61  Q.push(top);
+
62  }
+
63  if((down.y() < Canvas->height) && (Canvas->image->getPixelColor(down) != newColor) && (activeLayer->image->getPixelColor(down) == oldColor)) {
+
64  Canvas->image->drawPixel(down,newColor);
+
65  Q.push(down);
+
66  }
+
67  }
+
68 
+ +
70 }
+
71 
+ + +
74 }
+
75 
+ + +
78 
+
79 }
+
80 
+ + +
83 }
+
+
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
virtual void drawPixel(const QPoint &p1, const QColor &color)
A funtcion used to draw a pixel on the Image with the given Color.
+
@ FLOODFILL
+
IntelliToolFloodFill(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event.
+
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t...
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
virtual ~IntelliToolFloodFill() override
A Destructor.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * activeLayer
A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or prev...
Definition: IntelliTool.h:74
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
int width
width - Stores the width of a layer in pixels.
Definition: PaintingArea.h:31
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
+
virtual QColor getPixelColor(QPoint &point)
A function that returns the pixelcolor at a certain point.
+
int height
height - Stores the height of a layer in pixels.
Definition: PaintingArea.h:35
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Clearing the canvas.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_intelli_tool_flood_fill_8h.html b/docs-src/html/_intelli_tool_flood_fill_8h.html new file mode 100644 index 0000000..680ae30 --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8h.html @@ -0,0 +1,114 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolFloodFill.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolFloodFill.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "QColor"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolFloodFill
 The IntelliToolFloodFill class represents a tool to flood FIll a certian area. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_flood_fill_8h__dep__incl.dot b/docs-src/html/_intelli_tool_flood_fill_8h__dep__incl.dot new file mode 100644 index 0000000..a688139 --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolFloodFill.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_flood_fill_8h__incl.dot b/docs-src/html/_intelli_tool_flood_fill_8h__incl.dot new file mode 100644 index 0000000..85688f4 --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8h__incl.dot @@ -0,0 +1,22 @@ +digraph "intelliphoto/src/Tool/IntelliToolFloodFill.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_flood_fill_8h_source.html b/docs-src/html/_intelli_tool_flood_fill_8h_source.html new file mode 100644 index 0000000..bc91aa5 --- /dev/null +++ b/docs-src/html/_intelli_tool_flood_fill_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolFloodFill.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolFloodFill.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLFLOODFILL_H
+
2 #define INTELLITOOLFLOODFILL_H
+
3 #include "IntelliTool.h"
+
4 
+
5 #include "QColor"
+
6 
+
7 //for unit testing
+
8 class UnitTest;
+
9 
+
10 
+ +
15 friend UnitTest;
+
16 public:
+ +
23 
+
27 virtual ~IntelliToolFloodFill() override;
+
28 
+
29 
+
35 virtual void onMouseRightPressed(int x, int y) override;
+
36 
+
42 virtual void onMouseRightReleased(int x, int y) override;
+
43 
+
49 virtual void onMouseLeftPressed(int x, int y) override;
+
50 
+
56 virtual void onMouseLeftReleased(int x, int y) override;
+
57 
+
62 virtual void onWheelScrolled(int value) override;
+
63 
+
69 virtual void onMouseMoved(int x, int y) override;
+
70 };
+
71 
+
72 #endif
+
+
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
IntelliToolFloodFill(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event.
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t...
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
virtual ~IntelliToolFloodFill() override
A Destructor.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
The IntelliColorPicker manages the selected colors for one whole project.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Clearing the canvas.
+
Definition: mainUnitTest.cpp:8
+
The IntelliToolFloodFill class represents a tool to flood FIll a certian area.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_intelli_tool_gradient_8cpp.html b/docs-src/html/_intelli_tool_gradient_8cpp.html new file mode 100644 index 0000000..56bf5b4 --- /dev/null +++ b/docs-src/html/_intelli_tool_gradient_8cpp.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolGradient.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolGradient.cpp File Reference
+
+
+
#include "IntelliToolGradient.h"
+#include "Layer/PaintingArea.h"
+#include "math.h"
+#include <QDebug>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_gradient_8cpp_source.html b/docs-src/html/_intelli_tool_gradient_8cpp_source.html new file mode 100644 index 0000000..4f50725 --- /dev/null +++ b/docs-src/html/_intelli_tool_gradient_8cpp_source.html @@ -0,0 +1,257 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolGradient.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolGradient.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolGradient.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "math.h"
+
4 #include <QDebug>
+
5 
+ +
7  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
9  this->LineColor = QColor(0,0,0,255);
+
10  this->hasMoved = false;
+
11 }
+
12 
+ + +
15 }
+
16 
+ + +
19  doubleStartPoint[0] = static_cast<double>(x);
+
20  doubleStartPoint[1] = static_cast<double>(y);
+
21  startPoint = QPoint(x,y);
+
22  endPoint = QPoint(x,y);
+
23  VectorStartEnd[0] = 0;
+
24  VectorStartEnd[1] = 0;
+
25  Canvas->image->drawPixel(startPoint,LineColor);
+
26 }
+
27 
+ + +
30 }
+
31 
+ +
33  if(hasMoved && this->isDrawing) {
+
34  computeGradientLayer();
+ +
36  }
+
37 }
+
38 
+ + +
41 }
+
42 
+ +
44  if(this->isDrawing) {
+
45  hasMoved = true;
+
46  endPoint = QPoint(x,y);
+
47  this->Canvas->image->drawPlain(Qt::transparent);
+
48  computeGradientLayer();
+
49  Canvas->image->drawLine(startPoint,endPoint,LineColor,1);
+
50  }
+ +
52 }
+
53 
+ + +
56 }
+
57 
+
58 void IntelliToolGradient::computeAndDrawPixelColor(QPoint Point, int FirstColor[4], int SecondColor[4], double NormalVector[2], double NormalDotNormal){
+
59  double doublePoint[2];
+
60  doublePoint[0] = static_cast<double>(Point.x());
+
61  doublePoint[1] = static_cast<double>(Point.y());
+
62  double doublePointSubA[2];
+
63  doublePointSubA[0] = doublePoint[0] - doubleStartPoint[0];
+
64  doublePointSubA[1] = doublePoint[1] - doubleStartPoint[1];
+
65  double Perpendicular[2];
+
66  double PointSubADotNormal = dotProduct(doublePointSubA,NormalVector);
+
67  Perpendicular[0] = doublePoint[0] - (PointSubADotNormal / NormalDotNormal) * NormalVector[0];
+
68  Perpendicular[1] = doublePoint[1] - (PointSubADotNormal / NormalDotNormal) * NormalVector[1];
+
69  double VectorAPoint[2];
+
70  VectorAPoint[0] = static_cast<double>(Perpendicular[0] - doubleStartPoint[0]);
+
71  VectorAPoint[1] = static_cast<double>(Perpendicular[1] - doubleStartPoint[1]);
+
72  double ratio;
+
73  if(((VectorAPoint[0] < 0 && VectorStartEnd[0] < 0) || (VectorAPoint[0] > 0 && VectorStartEnd[0] > 0)) && ((VectorAPoint[1] < 0 && VectorStartEnd[1] < 0) || (VectorAPoint[1] > 0 && VectorStartEnd[1] > 0)))
+
74  ratio = lenghtVector(VectorAPoint) / lenghtVector(VectorStartEnd);
+
75  else{
+
76  ratio = -1;
+
77  }
+
78  QColor computedColor;
+
79  if(ratio < 0) {
+
80  computedColor = colorPicker->getFirstColor();
+
81  }
+
82  else if(ratio > 1) {
+
83  computedColor = colorPicker->getSecondColor();
+
84  }
+
85  else{
+
86  computedColor.setRed(static_cast<int>(ratio * SecondColor[0] + (1 - ratio) * FirstColor[0]));
+
87  computedColor.setGreen(static_cast<int>(ratio * SecondColor[1] + (1 - ratio) * FirstColor[1]));
+
88  computedColor.setBlue(static_cast<int>(ratio * SecondColor[2] + (1 - ratio) * FirstColor[2]));
+
89  computedColor.setAlpha(static_cast<int>(ratio * SecondColor[3] + (1 - ratio) * FirstColor[3]));
+
90  }
+
91  Canvas->image->drawPixel(Point,computedColor);
+
92 }
+
93 
+
94 double IntelliToolGradient::dotProduct(double Vector1[2], double Vector2[2]){
+
95  return static_cast<double>(Vector1[0] * Vector2[0] + Vector1[1] * Vector2[1]);
+
96 }
+
97 
+
98 double IntelliToolGradient::lenghtVector(double Vector[2]){
+
99  return static_cast<double>((sqrt(Vector[0] * Vector[0] + Vector[1] * Vector[1])));
+
100 }
+
101 
+
102 void IntelliToolGradient::computeGradientLayer(){
+
103  int FirstColor[4];
+
104  colorPicker->getFirstColor().getRgb(&FirstColor[0],&FirstColor[1],&FirstColor[2],&FirstColor[3]);
+
105  int SecondColor[4];
+
106  colorPicker->getSecondColor().getRgb(&SecondColor[0],&SecondColor[1],&SecondColor[2],&SecondColor[3]);
+
107 
+
108  double NormalVector[2];
+
109  double NormalDotNormal;
+
110 
+
111  VectorStartEnd[0] = static_cast<double>(endPoint.x() - startPoint.x());
+
112  VectorStartEnd[1] = static_cast<double>(endPoint.y() - startPoint.y());
+
113  NormalVector[0] = VectorStartEnd[1];
+
114  NormalVector[1] = (-1 * VectorStartEnd[0]);
+
115  NormalDotNormal = dotProduct(NormalVector,NormalVector);
+
116 
+
117  for(int i = 0; i < activeLayer->height; i++) {
+
118  for(int j = 0; j < activeLayer->width; j++) {
+
119  computeAndDrawPixelColor(QPoint(j,i), FirstColor, SecondColor, NormalVector, NormalDotNormal);
+
120  }
+
121  }
+
122 }
+
+
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click Released of a Mouse. Call this in child classes!
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
virtual void drawPixel(const QPoint &p1, const QColor &color)
A funtcion used to draw a pixel on the Image with the given Color.
+
virtual ~IntelliToolGradient() override
~IntelliToolGradient basic destructor.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
IntelliToolGradient(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
IntelliToolGradient basic constructor of the gradient tool.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * activeLayer
A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or prev...
Definition: IntelliTool.h:74
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
int width
width - Stores the width of a layer in pixels.
Definition: PaintingArea.h:31
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click Pressed of a Mouse. Resetting the current draw....
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. Call this in child classes!
+
+
int height
height - Stores the height of a layer in pixels.
Definition: PaintingArea.h:35
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
@ GRADIENT
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+ + + + diff --git a/docs-src/html/_intelli_tool_gradient_8h.html b/docs-src/html/_intelli_tool_gradient_8h.html new file mode 100644 index 0000000..2ba7603 --- /dev/null +++ b/docs-src/html/_intelli_tool_gradient_8h.html @@ -0,0 +1,113 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolGradient.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolGradient.h File Reference
+
+
+
#include "IntelliTool.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolGradient
 The IntelliToolGradient class that represents a gradient call. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_gradient_8h_source.html b/docs-src/html/_intelli_tool_gradient_8h_source.html new file mode 100644 index 0000000..bfe96a7 --- /dev/null +++ b/docs-src/html/_intelli_tool_gradient_8h_source.html @@ -0,0 +1,163 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolGradient.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolGradient.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLGRADIENT_H
+
2 #define INTELLITOOLGRADIENT_H
+
3 #include "IntelliTool.h"
+ +
8 
+
9 public:
+ +
17 
+
21 virtual ~IntelliToolGradient() override;
+
22 
+
28 virtual void onMouseRightPressed(int x, int y) override;
+
29 
+
35 virtual void onMouseRightReleased(int x, int y) override;
+
36 
+
42 virtual void onMouseLeftPressed(int x, int y) override;
+
43 
+
49 virtual void onMouseLeftReleased(int x, int y) override;
+
50 
+
55 virtual void onWheelScrolled(int value) override;
+
56 
+
62 virtual void onMouseMoved(int x, int y) override;
+
63 
+
64 private:
+
65 
+
69 QPoint startPoint;
+
70 
+
74 QPoint endPoint;
+
78 double doubleStartPoint[2];
+
79 
+
83 double VectorStartEnd[2];
+
84 
+
88 QColor LineColor;
+
89 
+
93 bool hasMoved;
+
94 
+
99 void computeAndDrawPixelColor(QPoint Point, int FirstColor[4], int SecondColor[4], double NormalVector[2], double NormalDotNormal);
+
100 
+
107 double dotProduct(double Vector1[2], double Vector2[2]);
+
108 
+
114 double lenghtVector(double Vector[2]);
+
115 
+
119 void computeGradientLayer();
+
120 };
+
121 
+
122 #endif // INTELLITOOLGRADIENT_H
+
+
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click Released of a Mouse. Call this in child classes!
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
virtual ~IntelliToolGradient() override
~IntelliToolGradient basic destructor.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
+
IntelliToolGradient(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
IntelliToolGradient basic constructor of the gradient tool.
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click Pressed of a Mouse. Resetting the current draw....
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. Call this in child classes!
+
The IntelliColorPicker manages the selected colors for one whole project.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
The IntelliToolGradient class that represents a gradient call.
+ + + + diff --git a/docs-src/html/_intelli_tool_line_8cpp.html b/docs-src/html/_intelli_tool_line_8cpp.html new file mode 100644 index 0000000..172eb59 --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8cpp.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolLine.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolLine.cpp File Reference
+
+
+
#include "IntelliToolLine.h"
+#include "Layer/PaintingArea.h"
+#include "QColorDialog"
+#include "QInputDialog"
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_line_8cpp__incl.dot b/docs-src/html/_intelli_tool_line_8cpp__incl.dot new file mode 100644 index 0000000..d1e7181 --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8cpp__incl.dot @@ -0,0 +1,80 @@ +digraph "intelliphoto/src/Tool/IntelliToolLine.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node10 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_line_8cpp_source.html b/docs-src/html/_intelli_tool_line_8cpp_source.html new file mode 100644 index 0000000..43832cf --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8cpp_source.html @@ -0,0 +1,181 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolLine.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolLine.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolLine.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "QColorDialog"
+
4 #include "QInputDialog"
+
5 
+ +
7  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
9 }
+
10 
+ + +
13 }
+
14 
+ + +
17 }
+
18 
+ + +
21 }
+
22 
+ + +
25  this->lineStartingPoint = QPoint(x,y);
+
26  this->Canvas->image->drawPoint(lineStartingPoint, colorPicker->getFirstColor(),Toolsettings->getLineWidth());
+ +
28 }
+
29 
+ + +
32 }
+
33 
+ + + +
37 }
+
38 
+
39 void IntelliToolLine::onMouseMoved(int x, int y){
+
40  if(this->isDrawing) {
+
41  this->Canvas->image->drawPlain(Qt::transparent);
+
42  QPoint next(x,y);
+
43  this->Canvas->image->drawLine(lineStartingPoint,next,colorPicker->getFirstColor(),Toolsettings->getLineWidth());
+
44  }
+ +
46 }
+
+
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
IntelliToolLine(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po...
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. Changing the lineWidth relative to value.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
+
virtual ~IntelliToolLine() override
An abstract Destructor.
+
virtual void drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)
A function that draws a point between on a given point in a given color.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Clearing the canvas.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Sets the starting point of the line.
+
@ LINE
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+ + + + diff --git a/docs-src/html/_intelli_tool_line_8h.html b/docs-src/html/_intelli_tool_line_8h.html new file mode 100644 index 0000000..78e0d66 --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8h.html @@ -0,0 +1,114 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolLine.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolLine.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "QPoint"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolLine
 The IntelliToolFloodFill class represents a tool to draw a line. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_line_8h.js b/docs-src/html/_intelli_tool_line_8h.js new file mode 100644 index 0000000..dde1f78 --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8h.js @@ -0,0 +1,8 @@ +var _intelli_tool_line_8h = +[ + [ "IntelliToolLine", "class_intelli_tool_line.html", "class_intelli_tool_line" ], + [ "LineStyle", "_intelli_tool_line_8h.html#a86e0f5648542856159bb40775c854aa7", [ + [ "SOLID_LINE", "_intelli_tool_line_8h.html#a86e0f5648542856159bb40775c854aa7ae45e1e6b2e6dde14829d057a4ef44199", null ], + [ "DOTTED_LINE", "_intelli_tool_line_8h.html#a86e0f5648542856159bb40775c854aa7a7660f396543c877e45d443f99d02bd0e", null ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_tool_line_8h__dep__incl.dot b/docs-src/html/_intelli_tool_line_8h__dep__incl.dot new file mode 100644 index 0000000..caaea0b --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolLine.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_line_8h__incl.dot b/docs-src/html/_intelli_tool_line_8h__incl.dot new file mode 100644 index 0000000..1cc4f4d --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8h__incl.dot @@ -0,0 +1,22 @@ +digraph "intelliphoto/src/Tool/IntelliToolLine.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_line_8h_source.html b/docs-src/html/_intelli_tool_line_8h_source.html new file mode 100644 index 0000000..c400cc4 --- /dev/null +++ b/docs-src/html/_intelli_tool_line_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolLine.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolLine.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLLINE_H
+
2 #define INTELLITOOLLINE_H
+
3 #include "IntelliTool.h"
+
4 
+
5 #include "QPoint"
+
6 
+
7 //for unit testing
+
8 class UnitTest;
+
9 
+
13 class IntelliToolLine : public IntelliTool {
+
14 friend UnitTest;
+
18 QPoint lineStartingPoint;
+
19 
+
20 public:
+
21 
+ +
28 
+
32 virtual ~IntelliToolLine() override;
+
33 
+
39 virtual void onMouseRightPressed(int x, int y) override;
+
40 
+
46 virtual void onMouseRightReleased(int x, int y) override;
+
47 
+
53 virtual void onMouseLeftPressed(int x, int y) override;
+
54 
+
60 virtual void onMouseLeftReleased(int x, int y) override;
+
61 
+
66 virtual void onWheelScrolled(int value) override;
+
67 
+
73 virtual void onMouseMoved(int x, int y) override;
+
74 };
+
75 
+
76 #endif
+
+
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
IntelliToolLine(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po...
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. Changing the lineWidth relative to value.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
virtual ~IntelliToolLine() override
An abstract Destructor.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Clearing the canvas.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
The IntelliColorPicker manages the selected colors for one whole project.
+
Definition: mainUnitTest.cpp:8
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Sets the starting point of the line.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
The IntelliToolFloodFill class represents a tool to draw a line.
+ + + + diff --git a/docs-src/html/_intelli_tool_pen_8cpp.html b/docs-src/html/_intelli_tool_pen_8cpp.html new file mode 100644 index 0000000..fb17e86 --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8cpp.html @@ -0,0 +1,108 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPen.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPen.cpp File Reference
+
+
+
#include "IntelliToolPen.h"
+#include "Layer/PaintingArea.h"
+#include "QDebug"
+#include "QColorDialog"
+#include "QInputDialog"
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_pen_8cpp__incl.dot b/docs-src/html/_intelli_tool_pen_8cpp__incl.dot new file mode 100644 index 0000000..3c494b2 --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8cpp__incl.dot @@ -0,0 +1,83 @@ +digraph "intelliphoto/src/Tool/IntelliToolPen.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node10 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="QDebug",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_pen_8cpp_source.html b/docs-src/html/_intelli_tool_pen_8cpp_source.html new file mode 100644 index 0000000..85207c0 --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8cpp_source.html @@ -0,0 +1,181 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPen.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPen.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolPen.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "QDebug"
+
4 #include "QColorDialog"
+
5 #include "QInputDialog"
+
6 
+ +
8  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
10 }
+
11 
+ + +
14 }
+
15 
+ + +
18 }
+
19 
+ + +
22 }
+
23 
+ + +
26  this->previousPoint = QPoint(x,y);
+ + +
29 }
+
30 
+ + +
33 }
+
34 
+
35 void IntelliToolPen::onMouseMoved(int x, int y){
+
36  if(this->isDrawing) {
+
37  QPoint newPoint(x,y);
+
38  this->Canvas->image->drawLine(this->previousPoint, newPoint, colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
39  this->previousPoint = newPoint;
+
40  }
+ +
42 }
+
43 
+ + + +
47 }
+
+
+
@ PEN
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
virtual ~IntelliToolPen() override
A Destructor.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. To draw the line.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Resetting the current draw.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
virtual void drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)
A function that draws a point between on a given point in a given color.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. Changing penWidth relativ to value.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the drawing to the active layer.
+
+
IntelliToolPen(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker. Reading the penWidth.
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Starting the drawing procedure.
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_intelli_tool_pen_8h.html b/docs-src/html/_intelli_tool_pen_8h.html new file mode 100644 index 0000000..9a08486 --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8h.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPen.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolPen.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "QColor"
+#include "QPoint"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolPen
 The IntelliToolPen class represents a tool to draw a line. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_pen_8h__dep__incl.dot b/docs-src/html/_intelli_tool_pen_8h__dep__incl.dot new file mode 100644 index 0000000..3f34edc --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolPen.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_pen_8h__incl.dot b/docs-src/html/_intelli_tool_pen_8h__incl.dot new file mode 100644 index 0000000..1057a48 --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8h__incl.dot @@ -0,0 +1,23 @@ +digraph "intelliphoto/src/Tool/IntelliToolPen.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_pen_8h_source.html b/docs-src/html/_intelli_tool_pen_8h_source.html new file mode 100644 index 0000000..4a4e257 --- /dev/null +++ b/docs-src/html/_intelli_tool_pen_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPen.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPen.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLPEN_H
+
2 #define INTELLITOOLPEN_H
+
3 
+
4 #include "IntelliTool.h"
+
5 #include "QColor"
+
6 #include "QPoint"
+
7 
+
8 //for unit testing
+
9 class UnitTest;
+
10 
+
14 class IntelliToolPen : public IntelliTool {
+
15 friend UnitTest;
+
19 QPoint previousPoint;
+
20 public:
+ +
30 virtual ~IntelliToolPen() override;
+
31 
+
37 virtual void onMouseRightPressed(int x, int y) override;
+
38 
+
44 virtual void onMouseRightReleased(int x, int y) override;
+
45 
+
51 virtual void onMouseLeftPressed(int x, int y) override;
+
52 
+
58 virtual void onMouseLeftReleased(int x, int y) override;
+
59 
+
64 virtual void onWheelScrolled(int value) override;
+
65 
+
71 virtual void onMouseMoved(int x, int y) override;
+
72 };
+
73 
+
74 #endif
+
+
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
virtual ~IntelliToolPen() override
A Destructor.
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event. To draw the line.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Resetting the current draw.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
The IntelliToolPen class represents a tool to draw a line.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. Changing penWidth relativ to value.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the drawing to the active layer.
+
IntelliToolPen(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker. Reading the penWidth.
+
The IntelliColorPicker manages the selected colors for one whole project.
+
Definition: mainUnitTest.cpp:8
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Starting the drawing procedure.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_intelli_tool_plain_8cpp.html b/docs-src/html/_intelli_tool_plain_8cpp.html new file mode 100644 index 0000000..8c261c5 --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8cpp.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPlain.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPlain.cpp File Reference
+
+
+
#include "IntelliToolPlain.h"
+#include "Layer/PaintingArea.h"
+#include "QColorDialog"
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_plain_8cpp__incl.dot b/docs-src/html/_intelli_tool_plain_8cpp__incl.dot new file mode 100644 index 0000000..924948c --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8cpp__incl.dot @@ -0,0 +1,78 @@ +digraph "intelliphoto/src/Tool/IntelliToolPlain.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node10 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_plain_8cpp_source.html b/docs-src/html/_intelli_tool_plain_8cpp_source.html new file mode 100644 index 0000000..ba6d543 --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8cpp_source.html @@ -0,0 +1,167 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPlain.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPlain.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolPlain.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "QColorDialog"
+
4 
+ +
6  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
8 }
+
9 
+ + +
12 }
+
13 
+ + + + +
18 }
+
19 
+ + +
22 }
+
23 
+ + +
26 }
+
27 
+ + +
30 }
+
31 
+ + +
34 }
+
35 
+ + +
38 }
+
+
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the fill to the active layer.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Filling the whole canvas.
+
@ PLAIN
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Resetting the current fill.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
IntelliToolPlainTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
virtual ~IntelliToolPlainTool() override
A Destructor.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+ + + + diff --git a/docs-src/html/_intelli_tool_plain_8h.html b/docs-src/html/_intelli_tool_plain_8h.html new file mode 100644 index 0000000..1dc1813 --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8h.html @@ -0,0 +1,114 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPlain.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolPlain.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "QColor"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolPlainTool
 The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_plain_8h__dep__incl.dot b/docs-src/html/_intelli_tool_plain_8h__dep__incl.dot new file mode 100644 index 0000000..7fe536a --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolPlain.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_plain_8h__incl.dot b/docs-src/html/_intelli_tool_plain_8h__incl.dot new file mode 100644 index 0000000..04d0217 --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8h__incl.dot @@ -0,0 +1,22 @@ +digraph "intelliphoto/src/Tool/IntelliToolPlain.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_plain_8h_source.html b/docs-src/html/_intelli_tool_plain_8h_source.html new file mode 100644 index 0000000..337104c --- /dev/null +++ b/docs-src/html/_intelli_tool_plain_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPlain.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPlain.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLFLOODFILLTOOL_H
+
2 #define INTELLITOOLFLOODFILLTOOL_H
+
3 
+
4 #include "IntelliTool.h"
+
5 #include "QColor"
+
6 
+
7 //for unit testing
+
8 class UnitTest;
+
9 
+ +
14 friend UnitTest;
+
15 public:
+ +
25 virtual ~IntelliToolPlainTool() override;
+
26 
+
32 virtual void onMouseRightPressed(int x, int y) override;
+
33 
+
39 virtual void onMouseRightReleased(int x, int y) override;
+
40 
+
46 virtual void onMouseLeftPressed(int x, int y) override;
+
47 
+
53 virtual void onMouseLeftReleased(int x, int y) override;
+
54 
+
59 virtual void onWheelScrolled(int value) override;
+
60 
+
66 virtual void onMouseMoved(int x, int y) override;
+
67 
+
68 };
+
69 
+
70 #endif
+
+
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the fill to the active layer.
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Filling the whole canvas.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
The IntelliColorPicker manages the selected colors for one whole project.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Resetting the current fill.
+
Definition: mainUnitTest.cpp:8
+
IntelliToolPlainTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker.
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.
+
virtual ~IntelliToolPlainTool() override
A Destructor.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_intelli_tool_polygon_8cpp.html b/docs-src/html/_intelli_tool_polygon_8cpp.html new file mode 100644 index 0000000..cd97de3 --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8cpp.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPolygon.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPolygon.cpp File Reference
+
+
+
#include "IntelliToolPolygon.h"
+#include "Layer/PaintingArea.h"
+#include <QCursor>
+#include <QInputDialog>
+#include <QDebug>
+#include <cmath>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_polygon_8cpp__incl.dot b/docs-src/html/_intelli_tool_polygon_8cpp__incl.dot new file mode 100644 index 0000000..61c8707 --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8cpp__incl.dot @@ -0,0 +1,85 @@ +digraph "intelliphoto/src/Tool/IntelliToolPolygon.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node11 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node11 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node11 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node15 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node11 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node24 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node24 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node11 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="QCursor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node31 [label="QDebug",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_polygon_8cpp_source.html b/docs-src/html/_intelli_tool_polygon_8cpp_source.html new file mode 100644 index 0000000..6ec27c8 --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8cpp_source.html @@ -0,0 +1,301 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPolygon.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPolygon.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolPolygon.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include <QCursor>
+
4 #include <QInputDialog>
+
5 #include <QDebug>
+
6 #include <cmath>
+
7 
+
8 IntelliToolPolygon::IntelliToolPolygon(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings, bool isSettingPolygon)
+
9  : IntelliTool(Area, colorPicker, Toolsettings){
+
10  isPointNearStart = false;
+
11  drawingOfPolygon = false;
+
12  isInside = false;
+
13  this->isSettingPolygon = isSettingPolygon;
+
14  if(isSettingPolygon) {
+ +
16  }
+ +
18 }
+
19 
+ +
21  if(drawingOfPolygon) {
+ +
23  }
+
24 }
+
25 
+ +
27  if(!drawingOfPolygon && Area->getTypeOfImageActiveLayer() == ImageType::SHAPEDIMAGE && x > 0 && y > 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
+
28  if(Area->getPolygonDataOfActiveLayer().size()>2) {
+ +
30  QPoint Point(x,y);
+
31  isInside = IntelliTriangulation::isInPolygon(Triangles,Point);
+
32  }
+
33  else{
+
34  isInside = true;
+
35  }
+
36  if(isSettingPolygon) {
+
37  isInside = true;
+
38  }
+
39  }
+
40  else if(!drawingOfPolygon && Area->getTypeOfImageActiveLayer() == ImageType::RASTERIMAGE && x >= 0 && y >= 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
+
41  isInside = true;
+
42  }
+
43 
+
44  if(isInside && !drawingOfPolygon) {
+ +
46  QPoint drawingPoint = QPoint(x,y);
+
47 
+
48  drawingOfPolygon = true;
+
49  QPointList.push_back(drawingPoint);
+
50 
+
51  this->Canvas->image->drawPoint(QPointList.back(), colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
52  if(!isSettingPolygon) {
+ +
54  }
+
55  }
+
56  else if(drawingOfPolygon && QPointList.size() > 0 && isNearStart(x,y,QPointList.front())) {
+
57  if(QPointList.size() > 2) {
+
58  isPointNearStart = true;
+
59  this->Canvas->image->drawLine(QPointList.back(), QPointList.front(), colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
60  if(!isSettingPolygon) {
+ +
62  }
+
63  }
+
64  else{
+
65  isInside = false;
+
66  drawingOfPolygon = false;
+
67  QPointList.clear();
+ + +
70  }
+
71 
+
72  }
+
73  else if(drawingOfPolygon) {
+
74  QPoint drawingPoint(x,y);
+
75  QPointList.push_back(drawingPoint);
+
76  this->Canvas->image->drawLine(QPointList[QPointList.size() - 2], QPointList[QPointList.size() - 1], colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
77  if(!isSettingPolygon) {
+ +
79  }
+
80  }
+
81 }
+
82 
+ +
84  drawingOfPolygon = false;
+
85  isInside = false;
+
86  isPointNearStart = false;
+
87  QPointList.clear();
+ +
89 }
+
90 
+ +
92  if(isPointNearStart) {
+
93  isInside = false;
+
94  isPointNearStart = false;
+
95  drawingOfPolygon = false;
+
96  if(!isSettingPolygon) {
+
97  std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(QPointList);
+
98  QPoint Point;
+
99  QColor colorTwo(colorPicker->getSecondColor());
+
100  colorTwo.setAlpha(Toolsettings->getInnerAlpha());
+
101  for(int i = 0; i < activeLayer->width; i++) {
+
102  for(int j = 0; j < activeLayer->height; j++) {
+
103  Point = QPoint(i,j);
+
104  if(IntelliTriangulation::isInPolygon(Triangles,Point)) {
+
105  this->Canvas->image->drawPixel(Point, colorTwo);
+
106  }
+
107  }
+
108  }
+
109  for(int i = 0; i<static_cast<int>(QPointList.size()); i++) {
+
110  int next = static_cast<int>((i + static_cast<int>(1)) % static_cast<int>(QPointList.size()));
+
111  this->Canvas->image->drawLine(QPointList[static_cast<unsigned long long>(i)], QPointList[static_cast<unsigned long long>(next)], colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
112  }
+
113 
+
114  }
+
115  else{
+
116  Canvas->image->setPolygon(QPointList);
+ +
118  }
+ +
120  QPointList.clear();
+
121  }
+
122 }
+
123 
+ + +
126 }
+
127 
+ +
129  if(!isSettingPolygon) {
+ +
131  if(!isDrawing) {
+ +
133  }
+
134  }
+
135 }
+
136 
+ +
138  if(!isSettingPolygon) {
+ +
140  }
+
141 }
+
142 
+
143 bool IntelliToolPolygon::isNearStart(int x, int y, QPoint Startpoint){
+
144  int StartX = Startpoint.x();
+
145  int StartY = Startpoint.y();
+
146  int valueToNear = 5;
+
147 
+
148  float euklid = sqrt(pow(static_cast<float>(StartX - x),2.f) + pow(static_cast<float>(StartY - y),2.f));
+
149 
+
150  return static_cast<int>(euklid)<valueToNear;
+
151 }
+
+
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
@ RASTERIMAGE
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
virtual void drawPixel(const QPoint &p1, const QColor &color)
A funtcion used to draw a pixel on the Image with the given Color.
+
std::vector< QPoint > getPolygonDataOfActiveLayer()
getPolygonDataOfActiveLayer get the polygon data of the active Layer.
+
std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
+
int getInnerAlpha() const
getInnerAlpha returns the inner alpha value.
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
virtual void drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)
A function that draws a point between on a given point in a given color.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * activeLayer
A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or prev...
Definition: IntelliTool.h:74
+
IntelliToolPolygon(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings, bool isSettingPolygon=false)
A constructor setting the general paintingArea and colorPicker.
+
@ POLYGON
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
int width
width - Stores the width of a layer in pixels.
Definition: PaintingArea.h:31
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void setImageData(const QImage &newData)
setImageData overwrites the old imageData the new imageData.
+
@ SHAPEDIMAGE
+
ImageType getTypeOfImageActiveLayer()
getTypeOfImageActiveLayer get the type of the active Layer.
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Resetting the current fill.
+
+
int height
height - Stores the height of a layer in pixels.
Definition: PaintingArea.h:35
+
QImage getImageDataOfActiveLayer()
getImageDataOfActiveLayer used to get the currents active imageData (if there isn't any active layer ...
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
The IntelliColorPicker manages the selected colors for one whole project.
+
~IntelliToolPolygon() override
A Destructor.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Setting polygon points.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the fill to the active layer.
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
bool isInPolygon(const std::vector< Triangle > &triangles, QPoint &point)
A function to check if a point lies in a polygon by checking its spanning triangles.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. CHanging the lineWidth relative to value.
+
virtual void setPolygon(const std::vector< QPoint > &polygonData)=0
An abstract function that sets the data of the visible Polygon, if needed.
+ + + + diff --git a/docs-src/html/_intelli_tool_polygon_8h.html b/docs-src/html/_intelli_tool_polygon_8h.html new file mode 100644 index 0000000..885cb85 --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8h.html @@ -0,0 +1,116 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPolygon.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolPolygon.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "IntelliHelper/IntelliTriangulation.h"
+#include <vector>
+#include <QPoint>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolPolygon
 The IntelliToolPolygon managed the Drawing of Polygonforms. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_polygon_8h__dep__incl.dot b/docs-src/html/_intelli_tool_polygon_8h__dep__incl.dot new file mode 100644 index 0000000..1093625 --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolPolygon.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_polygon_8h__incl.dot b/docs-src/html/_intelli_tool_polygon_8h__incl.dot new file mode 100644 index 0000000..8415d5b --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8h__incl.dot @@ -0,0 +1,27 @@ +digraph "intelliphoto/src/Tool/IntelliToolPolygon.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node9 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_polygon_8h_source.html b/docs-src/html/_intelli_tool_polygon_8h_source.html new file mode 100644 index 0000000..bc72609 --- /dev/null +++ b/docs-src/html/_intelli_tool_polygon_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolPolygon.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPolygon.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLPOLYGON_H
+
2 #define INTELLITOOLPOLYGON_H
+
3 
+
4 #include "IntelliTool.h"
+ +
6 #include <vector>
+
7 #include <QPoint>
+
8 
+
9 //for unit testing
+
10 class UnitTest;
+
11 
+ +
16 {
+
17 friend UnitTest;
+
25 bool isNearStart(int x, int y, QPoint Startpoint);
+
26 
+
30 bool drawingOfPolygon;
+
31 
+
35 bool isInside;
+
36 
+
40 bool isSettingPolygon;
+
41 
+
45 bool isPointNearStart;
+
46 
+
50 std::vector<QPoint> QPointList;
+
51 public:
+ +
62 ~IntelliToolPolygon() override;
+
63 
+
69 virtual void onMouseLeftPressed(int x, int y) override;
+
70 
+
76 virtual void onMouseLeftReleased(int x, int y) override;
+
77 
+
83 virtual void onMouseRightPressed(int x, int y) override;
+
84 
+
90 virtual void onMouseRightReleased(int x, int y) override;
+
91 
+
96 virtual void onWheelScrolled(int value) override;
+
97 
+
103 virtual void onMouseMoved(int x, int y) override;
+
104 
+
105 };
+
106 
+
107 #endif
+
+
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
IntelliToolPolygon(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings, bool isSettingPolygon=false)
A constructor setting the general paintingArea and colorPicker.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse. Resetting the current fill.
+
The IntelliColorPicker manages the selected colors for one whole project.
+
~IntelliToolPolygon() override
A Destructor.
+
Definition: mainUnitTest.cpp:8
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Setting polygon points.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
The IntelliToolPolygon managed the Drawing of Polygonforms.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the fill to the active layer.
+
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event. CHanging the lineWidth relative to value.
+ + + + diff --git a/docs-src/html/_intelli_tool_rectangle_8cpp.html b/docs-src/html/_intelli_tool_rectangle_8cpp.html new file mode 100644 index 0000000..970cd98 --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8cpp.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolRectangle.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolRectangle.cpp File Reference
+
+
+
#include "IntelliToolRectangle.h"
+#include "Layer/PaintingArea.h"
+#include "QInputDialog"
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_rectangle_8cpp__incl.dot b/docs-src/html/_intelli_tool_rectangle_8cpp__incl.dot new file mode 100644 index 0000000..d1bd66c --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8cpp__incl.dot @@ -0,0 +1,80 @@ +digraph "intelliphoto/src/Tool/IntelliToolRectangle.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="Layer/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node10 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node14 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node10 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node23 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node25 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node10 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node27 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node28 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_rectangle_8cpp_source.html b/docs-src/html/_intelli_tool_rectangle_8cpp_source.html new file mode 100644 index 0000000..798fc6f --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8cpp_source.html @@ -0,0 +1,199 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolRectangle.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolRectangle.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolRectangle.h"
+
2 #include "Layer/PaintingArea.h"
+
3 #include "QInputDialog"
+
4 
+ +
6  : IntelliTool(Area, colorPicker, Toolsettings){
+ +
8 }
+
9 
+ + +
12 }
+
13 
+
14 void IntelliToolRectangle::drawRectangle(QPoint otherCorner){
+
15  int xMin = std::min(originCorner.x(), otherCorner.x());
+
16  int xMax = std::max(originCorner.x(), otherCorner.x());
+
17 
+
18  int yMin = std::min(originCorner.y(), otherCorner.y());
+
19  int yMax = std::max(originCorner.y(), otherCorner.y());
+
20 
+
21  QColor clr = colorPicker->getSecondColor();
+
22  clr.setAlpha(Toolsettings->getInnerAlpha());
+
23  for(int y = yMin; y<=yMax; y++) {
+
24  this->Canvas->image->drawLine(QPoint(xMin,y), QPoint(xMax, y), clr, 1);
+
25  }
+
26  this->Canvas->image->drawLine(QPoint(xMin, yMin),QPoint(xMin, yMax), this->colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
27  this->Canvas->image->drawLine(QPoint(xMin, yMin),QPoint(xMax, yMin), this->colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
28  this->Canvas->image->drawLine(QPoint(xMax, yMax),QPoint(xMin, yMax), this->colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
29  this->Canvas->image->drawLine(QPoint(xMax, yMax),QPoint(xMax, yMin), this->colorPicker->getFirstColor(), Toolsettings->getLineWidth());
+
30 }
+
31 
+ + +
34 }
+
35 
+ + +
38 }
+
39 
+ + +
42  this->originCorner = QPoint(x,y);
+
43  drawRectangle(originCorner);
+ +
45 }
+
46 
+ + +
49 }
+
50 
+ +
52  if(this->isDrawing) {
+
53  this->Canvas->image->drawPlain(Qt::transparent);
+
54  QPoint next(x,y);
+
55  drawRectangle(next);
+
56  }
+ +
58 }
+
59 
+ + + +
63 }
+
+
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event.Changing edgeWidth relativ to value.
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
virtual void drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
A function that draws a line between two given points in a given color.
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
virtual ~IntelliToolRectangle() override
A Destructor.
+
int getInnerAlpha() const
getInnerAlpha returns the inner alpha value.
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle...
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse.Resetting the current draw.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
bool isDrawing
A flag checking if the user is currently drawing or not.
Definition: IntelliTool.h:84
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
LayerObject * Canvas
A pointer to the drawing canvas of the tool, work on this.
Definition: IntelliTool.h:79
+
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
+
Tooltype ActiveType
ActiveType the type of the active tool.
Definition: IntelliTool.h:59
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.Drawing a rectangle to currrent mouse position.
+
The IntelliColorPicker manages the selected colors for one whole project.
+
@ RECTANGLE
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the draw to the active layer.
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
virtual void drawPlain(const QColor &color)
A function that clears the whole image in a given Color.
+
IntelliToolRectangle(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker. And reading in the alphaInner and edg...
+ + + + diff --git a/docs-src/html/_intelli_tool_rectangle_8h.html b/docs-src/html/_intelli_tool_rectangle_8h.html new file mode 100644 index 0000000..2a2d84a --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8h.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolRectangle.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolRectangle.h File Reference
+
+
+
#include "IntelliTool.h"
+#include "QColor"
+#include "QPoint"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolRectangle
 The IntelliToolRectangle class represents a tool to draw a rectangle. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_tool_rectangle_8h__dep__incl.dot b/docs-src/html/_intelli_tool_rectangle_8h__dep__incl.dot new file mode 100644 index 0000000..01a2967 --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8h__dep__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Tool/IntelliToolRectangle.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_tool_rectangle_8h__incl.dot b/docs-src/html/_intelli_tool_rectangle_8h__incl.dot new file mode 100644 index 0000000..688c75e --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8h__incl.dot @@ -0,0 +1,23 @@ +digraph "intelliphoto/src/Tool/IntelliToolRectangle.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_tool_rectangle_8h_source.html b/docs-src/html/_intelli_tool_rectangle_8h_source.html new file mode 100644 index 0000000..fd52d68 --- /dev/null +++ b/docs-src/html/_intelli_tool_rectangle_8h_source.html @@ -0,0 +1,153 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliToolRectangle.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolRectangle.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLIRECTANGLETOOL_H
+
2 #define INTELLIRECTANGLETOOL_H
+
3 
+
4 #include "IntelliTool.h"
+
5 
+
6 #include "QColor"
+
7 #include "QPoint"
+
8 
+
9 //for unit testing
+
10 class UnitTest;
+
11 
+ +
16 friend UnitTest;
+
21 void drawRectangle(QPoint otherCorner);
+
22 
+
26 QPoint originCorner;
+
27 public:
+ +
37 virtual ~IntelliToolRectangle() override;
+
38 
+
44 virtual void onMouseRightPressed(int x, int y) override;
+
45 
+
51 virtual void onMouseRightReleased(int x, int y) override;
+
52 
+
58 virtual void onMouseLeftPressed(int x, int y) override;
+
59 
+
65 virtual void onMouseLeftReleased(int x, int y) override;
+
66 
+
71 virtual void onWheelScrolled(int value) override;
+
72 
+
78 virtual void onMouseMoved(int x, int y) override;
+
79 };
+
80 
+
81 #endif
+
+
+
virtual void onWheelScrolled(int value) override
A function managing the scroll event.Changing edgeWidth relativ to value.
+
virtual void onMouseRightReleased(int x, int y) override
A function managing the right click released of a mouse.
+
IntelliColorPicker * colorPicker
A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.
Definition: IntelliTool.h:64
+
+
IntelliToolsettings * Toolsettings
Toolsettings a refrence to the tool settings.
Definition: IntelliTool.h:69
+
virtual ~IntelliToolRectangle() override
A Destructor.
+
virtual void onMouseLeftPressed(int x, int y) override
A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle...
+
PaintingArea * Area
A pointer to the general PaintingArea to interact with.
Definition: IntelliTool.h:54
+
virtual void onMouseRightPressed(int x, int y) override
A function managing the right click pressed of a mouse.Resetting the current draw.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
The IntelliToolRectangle class represents a tool to draw a rectangle.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
virtual void onMouseMoved(int x, int y) override
A function managing the mouse moved event.Drawing a rectangle to currrent mouse position.
+
The IntelliColorPicker manages the selected colors for one whole project.
+
Definition: mainUnitTest.cpp:8
+
virtual void onMouseLeftReleased(int x, int y) override
A function managing the left click released of a mouse. Merging the draw to the active layer.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+
IntelliToolRectangle(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
A constructor setting the general paintingArea and colorPicker. And reading in the alphaInner and edg...
+ + + + diff --git a/docs-src/html/_intelli_toolsettings_8cpp.html b/docs-src/html/_intelli_toolsettings_8cpp.html new file mode 100644 index 0000000..b7ae367 --- /dev/null +++ b/docs-src/html/_intelli_toolsettings_8cpp.html @@ -0,0 +1,105 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliToolsettings.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolsettings.cpp File Reference
+
+
+
#include "IntelliToolsettings.h"
+#include <QInputDialog>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_intelli_toolsettings_8cpp__incl.dot b/docs-src/html/_intelli_toolsettings_8cpp__incl.dot new file mode 100644 index 0000000..9458335 --- /dev/null +++ b/docs-src/html/_intelli_toolsettings_8cpp__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliToolsettings.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliToolsettings.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QInputDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_toolsettings_8cpp_source.html b/docs-src/html/_intelli_toolsettings_8cpp_source.html new file mode 100644 index 0000000..4837275 --- /dev/null +++ b/docs-src/html/_intelli_toolsettings_8cpp_source.html @@ -0,0 +1,148 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliToolsettings.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolsettings.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliToolsettings.h"
+
2 #include <QInputDialog>
+
3 
+ +
5 {
+
6  lineWidth = 1;
+
7  innerAlpha = 255;
+
8 }
+
9 
+ +
11 
+
12 }
+
13 
+ +
15  return lineWidth;
+
16 }
+
17 
+ +
19  if(LineWidth < 1) {
+
20  LineWidth = 1;
+
21  }
+
22  else if(LineWidth > 50) {
+
23  LineWidth = 50;
+
24  }
+
25  lineWidth = LineWidth;
+
26 }
+
27 
+ +
29  return this->innerAlpha;
+
30 }
+
31 
+ +
33  if(innerAlpha < 0) {
+
34  innerAlpha = 0;
+
35  }
+
36  else if(innerAlpha > 255) {
+
37  innerAlpha = 255;
+
38  }
+
39  this->innerAlpha = innerAlpha;
+
40 }
+
+
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
+
int getInnerAlpha() const
getInnerAlpha returns the inner alpha value.
+
virtual ~IntelliToolsettings()
~IntelliToolsettings - basic destructor.
+
void setInnerAlpha(int innerAlpha)
setInnerAlpha sets the inner alpha attribute of the Tool.
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
IntelliToolsettings()
IntelliToolsettings - basic constructor of the IntelliToolsettings, initializing the basics.
+ + + + diff --git a/docs-src/html/_intelli_toolsettings_8h.html b/docs-src/html/_intelli_toolsettings_8h.html new file mode 100644 index 0000000..eee9354 --- /dev/null +++ b/docs-src/html/_intelli_toolsettings_8h.html @@ -0,0 +1,112 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliToolsettings.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolsettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IntelliToolsettings
 The IntelliToolsettings class managing the settings of the tools, independent of an existing tool. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_toolsettings_8h__dep__incl.dot b/docs-src/html/_intelli_toolsettings_8h__dep__incl.dot new file mode 100644 index 0000000..e71a1a5 --- /dev/null +++ b/docs-src/html/_intelli_toolsettings_8h__dep__incl.dot @@ -0,0 +1,62 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliToolsettings.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Intelli\lHelper/IntelliToolsettings.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Tool\l/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node4 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node4 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node4 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node4 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node4 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node4 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node4 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node3 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8h.html",tooltip=" "]; + Node15 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8h.html",tooltip=" "]; + Node16 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8h.html",tooltip=" "]; + Node17 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="intelliphoto/src/Tool\l/IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8h.html",tooltip=" "]; + Node18 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="intelliphoto/src/Tool\l/IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8h.html",tooltip=" "]; + Node19 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node20 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8h.html",tooltip=" "]; + Node21 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_toolsettings_8h_source.html b/docs-src/html/_intelli_toolsettings_8h_source.html new file mode 100644 index 0000000..a36e815 --- /dev/null +++ b/docs-src/html/_intelli_toolsettings_8h_source.html @@ -0,0 +1,137 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliToolsettings.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolsettings.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITOOLSETTINGS_H
+
2 #define INTELLITOOLSETTINGS_H
+
3 
+
4 //for unit testing
+
5 class UnitTest;
+ +
10 friend UnitTest;
+
11 public:
+ +
16 
+
20 virtual ~IntelliToolsettings();
+
21 
+
26 int getLineWidth() const;
+
27 
+
32 void setLineWidth(int LineWidth);
+
33 
+
38 int getInnerAlpha() const;
+
39 
+
44 void setInnerAlpha(int innerAlpha);
+
45 
+
46 private:
+
47 
+
51 int lineWidth;
+
52 
+
56 int innerAlpha;
+
57 };
+
58 
+
59 #endif
+
+
+
int getLineWidth() const
getLineWidth returns the width attribute of the line.
+
int getInnerAlpha() const
getInnerAlpha returns the inner alpha value.
+
virtual ~IntelliToolsettings()
~IntelliToolsettings - basic destructor.
+
void setInnerAlpha(int innerAlpha)
setInnerAlpha sets the inner alpha attribute of the Tool.
+
Definition: mainUnitTest.cpp:8
+
void setLineWidth(int LineWidth)
setLineWidth sets the width attribute of the line.
+
IntelliToolsettings()
IntelliToolsettings - basic constructor of the IntelliToolsettings, initializing the basics.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_intelli_triangulation_8cpp.html b/docs-src/html/_intelli_triangulation_8cpp.html new file mode 100644 index 0000000..e77d2dc --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8cpp.html @@ -0,0 +1,132 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliTriangulation.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliTriangulation.cpp File Reference
+
+
+
#include "IntelliTriangulation.h"
+#include <algorithm>
+#include <queue>
+#include <cmath>
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define pi   3.1415926535897932384626433832795
 
+

Macro Definition Documentation

+ +

◆ pi

+ +
+
+ + + + +
#define pi   3.1415926535897932384626433832795
+
+ +

Definition at line 5 of file IntelliTriangulation.cpp.

+ +
+
+
+
+ + + + diff --git a/docs-src/html/_intelli_triangulation_8cpp.js b/docs-src/html/_intelli_triangulation_8cpp.js new file mode 100644 index 0000000..f187ea4 --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8cpp.js @@ -0,0 +1,4 @@ +var _intelli_triangulation_8cpp = +[ + [ "pi", "_intelli_triangulation_8cpp.html#a1daf785e3f68d293c7caa1c756d5cb74", null ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_triangulation_8cpp__incl.dot b/docs-src/html/_intelli_triangulation_8cpp__incl.dot new file mode 100644 index 0000000..d4ea95e --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8cpp__incl.dot @@ -0,0 +1,19 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliTriangulation.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliTriangulation.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="algorithm",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="queue",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="cmath",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_triangulation_8cpp_source.html b/docs-src/html/_intelli_triangulation_8cpp_source.html new file mode 100644 index 0000000..254abb7 --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8cpp_source.html @@ -0,0 +1,233 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliTriangulation.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliTriangulation.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliTriangulation.h"
+
2 #include <algorithm>
+
3 #include <queue>
+
4 #include <cmath>
+
5 #define pi 3.1415926535897932384626433832795
+
6 
+
7 std::vector<Triangle> IntelliTriangulation::calculateTriangles(std::vector<QPoint> polyPoints){
+
8  // helper for managing the triangle vertices and their state
+
9  struct TriangleHelper {
+
10  QPoint vertex;
+
11  float interiorAngle;
+
12  int idx;
+
13  bool isTip;
+
14  };
+
15 
+
16  // calculates the inner angle of 'point'
+
17  auto calculateInner = [] (QPoint& point, QPoint& prev, QPoint& post) {
+
18  QPoint AP(point.x() - prev.x(), point.y() - prev.y());
+
19  QPoint BP(point.x() - post.x(), point.y() - post.y());
+
20 
+
21  float topSclar = AP.x() * BP.x() + AP.y() * BP.y();
+
22  float absolute = static_cast<float>(sqrt(pow(AP.x(),2.) + pow(AP.y(),2.)) * sqrt(pow(BP.x(),2.) + pow(BP.y(),2.)));
+
23  return acos(topSclar / absolute);
+
24  };
+
25 
+
26  // gets the first element of vec for which element.isTip == true holds
+
27  auto getTip = [] (const std::vector<TriangleHelper>& vec) {
+
28  size_t min = 0;
+
29  for(size_t i = 0; i<vec.size(); i++) {
+
30  if(vec[i].interiorAngle<vec[min].interiorAngle) {
+
31  min = i;
+
32  }
+
33  }
+
34  return vec[min];
+
35  };
+
36 
+
37  // get the vertex idx bevor idx in relation to the container length
+
38  auto getPrev = [] (int idx, int length) {
+
39  return (idx - 1)>=0 ? (idx - 1) : (length - 1);
+
40  };
+
41 
+
42  // get the vertex idx after idx in relation to the container lenght
+
43  auto getPost = [] (int idx, int length) {
+
44  return (idx + 1) % length;
+
45  };
+
46 
+
47  // return if the vertex is a tip
+
48  auto isTip = [] (float angle) {
+
49  return static_cast<double>(angle)<(pi / 2.);
+
50  };
+
51 
+
52  std::vector<TriangleHelper> Vertices;
+
53  std::vector<Triangle> Triangles;
+
54 
+
55  // set up all vertices and calculate intirior angle
+
56  for(int i = 0; i<static_cast<int>(polyPoints.size()); i++) {
+
57  TriangleHelper helper;
+
58  int prev = getPrev(i, static_cast<int>(polyPoints.size()));
+
59  int post = getPost(i, static_cast<int>(polyPoints.size()));
+
60 
+
61  helper.vertex = polyPoints[static_cast<size_t>(i)];
+
62  helper.idx = i;
+
63 
+
64  helper.interiorAngle = calculateInner(polyPoints[static_cast<size_t>(i)],
+
65  polyPoints[static_cast<size_t>(prev)],
+
66  polyPoints[static_cast<size_t>(post)]);
+
67  helper.isTip = isTip(helper.interiorAngle);
+
68  Vertices.push_back(helper);
+
69  }
+
70 
+
71  // search triangles based on the intirior angles of each vertey
+
72  while(Triangles.size() != polyPoints.size() - 2) {
+
73  Triangle tri;
+
74  TriangleHelper smallest = getTip(Vertices);
+
75  int prev = getPrev(smallest.idx, static_cast<int>(Vertices.size()));
+
76  int post = getPost(smallest.idx, static_cast<int>(Vertices.size()));
+
77 
+
78  // set triangle and push it
+
79  tri.A = Vertices[static_cast<size_t>(prev)].vertex;
+
80  tri.B = Vertices[static_cast<size_t>(smallest.idx)].vertex;
+
81  tri.C = Vertices[static_cast<size_t>(post)].vertex;
+
82  Triangles.push_back(tri);
+
83 
+
84  // update Vertice array
+
85  Vertices.erase(Vertices.begin() + smallest.idx);
+
86  for(size_t i = static_cast<size_t>(smallest.idx); i<Vertices.size(); i++) {
+
87  Vertices[i].idx -= 1;
+
88  }
+
89 
+
90  // update post und prev idx
+
91  post = getPrev(post, Vertices.size());
+
92  prev = prev<smallest.idx ? prev : (prev - 1);
+
93 
+
94  // calcultae neighboors of prev and post to calculate new interior angles
+
95  int prevOfPrev = getPrev(prev, static_cast<int>(Vertices.size()));
+
96  int postOfPrev = getPost(prev, static_cast<int>(Vertices.size()));
+
97 
+
98  int prevOfPost = getPrev(post, static_cast<int>(Vertices.size()));
+
99  int postOfPost = getPost(post, static_cast<int>(Vertices.size()));
+
100 
+
101  // update vertices with interior angles
+
102  // updtae prev
+
103  Vertices[static_cast<size_t>(prev)].interiorAngle = calculateInner(Vertices[static_cast<size_t>(prev)].vertex,
+
104  Vertices[static_cast<size_t>(prevOfPrev)].vertex,
+
105  Vertices[static_cast<size_t>(postOfPrev)].vertex);
+
106  Vertices[static_cast<size_t>(prev)].isTip = isTip(Vertices[static_cast<size_t>(prev)].interiorAngle);
+
107  // update post
+
108  Vertices[static_cast<size_t>(post)].interiorAngle = calculateInner(Vertices[static_cast<size_t>(post)].vertex,
+
109  Vertices[static_cast<size_t>(prevOfPost)].vertex,
+
110  Vertices[static_cast<size_t>(postOfPost)].vertex);
+
111  Vertices[static_cast<size_t>(post)].isTip = isTip(Vertices[static_cast<size_t>(post)].interiorAngle);
+
112  }
+
113  return Triangles;
+
114 }
+
115 
+
116 bool IntelliTriangulation::isInPolygon(const std::vector<Triangle> &triangles, QPoint &point){
+
117  for(auto triangle : triangles) {
+
118  if(IntelliTriangulation::isInTriangle(triangle, point)) {
+
119  return true;
+
120  }
+
121  }
+
122  return false;
+
123 }
+
+
+
bool isInTriangle(Triangle &tri, QPoint &P)
A function to check if a given point is in a triangle.
+
std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
+
QPoint B
+
#define pi
+
QPoint C
+
The Triangle struct holds the 3 vertices of a triangle.
+
QPoint A
+
bool isInPolygon(const std::vector< Triangle > &triangles, QPoint &point)
A function to check if a point lies in a polygon by checking its spanning triangles.
+
+ + + + diff --git a/docs-src/html/_intelli_triangulation_8h.html b/docs-src/html/_intelli_triangulation_8h.html new file mode 100644 index 0000000..17c8ebc --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8h.html @@ -0,0 +1,136 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliTriangulation.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliTriangulation.h File Reference
+
+
+
#include <QPoint>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

struct  Triangle
 The Triangle struct holds the 3 vertices of a triangle. More...
 
+ + + +

+Namespaces

 IntelliTriangulation
 
+ + + + + + + + + + + + + +

+Functions

float IntelliTriangulation::sign (QPoint &p1, QPoint &p2, QPoint &p3)
 A function to get the 2*area of a traingle, using its determinat. More...
 
bool IntelliTriangulation::isInTriangle (Triangle &tri, QPoint &P)
 A function to check if a given point is in a triangle. More...
 
std::vector< TriangleIntelliTriangulation::calculateTriangles (std::vector< QPoint > polyPoints)
 A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by clipping ears of a planar graph. More...
 
bool IntelliTriangulation::isInPolygon (const std::vector< Triangle > &triangles, QPoint &point)
 A function to check if a point lies in a polygon by checking its spanning triangles. More...
 
+
+
+ + + + diff --git a/docs-src/html/_intelli_triangulation_8h.js b/docs-src/html/_intelli_triangulation_8h.js new file mode 100644 index 0000000..1dfa6d3 --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8h.js @@ -0,0 +1,8 @@ +var _intelli_triangulation_8h = +[ + [ "Triangle", "struct_triangle.html", "struct_triangle" ], + [ "calculateTriangles", "_intelli_triangulation_8h.html#acdaf1ed598e868b25e9e06d580da32e5", null ], + [ "isInPolygon", "_intelli_triangulation_8h.html#ac276696f29d141ed34614c1c3b1c040f", null ], + [ "isInTriangle", "_intelli_triangulation_8h.html#ac150fee67fd41a451bd2592f10e00197", null ], + [ "sign", "_intelli_triangulation_8h.html#af9af549a7faff35a74c1265b290ea0ca", null ] +]; \ No newline at end of file diff --git a/docs-src/html/_intelli_triangulation_8h__dep__incl.dot b/docs-src/html/_intelli_triangulation_8h__dep__incl.dot new file mode 100644 index 0000000..00b4148 --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8h__dep__incl.dot @@ -0,0 +1,52 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliTriangulation.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/Image\l/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Image\l/IntelliImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8cpp.html",tooltip=" "]; + Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Image\l/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Image\l/IntelliRasterImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8cpp.html",tooltip=" "]; + Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Image\l/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node6 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Image\l/IntelliShapedImage.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8cpp.html",tooltip=" "]; + Node6 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node8 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node8 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node8 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node8 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node8 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node8 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node8 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node8 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node8 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; + Node6 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="intelliphoto/src/Intelli\lHelper/IntelliTriangulation.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8cpp.html",tooltip=" "]; + Node1 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node20 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_intelli_triangulation_8h__incl.dot b/docs-src/html/_intelli_triangulation_8h__incl.dot new file mode 100644 index 0000000..123f428 --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8h__incl.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/IntelliHelper/IntelliTriangulation.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Intelli\lHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_intelli_triangulation_8h_source.html b/docs-src/html/_intelli_triangulation_8h_source.html new file mode 100644 index 0000000..f307e18 --- /dev/null +++ b/docs-src/html/_intelli_triangulation_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper/IntelliTriangulation.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliTriangulation.h
+
+
+Go to the documentation of this file.
1 #ifndef INTELLITRIANGULATION_H
+
2 #define INTELLITRIANGULATION_H
+
3 
+
4 //for unit testing
+
5 class UnitTest;
+
6 
+
7 #include <QPoint>
+
8 #include <vector>
+
9 
+
13 struct Triangle {
+
14  QPoint A,B,C;
+
15 };
+
16 
+ +
18 
+
26 inline float sign(QPoint& p1, QPoint& p2, QPoint& p3){
+
27  return (p1.x() - p3.x()) * (p2.y() - p3.y()) - (p2.x() - p3.x()) * (p1.y() - p3.y());
+
28 }
+
29 
+
36 inline bool isInTriangle(Triangle& tri, QPoint& P){
+
37  float val1, val2, val3;
+
38  bool neg, pos;
+
39 
+
40  val1 = IntelliTriangulation::sign(P,tri.A,tri.B);
+
41  val2 = IntelliTriangulation::sign(P,tri.B,tri.C);
+
42  val3 = IntelliTriangulation::sign(P,tri.C,tri.A);
+
43 
+
44  neg = (val1<0.f) || (val2<0.f) || (val3<0.f);
+
45  pos = (val1>0.f) || (val2>0.f) || (val3>0.f);
+
46 
+
47  return !(neg && pos);
+
48 }
+
49 
+
55 std::vector<Triangle> calculateTriangles(std::vector<QPoint> polyPoints);
+
56 
+
63 bool isInPolygon(const std::vector<Triangle> &triangles, QPoint &point);
+
64 }
+
65 
+
66 #endif
+
+
+
bool isInTriangle(Triangle &tri, QPoint &P)
A function to check if a given point is in a triangle.
+
float sign(QPoint &p1, QPoint &p2, QPoint &p3)
A function to get the 2*area of a traingle, using its determinat.
+
std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
+
QPoint B
+
QPoint C
+
The Triangle struct holds the 3 vertices of a triangle.
+
+
QPoint A
+
Definition: mainUnitTest.cpp:8
+
bool isInPolygon(const std::vector< Triangle > &triangles, QPoint &point)
A function to check if a point lies in a polygon by checking its spanning triangles.
+ + + + diff --git a/docs-src/html/_painting_area_8cpp.html b/docs-src/html/_painting_area_8cpp.html new file mode 100644 index 0000000..6e96bd3 --- /dev/null +++ b/docs-src/html/_painting_area_8cpp.html @@ -0,0 +1,120 @@ + + + + + + + +IntelliPhoto: src/Layer/PaintingArea.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PaintingArea.cpp File Reference
+
+
+
#include "string.h"
+#include <vector>
+#include <QtWidgets>
+#include <QPoint>
+#include <QRect>
+#include "PaintingArea.h"
+#include "Image/IntelliRasterImage.h"
+#include "Image/IntelliShapedImage.h"
+#include "Tool/IntelliToolPen.h"
+#include "Tool/IntelliToolPlain.h"
+#include "Tool/IntelliToolLine.h"
+#include "Tool/IntelliToolCircle.h"
+#include "Tool/IntelliToolRectangle.h"
+#include "Tool/IntelliToolFloodFill.h"
+#include "Tool/IntelliToolPolygon.h"
+#include "Tool/IntelliToolGradient.h"
+#include "GUI/IntelliPhotoGui.h"
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_painting_area_8cpp__incl.dot b/docs-src/html/_painting_area_8cpp__incl.dot new file mode 100644 index 0000000..dfa6149 --- /dev/null +++ b/docs-src/html/_painting_area_8cpp__incl.dot @@ -0,0 +1,115 @@ +digraph "intelliphoto/src/Layer/PaintingArea.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="string.h",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QRect",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8h.html",tooltip=" "]; + Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node12 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node12 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node20 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node20 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node22 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node7 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node24 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node25 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="Tool/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node26 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node26 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 [label="Tool/IntelliToolPen.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8h.html",tooltip=" "]; + Node30 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node30 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node31 [label="Tool/IntelliToolPlain.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8h.html",tooltip=" "]; + Node31 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node31 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node32 [label="Tool/IntelliToolLine.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8h.html",tooltip=" "]; + Node32 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node32 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node33 [label="Tool/IntelliToolCircle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8h.html",tooltip=" "]; + Node33 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node33 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node33 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node34 [label="Tool/IntelliToolRectangle.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8h.html",tooltip=" "]; + Node34 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node34 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node34 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node35 [label="Tool/IntelliToolFloodFill.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8h.html",tooltip=" "]; + Node35 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node35 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node36 [label="Tool/IntelliToolPolygon.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8h.html",tooltip=" "]; + Node36 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node36 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node36 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node36 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_painting_area_8cpp_source.html b/docs-src/html/_painting_area_8cpp_source.html new file mode 100644 index 0000000..6a43410 --- /dev/null +++ b/docs-src/html/_painting_area_8cpp_source.html @@ -0,0 +1,747 @@ + + + + + + + +IntelliPhoto: src/Layer/PaintingArea.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PaintingArea.cpp
+
+
+Go to the documentation of this file.
1 // ---------- PaintingArea.cpp ----------
+
2 #include "string.h"
+
3 
+
4 #include <vector>
+
5 
+
6 #include <QtWidgets>
+
7 #include <QPoint>
+
8 #include <QRect>
+
9 
+
10 #include "PaintingArea.h"
+ + +
13 #include "Tool/IntelliToolPen.h"
+
14 #include "Tool/IntelliToolPlain.h"
+
15 #include "Tool/IntelliToolLine.h"
+
16 #include "Tool/IntelliToolCircle.h"
+ + + + +
21 #include "GUI/IntelliPhotoGui.h"
+
22 
+ +
24 
+
25 }
+
26 
+ + +
29  this->image = new IntelliRasterImage(*dynamic_cast<IntelliRasterImage*>(layer.image));
+
30  }else if(layer.image->getTypeOfImage()==ImageType::SHAPEDIMAGE) {
+
31  this->image = new IntelliShapedImage(*dynamic_cast<IntelliShapedImage*>(layer.image));
+
32  }
+
33  this->width = layer.width;
+
34  this->height = layer.height;
+
35  this->widthOffset = layer.widthOffset;
+
36  this->heightOffset = layer.heightOffset;
+
37  this->alpha = layer.alpha;
+
38 }
+
39 
+
40 PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
+
41  : QLabel(parent){
+
42  this->Tool = nullptr;
+
43  this->setCanvasDimensions(maxWidth, maxHeight);
+
44  activeLayer = -1;
+
45 }
+
46 
+ +
48  delete Tool;
+
49 }
+
50 
+
51 void PaintingArea::setRenderSettings(bool isFastRenderingOn){
+
52  bool ToolIsActive;
+
53 
+
54  if(Tool!=nullptr) {
+
55  ToolIsActive = Tool->getIsDrawing();
+
56  }
+
57  else{
+
58  ToolIsActive = false;
+
59  }
+
60  if(isFastRenderingOn != renderSettings.isFastRenderering() && !ToolIsActive) {
+
61  renderSettings.setFastRendering(isFastRenderingOn);
+
62  for(auto& layer : layerBundle) {
+
63  layer.image->updateRendererSetting(isFastRenderingOn);
+
64  }
+
65  }
+
66 }
+
67 
+ +
69  return this->renderSettings.isFastRenderering();
+
70 }
+
71 
+
72 void PaintingArea::setCanvasDimensions(int maxWidth, int maxHeight){
+
73  //set standart parameter
+
74  this->maxWidth = maxWidth;
+
75  this->maxHeight = maxHeight;
+
76  Canvas = new QImage(maxWidth,maxHeight, QImage::Format_ARGB32);
+
77 
+
78  this->offsetXDimension = maxWidth / 2;
+
79  this->offsetYDimension = maxHeight / 2;
+
80 
+
81  // Roots the widget to the top left even if resized
+
82  setAttribute(Qt::WA_StaticContents);
+
83 
+
84 }
+
85 
+
86 void PaintingArea::drawPixelOntoActive(QColor color, QPoint point){
+
87  layerBundle[static_cast<size_t>(activeLayer)].image->drawPixel(point, color);
+
88 }
+
89 
+
90 void PaintingArea::setPolygonDataToActive(std::vector<QPoint> points){
+
91  layerBundle[static_cast<size_t>(activeLayer)].image->setPolygon(points);
+
92 }
+
93 
+
94 int PaintingArea::addLayer(int width, int height, int widthOffset, int heightOffset,int alpha, ImageType type){
+
95  LayerObject newLayer;
+
96  updateTools();
+
97  newLayer.width = width;
+
98  newLayer.height = height;
+
99  newLayer.widthOffset = widthOffset;
+
100  newLayer.heightOffset = heightOffset;
+
101  newLayer.alpha = alpha;
+
102  if(type==ImageType::RASTERIMAGE) {
+
103  newLayer.image = new IntelliRasterImage(width,height,renderSettings.isFastRenderering());
+
104  }else if(type==ImageType::SHAPEDIMAGE) {
+
105  newLayer.image = new IntelliShapedImage(width, height, renderSettings.isFastRenderering());
+
106  }
+
107  this->layerBundle.push_back(newLayer);
+
108  activeLayer = static_cast<int>(layerBundle.size()) - 1;
+
109  return activeLayer;
+
110 }
+
111 
+
112 
+
113 void PaintingArea::deleteLayer(int idx, bool isTool){
+
114  if(!isTool) {
+
115  updateTools();
+
116  }
+
117  if(idx<static_cast<int>(layerBundle.size())&&idx>=0) {
+
118  this->layerBundle.erase(layerBundle.begin() + idx);
+
119  if(activeLayer>=idx) {
+
120  activeLayer--;
+
121  }
+
122  if(activeLayer < 0 && layerBundle.size()) {
+
123  activeLayer = 0;
+
124  }
+
125  }
+
126 }
+
127 
+ +
129  if(activeLayer>=0 && activeLayer < static_cast<int>(layerBundle.size())) {
+
130  this->layerBundle.erase(layerBundle.begin() + activeLayer);
+
131  activeLayer--;
+
132  }
+
133  historyadd();
+
134 }
+
135 
+ +
137  updateTools();
+
138  if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
+
139  this->activeLayer = idx;
+
140  }
+
141 }
+
142 
+
143 void PaintingArea::setLayerAlpha(int idx, int alpha){
+
144  if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
+
145  if(alpha>=0 && alpha<=255) {
+
146  layerBundle[static_cast<size_t>(idx)].alpha = alpha;
+
147  }
+
148  }
+
149 }
+ +
151  if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
+
152  if(layerBundle[static_cast<size_t>(idx)].image->getTypeOfImage()==ImageType::SHAPEDIMAGE) {
+
153  delete this->Tool;
+
154  this->Tool = new IntelliToolPolygon(this,&colorPicker,&Toolsettings, true);
+
155  isSettingPolygon = true;
+
156  this->guiReference->setToolWidth(5);
+
157  }
+
158  }
+
159 }
+
160 
+
161 // Used to load the image and place it in the widget
+
162 bool PaintingArea::open(const QString &filePath){
+
163  if(this->activeLayer==-1) {
+
164  return false;
+
165  }
+
166  IntelliImage* active = layerBundle[static_cast<size_t>(activeLayer)].image;
+
167  bool open = active->loadImage(filePath);
+
168  active->calculateVisiblity();
+
169  update();
+
170  return open;
+
171 }
+
172 
+ +
174  for(auto layer: layerBundle) {
+
175  delete layer.image;
+
176  }
+
177  layerBundle.clear();
+
178 }
+
179 
+
180 // Save the current image
+
181 bool PaintingArea::save(const QString &filePath, const char*fileFormat){
+
182  if(layerBundle.size()==0) {
+
183  return false;
+
184  }
+
185  this->drawLayers(true);
+
186 
+
187  if(!strcmp(fileFormat,"PNG")) {
+
188  QImage visibleImage = Canvas->convertToFormat(QImage::Format_Indexed8);
+
189  fileFormat = "png";
+
190  if (visibleImage.save(filePath, fileFormat)) {
+
191  return true;
+
192  } else {
+
193  return false;
+
194  }
+
195  }
+
196 
+
197  if (Canvas->save(filePath, fileFormat)) {
+
198  return true;
+
199  } else {
+
200  return false;
+
201  }
+
202 }
+
203 
+ +
205  updateTools();
+
206  layerBundle[static_cast<size_t>(activeLayer)].widthOffset += x;
+
207  layerBundle[static_cast<size_t>(activeLayer)].heightOffset += y;
+
208  historyadd();
+
209 }
+
210 
+ +
212  updateTools();
+
213  if(idx==1) {
+
214  this->selectLayerUp();
+
215  }else if(idx==-1) {
+
216  this->selectLayerDown();
+
217  }
+
218  guiReference->UpdateGui();
+
219  historyadd();
+
220 }
+
221 
+ +
223  updateTools();
+
224  if(a>=0 && a < static_cast<int>(layerBundle.size())) {
+
225  this->setLayerActive(a);
+
226  }
+
227 }
+
228 
+ +
230  QColor clr = QColorDialog::getColor(colorPicker.getFirstColor(), nullptr, "Main Color", QColorDialog::DontUseNativeDialog);
+
231  this->colorPicker.setFirstColor(clr);
+
232 }
+
233 
+ +
235  QColor clr = QColorDialog::getColor(colorPicker.getSecondColor(), nullptr, "Secondary Color", QColorDialog::DontUseNativeDialog);
+
236  this->colorPicker.setSecondColor(clr);
+
237 }
+
238 
+ +
240  this->colorPicker.swapColors();
+
241 }
+
242 
+ +
244  delete this->Tool;
+
245  Tool = new IntelliToolPen(this, &colorPicker, &Toolsettings);
+
246 }
+
247 
+ +
249  delete this->Tool;
+
250  Tool = new IntelliToolPlainTool(this, &colorPicker, &Toolsettings);
+
251 }
+
252 
+ +
254  delete this->Tool;
+
255  Tool = new IntelliToolLine(this, &colorPicker, &Toolsettings);
+
256 }
+
257 
+ +
259  delete this->Tool;
+
260  Tool = new IntelliToolRectangle(this, &colorPicker, &Toolsettings);
+
261 }
+
262 
+ +
264  delete this->Tool;
+
265  Tool = new IntelliToolCircle(this, &colorPicker, &Toolsettings);
+
266 }
+ +
268  delete this->Tool;
+
269  Tool = new IntelliToolPolygon(this, &colorPicker, &Toolsettings);
+
270 }
+
271 
+ +
273  delete this->Tool;
+
274  Tool = new IntelliToolFloodFill(this, &colorPicker, &Toolsettings);
+
275 }
+
276 
+ +
278  delete this->Tool;
+
279  Tool = new IntelliToolGradient(this, &colorPicker, &Toolsettings);
+
280 }
+
281 
+ +
283  return this->layerBundle[static_cast<size_t>(activeLayer)].width;
+
284 }
+
285 
+ +
287  return this->layerBundle[static_cast<size_t>(activeLayer)].height;
+
288 }
+
289 
+ +
291  return this->maxWidth;
+
292 }
+
293 
+ +
295  return this->maxHeight;
+
296 }
+
297 
+ +
299  return this->layerBundle[static_cast<size_t>(activeLayer)].image->getTypeOfImage();
+
300 }
+
301 
+ +
303  return this->layerBundle[static_cast<size_t>(activeLayer)].image->getPolygonData();
+
304 }
+
305 
+
306 // If a mouse button is pressed check if it was the
+
307 // left button and if so store the current position
+
308 // Set that we are currently drawing
+
309 void PaintingArea::mousePressEvent(QMouseEvent*event){
+
310  if(this->activeLayer < 0) {
+
311  return;
+
312  }
+
313  if(Tool == nullptr)
+
314  return;
+
315  int x = event->x() - layerBundle[static_cast<size_t>(activeLayer)].widthOffset - offsetXDimension;
+
316  int y = event->y() - layerBundle[static_cast<size_t>(activeLayer)].heightOffset - offsetYDimension;
+
317  if(event->button() == Qt::LeftButton) {
+
318  Tool->onMouseLeftPressed(x, y);
+
319  }else if(event->button() == Qt::RightButton) {
+
320  Tool->onMouseRightPressed(x, y);
+
321  }
+
322  update();
+
323 }
+
324 
+
325 // When the mouse moves if the left button is clicked
+
326 // we call the drawline function which draws a line
+
327 // from the last position to the current
+
328 void PaintingArea::mouseMoveEvent(QMouseEvent*event){
+
329  if(this->activeLayer < 0) {
+
330  return;
+
331  }
+
332  if(Tool == nullptr)
+
333  return;
+
334  int x = event->x() - layerBundle[static_cast<size_t>(activeLayer)].widthOffset - offsetXDimension;
+
335  int y = event->y() - layerBundle[static_cast<size_t>(activeLayer)].heightOffset - offsetYDimension;
+
336  Tool->onMouseMoved(x, y);
+
337  update();
+
338 }
+
339 
+
340 // If the button is released we set variables to stop drawing
+
341 void PaintingArea::mouseReleaseEvent(QMouseEvent*event){
+
342  if(this->activeLayer < 0)
+
343  return;
+
344  if(Tool == nullptr)
+
345  return;
+
346  int x = event->x() - layerBundle[static_cast<size_t>(activeLayer)].widthOffset - offsetXDimension;
+
347  int y = event->y() - layerBundle[static_cast<size_t>(activeLayer)].heightOffset - offsetYDimension;
+
348  if(event->button() == Qt::LeftButton) {
+
349  Tool->onMouseLeftReleased(x, y);
+
350  }else if(event->button() == Qt::RightButton) {
+
351  Tool->onMouseRightReleased(x, y);
+
352  }
+
353  update();
+
354 }
+
355 
+
356 void PaintingArea::wheelEvent(QWheelEvent*event){
+
357  if(this->activeLayer < 0)
+
358  return;
+
359  if(this->Tool != nullptr) {
+
360  QPoint numDegrees = event->angleDelta() / 8;
+
361  if(!numDegrees.isNull()) {
+
362  QPoint numSteps = numDegrees / 15;
+
363  Tool->onWheelScrolled(numSteps.y() * -1);
+
364  }
+
365  }
+
366 }
+
367 
+
368 // QPainter provides functions to draw on the widget
+
369 // The QPaintEvent is sent to widgets that need to
+
370 // update themselves
+
371 void PaintingArea::paintEvent(QPaintEvent*event){
+
372  this->setFixedSize(QSize(maxWidth * 2,maxHeight * 2));
+
373  this->drawLayers();
+
374 
+
375  QPainter painter(this);
+
376 
+
377  //insert zoom factor here
+
378  painter.scale(1,1);
+
379 
+
380  //calulate image here for scroll
+
381  //Todo set offset in first to parameters and calulate them into mouse position
+
382  painter.drawImage(0, 0, *Canvas, -offsetXDimension, -offsetYDimension);
+
383  update();
+
384 }
+
385 
+
386 void PaintingArea::selectLayerUp(){
+
387  updateTools();
+
388  if(activeLayer != -1 && static_cast<size_t>(activeLayer)<layerBundle.size() - 1) {
+
389  std::swap(layerBundle[static_cast<size_t>(activeLayer)], layerBundle[static_cast<size_t>(activeLayer + 1)]);
+
390  activeLayer++;
+
391  }
+
392 }
+
393 
+
394 void PaintingArea::selectLayerDown(){
+
395  updateTools();
+
396  if(activeLayer>0) {
+
397  std::swap(layerBundle[static_cast<size_t>(activeLayer)], layerBundle[static_cast<size_t>(activeLayer - 1)]);
+
398  activeLayer--;
+
399  }
+
400 }
+
401 
+
402 void PaintingArea::drawLayers(bool forSaving){
+
403  if(forSaving) {
+
404  Canvas->fill(Qt::GlobalColor::transparent);
+
405  }else{
+
406  Canvas->fill(Qt::GlobalColor::black);
+
407  }
+
408  for(size_t i = 0; i<layerBundle.size(); i++) {
+
409  LayerObject layer = layerBundle[i];
+
410  QImage cpy = layer.image->getDisplayable(layer.alpha);
+
411  QColor clr_0;
+
412  QColor clr_1;
+
413  for(int y = 0; y<layer.height; y++) {
+
414  if(layer.heightOffset + y<0) continue;
+
415  if(layer.heightOffset + y>=maxHeight) break;
+
416  for(int x = 0; x<layer.width; x++) {
+
417  if(layer.widthOffset + x<0) continue;
+
418  if(layer.widthOffset + x>=maxWidth) break;
+
419  clr_0 = Canvas->pixelColor(layer.widthOffset + x, layer.heightOffset + y);
+
420  clr_1 = cpy.pixelColor(x,y);
+
421  float t = static_cast<float>(clr_1.alpha()) / 255.f;
+
422  int r = static_cast<int>(static_cast<float>(clr_1.red()) * (t) + static_cast<float>(clr_0.red()) * (1.f - t) + 0.5f);
+
423  int g = static_cast<int>(static_cast<float>(clr_1.green()) * (t) + static_cast<float>(clr_0.green()) * (1.f - t) + 0.5f);
+
424  int b = static_cast<int>(static_cast<float>(clr_1.blue()) * (t) + static_cast<float>(clr_0.blue() * (1.f - t)) + 0.5f);
+
425  int a = std::min(clr_0.alpha() + clr_1.alpha(), 255);
+
426  clr_0.setRed(r);
+
427  clr_0.setGreen(g);
+
428  clr_0.setBlue(b);
+
429  clr_0.setAlpha(a);
+
430 
+
431  Canvas->setPixelColor(layer.widthOffset + x, layer.heightOffset + y, clr_0);
+
432  }
+
433  }
+
434  }
+
435 }
+
436 
+
437 bool PaintingArea::createTempTopLayer(int idx){
+
438  if(idx>=0) {
+
439  LayerObject newLayer;
+
440  newLayer.alpha = 255;
+
441  newLayer.height = layerBundle[static_cast<size_t>(idx)].height;
+
442  newLayer.width = layerBundle[static_cast<size_t>(idx)].width;
+
443  newLayer.heightOffset = layerBundle[static_cast<size_t>(idx)].heightOffset;
+
444  newLayer.widthOffset = layerBundle[static_cast<size_t>(idx)].widthOffset;
+
445  newLayer.image = layerBundle[static_cast<size_t>(idx)].image->getDeepCopy();
+
446  layerBundle.insert(layerBundle.begin() + idx + 1,newLayer);
+
447  return true;
+
448  }
+
449  return false;
+
450 }
+
451 
+
452 IntelliTool* PaintingArea::copyActiveTool(){
+
453  switch(Tool->getTooltype()) {
+ + + + + + + +
461  default: return nullptr;
+
462  }
+
463 }
+
464 
+ +
466  return activeLayer;
+
467 }
+
468 
+ +
470  if(activeLayer<0) {
+
471  return nullptr;
+
472  }
+
473  return layerBundle[static_cast<size_t>(activeLayer)].image;
+
474 }
+
475 
+ +
477  QImage returnImage;
+
478  if(activeLayer<0) {
+
479  returnImage = QImage(QSize(10,10),QImage::Format_ARGB32);
+
480  returnImage.fill(QColor(255,255,255,255));
+
481  }
+
482  else{
+
483  returnImage = layerBundle[static_cast<size_t>(activeLayer)].image->getImageData();
+
484  if(renderSettings.isFastRenderering()) {
+
485  returnImage = returnImage.convertToFormat(QImage::Format_ARGB32);
+
486  }
+
487  }
+
488  return returnImage;
+
489 }
+
490 
+
491 std::vector<LayerObject>* PaintingArea::getLayerBundle(){
+
492  return &layerBundle;
+
493 }
+
494 
+
495 void PaintingArea::updateTools(){
+
496  if(Tool!=nullptr) {
+
497  if(Tool->getIsDrawing()) {
+
498  IntelliTool* temp = copyActiveTool();
+
499  delete this->Tool;
+
500  this->Tool = temp;
+
501  }
+
502  if(isSettingPolygon) {
+
503  delete this->Tool;
+
504  this->Tool = nullptr;
+
505  isSettingPolygon = false;
+
506  }
+
507  }
+
508 }
+
509 
+ +
511 
+
512  history.erase(history.begin() + historyPresent + 1,history.end());
+
513  historyPresent++;
+
514  history.push_back(layerBundle);
+
515 }
+
516 
+ +
518  historyPresent--;
+
519  if( historyPresent<0) {
+
520  historyPresent = 0;
+
521  }
+
522  layerBundle = history[static_cast<size_t>(historyPresent)];
+
523  this->guiReference->UpdateGui();
+
524 }
+
525 
+ +
527  historyPresent++;
+
528  if(historyPresent>=static_cast<int>(history.size())) {
+
529  historyPresent = history.size() - 1;
+
530  }
+
531  layerBundle = history[static_cast<size_t>(historyPresent)];
+
532  this->guiReference->UpdateGui();
+
533 }
+
+
+
int getWidthOfActive()
The getWidthOfActive gets the horizontal dimensions of the active layer.
+
@ PEN
+
void createCircleTool()
createCircleTool creates a Circle Tool.
+
virtual void onMouseRightPressed(int x, int y)
A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
Definition: IntelliTool.cpp:19
+
QColor getFirstColor() const
A function to read the primary selected color.
+
@ RASTERIMAGE
+
virtual void onMouseLeftReleased(int x, int y)
A function managing the left click Released of a Mouse. Call this in child classes!
Definition: IntelliTool.cpp:37
+
ImageType
The Types, which an Image can be.
Definition: IntelliImage.h:22
+
void setRenderSettings(bool isFastRenderingOn)
setRenderSettings updates all Images to the new Rendersetting.
+
IntelliImage * getImageOfActiveLayer()
getImageOfActiveLayer returns the image of the active Layer.
+
void mouseReleaseEvent(QMouseEvent *event) override
mouseReleaseEvent handles a mouse released event
+
void createRectangleTool()
createRectangleTool creates a Rectangle Tool.
+
+
virtual void onMouseLeftPressed(int x, int y)
A function managing the left click Pressed of a Mouse. Resetting the current draw....
Definition: IntelliTool.cpp:30
+
bool getIsDrawing() const
getIsDrawing returns if the tool is currently drawing
+
int getMaxWidth()
getMaxWidth gets the max width of the Canvas.
+
+
bool isFastRenderering() const
The getfastRenderer gets the value of the flag for the fastRenderer setting.
+
bool save(const QString &filePath, const char *fileFormat)
The save method is used for exporting the current project as one picture.
+
Tooltype getTooltype() const
getTooltype returns the tools type
+
void setLayerAlpha(int idx, int alpha)
The setAlphaOfLayer method sets the alpha value of a specific layer.
+
@ FLOODFILL
+
std::vector< QPoint > getPolygonDataOfActiveLayer()
getPolygonDataOfActiveLayer get the polygon data of the active Layer.
+
void setLayerActive(int idx)
The setLayerToActive method marks a specific layer as active.
+
int widthOffset
widthOffset - Stores the number of pixles from the left side of the painting area.
Definition: PaintingArea.h:39
+
int getMaxHeight()
getMaxHeight gets the max height of the Canvas.
+
void deleteLayer(int idx, bool isTool=false)
The deleteLayer method removes a layer at a given idx.
+
The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color.
+
void setSecondColor(QColor Color)
A function to set the secondary color.
+
The IntelliShapedImage manages a Shapedimage.
+
int heightOffset
heightOffset - Stores the number of pixles from the top of the painting area.
Definition: PaintingArea.h:43
+
int getHeightOfActive()
The getHeightOfActive gets the vertical dimensions of the active layer.
+
+
virtual QImage getDisplayable(const QSize &displaySize, int alpha)=0
A function returning the displayable ImageData in a requested transparence and size.
+
void createPlainTool()
createPlainTool creates a Plain Tool.
+
void wheelEvent(QWheelEvent *event) override
wheelEvent handles a mouse wheel event
+
virtual ImageType getTypeOfImage()
Definition: IntelliImage.h:139
+
The LayerObject struct holds all the information needed to construct a layer.
Definition: PaintingArea.h:23
+
void createPenTool()
createPenTool creates a Pen Tool.
+
+
void mousePressEvent(QMouseEvent *event) override
mousePressEvent handles a mouse pressed event.
+
+
int alpha
alpha - Stores the alpha value of the layer (default=255).
Definition: PaintingArea.h:47
+
QColor getSecondColor() const
A function to read the secondary selected color.
+
int getIndexOfActiveLayer()
getIndexOfActiveLayer returns the index of athe active Layer.
+
void drawPixelOntoActive(QColor color, QPoint point)
drawPixelOntoActive draws a pixel onto the image data of the active Layer.
+
void historyGoBack()
historyGoBack go back in hisotry
+
The IntelliToolRectangle class represents a tool to draw a rectangle.
+
void createLineTool()
createLineTool creates a Line Tool.
+
+
The IntelliToolPen class represents a tool to draw a line.
+
void colorPickerSetSecondColor()
The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color.
+
virtual void onMouseRightReleased(int x, int y)
A function managing the right click Released of a Mouse. Merging the Canvas to Active....
Definition: IntelliTool.cpp:26
+
void colorPickerSetFirstColor()
The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color.
+
@ PLAIN
+
@ POLYGON
+
std::vector< LayerObject > * getLayerBundle()
getLayerBundle returns the real active layerbundle (care!)
+
int width
width - Stores the width of a layer in pixels.
Definition: PaintingArea.h:31
+
+
~PaintingArea() override
This deconstructor is used to clear up the memory and remove the currently active window.
+
void mouseMoveEvent(QMouseEvent *event) override
mouseMoveEvent handles a mouse moved event
+
+
void setFirstColor(QColor Color)
A function to set the primary color.
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
void slotDeleteActiveLayer()
The slotDeleteActiveLayer method handles the deletion of the active layer.
+
@ SHAPEDIMAGE
+
ImageType getTypeOfImageActiveLayer()
getTypeOfImageActiveLayer get the type of the active Layer.
+
void setToolWidth(int value)
setToolWidth stes a width to the tool
+
bool open(const QString &filePath)
The open method is used for loading a picture into the current layer.
+
void createPolygonTool()
createPolygonTool creates a Polygon Tool.
+
void moveActiveLayer(int idx)
The moveActiveLayer moves the active layer to a specific position in the layer stack.
+
IntelliColorPicker colorPicker
colorPicker a class to manage Tool color.
Definition: PaintingArea.h:286
+
PaintingArea(int maxWidth=600, int maxHeight=600, QWidget *parent=nullptr)
PaintingArea is the constructor of the PaintingArea class, which initiates the working environment.
+
+
int height
height - Stores the height of a layer in pixels.
Definition: PaintingArea.h:35
+
void deleteAllLayers()
deleteAllLayers deletes all layers
+
void setCanvasDimensions(int maxWidth, int maxHeight)
setCanvasDimensions sets the dimension of the Canvas
+
QImage getImageDataOfActiveLayer()
getImageDataOfActiveLayer used to get the currents active imageData (if there isn't any active layer ...
+
void createFloodFillTool()
createFloodFillTool creates a Floodfill Tool.
+
void slotActivateLayer(int a)
The slotActivateLayer method handles the event of selecting one layer as active.
+
void paintEvent(QPaintEvent *event) override
paintEvent handles a painting event
+
void setFastRendering(bool Updatedsetting)
setFastRendering sets fastRendering to Updatedsetting.
+
void UpdateGui()
UpdateGui a function to update all gui elements.
+
@ RECTANGLE
+
bool getRenderSettings()
getRenderSettings updates all Images to the new Rendersetting.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
virtual bool loadImage(const QString &filePath)
A function that loads and sclaes an image to the fitting dimensions.
+
IntelliToolsettings Toolsettings
Toolsettings - a class to manage Tool settings.
Definition: PaintingArea.h:281
+
void setPolygon(int idx)
setPolygon is used for setting polygondata, it only works on RASTER images
+
@ LINE
+
void swapColors()
A function switching primary and secondary color.
+
The IntelliToolFloodFill class represents a tool to flood FIll a certian area.
+
void colorPickerSwapColors()
The colorPickerSwitchColor swaps the primary color with the secondary drawing color.
+
+
The IntelliToolCircle class represents a tool to draw a circle.
+
void movePositionActive(int x, int y)
The movePositionActive method moves the active layer to certain position.
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
virtual void onMouseMoved(int x, int y)
A function managing the mouse moved event. Call this in child classes!
Definition: IntelliTool.cpp:48
+
int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)
The addLayer adds a layer to the current project/ painting area.
+
The IntelliToolPolygon managed the Drawing of Polygonforms.
+
void historyGoForward()
historyGoForward a function to undo the return of the previous state of the project.
+
virtual void calculateVisiblity()=0
An abstract function that calculates the visiblity of the Image data if needed.
+
void historyadd()
historyadd adds an hisotry step
+
LayerObject()
+
virtual void onWheelScrolled(int value)
A function managing the scroll event. A positive value means scrolling outwards. Call this in child c...
Definition: IntelliTool.cpp:53
+
The IntelliRasterImage manages a RASTERIMAGE.
+
void setPolygonDataToActive(std::vector< QPoint > points)
setPolygonDataToActive sets polygondata to the active Layer.
+
+
void createGradientTool()
createGradientTool creates a Gradient Tool.
+
The IntelliToolGradient class that represents a gradient call.
+
+
@ CIRCLE
+
The IntelliToolFloodFill class represents a tool to draw a line.
+ + + + diff --git a/docs-src/html/_painting_area_8h.html b/docs-src/html/_painting_area_8h.html new file mode 100644 index 0000000..48ea728 --- /dev/null +++ b/docs-src/html/_painting_area_8h.html @@ -0,0 +1,126 @@ + + + + + + + +IntelliPhoto: src/Layer/PaintingArea.h File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
PaintingArea.h File Reference
+
+
+
#include <QColor>
+#include <QImage>
+#include <QPoint>
+#include <QWidget>
+#include <QList>
+#include <QLabel>
+#include "Image/IntelliImage.h"
+#include "Image/IntelliRasterImage.h"
+#include "Image/IntelliShapedImage.h"
+#include "Tool/IntelliTool.h"
+#include "IntelliHelper/IntelliColorPicker.h"
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  LayerObject
 The LayerObject struct holds all the information needed to construct a layer. More...
 
class  PaintingArea
 The PaintingArea class manages the methods and stores information about the current painting area, which is the currently opened project. More...
 
+
+
+ + + + diff --git a/docs-src/html/_painting_area_8h__dep__incl.dot b/docs-src/html/_painting_area_8h__dep__incl.dot new file mode 100644 index 0000000..5bef6e6 --- /dev/null +++ b/docs-src/html/_painting_area_8h__dep__incl.dot @@ -0,0 +1,27 @@ +digraph "intelliphoto/src/Layer/PaintingArea.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="intelliphoto/src/GUI\l/IntelliPhotoGui.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8cpp.html",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="intelliphoto/src/Layer\l/PaintingArea.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_painting_area_8cpp.html",tooltip=" "]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="intelliphoto/src/Tool\l/IntelliTool.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8cpp.html",tooltip=" "]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="intelliphoto/src/Tool\l/IntelliToolCircle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_circle_8cpp.html",tooltip=" "]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="intelliphoto/src/Tool\l/IntelliToolFloodFill.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_flood_fill_8cpp.html",tooltip=" "]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="intelliphoto/src/Tool\l/IntelliToolLine.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_line_8cpp.html",tooltip=" "]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="intelliphoto/src/Tool\l/IntelliToolPen.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_pen_8cpp.html",tooltip=" "]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="intelliphoto/src/Tool\l/IntelliToolPlain.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_plain_8cpp.html",tooltip=" "]; + Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="intelliphoto/src/Tool\l/IntelliToolPolygon.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_polygon_8cpp.html",tooltip=" "]; + Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="intelliphoto/src/Tool\l/IntelliToolRectangle.cpp",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_rectangle_8cpp.html",tooltip=" "]; +} diff --git a/docs-src/html/_painting_area_8h__incl.dot b/docs-src/html/_painting_area_8h__incl.dot new file mode 100644 index 0000000..40d5420 --- /dev/null +++ b/docs-src/html/_painting_area_8h__incl.dot @@ -0,0 +1,71 @@ +digraph "intelliphoto/src/Layer/PaintingArea.h" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Layer\l/PaintingArea.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QImage",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node7 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="Image/IntelliImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_image_8h.html",tooltip=" "]; + Node16 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="QSize",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node16 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node16 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="IntelliHelper/IntelliTriangulation.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_triangulation_8h.html",tooltip=" "]; + Node19 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="IntelliHelper/IntelliRender\lSettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_render_settings_8h.html",tooltip=" "]; + Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="Image/IntelliRasterImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_raster_image_8h.html",tooltip=" "]; + Node21 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="Image/IntelliShapedImage.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_shaped_image_8h.html",tooltip=" "]; + Node22 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="Tool/IntelliTool.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_tool_8h.html",tooltip=" "]; + Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="IntelliHelper/IntelliColor\lPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node24 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliHelper/IntelliToolsettings.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_toolsettings_8h.html",tooltip=" "]; + Node23 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/_painting_area_8h_source.html b/docs-src/html/_painting_area_8h_source.html new file mode 100644 index 0000000..7a5e167 --- /dev/null +++ b/docs-src/html/_painting_area_8h_source.html @@ -0,0 +1,351 @@ + + + + + + + +IntelliPhoto: src/Layer/PaintingArea.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PaintingArea.h
+
+
+Go to the documentation of this file.
1 
+
2 #ifndef PaintingArea_H
+
3 #define PaintingArea_H
+
4 
+
5 #include <QColor>
+
6 #include <QImage>
+
7 #include <QPoint>
+
8 #include <QWidget>
+
9 #include <QList>
+
10 #include <QLabel>
+
11 #include "Image/IntelliImage.h"
+ + +
14 #include "Tool/IntelliTool.h"
+ +
16 
+
17 //for unit testing
+
18 class UnitTest;
+
19 class IntelliPhotoGui;
+
23 struct LayerObject {
+ +
31  int width;
+
35  int height;
+ + +
47  int alpha = 255;
+
48 
+
49  LayerObject();
+
50 
+
51  LayerObject(const LayerObject& layer);
+
52 };
+
53 
+
57 class PaintingArea : public QLabel
+
58 {
+
59 friend UnitTest;
+
60 // Declares our class as a QObject which is the base class
+
61 // for all Qt objects
+
62 // QObjects handle events
+
63 Q_OBJECT
+
64 friend IntelliTool;
+
65 friend IntelliPhotoGui;
+
66 public:
+
73 PaintingArea(int maxWidth = 600, int maxHeight = 600, QWidget*parent = nullptr);
+
74 
+
78 ~PaintingArea() override;
+
79 
+
84 void setRenderSettings(bool isFastRenderingOn);
+
85 
+
90 bool getRenderSettings();
+
91 
+
97 bool open(const QString &filePath);
+
104 bool save(const QString &filePath, const char*fileFormat);
+
105 
+
109 void deleteAllLayers();
+
120 int addLayer(int width, int height, int widthOffset = 0, int heightOffset = 0, int alpha = 255, ImageType type = ImageType::RASTERIMAGE);
+
131 int addLayerAt(int idx, int width, int height, int widthOffset = 0, int heightOffset = 0, ImageType type = ImageType::RASTERIMAGE);
+
137 void deleteLayer(int idx, bool isTool = false);
+
142 void setLayerActive(int idx);
+
148 void setLayerAlpha(int idx, int alpha);
+
153 void setPolygon(int idx);
+
159 void movePositionActive(int x, int y);
+
164 void moveActiveLayer(int idx);
+
165 
+ + +
177 void colorPickerSwapColors();
+
178 
+
182 void createPenTool();
+
183 
+
187 void createPlainTool();
+
188 
+
192 void createLineTool();
+
193 
+
197 void createRectangleTool();
+
198 
+
202 void createCircleTool();
+
203 
+
207 void createPolygonTool();
+
208 
+
212 void createFloodFillTool();
+
213 
+
217 void createGradientTool();
+
218 
+
223 int getWidthOfActive();
+
228 int getHeightOfActive();
+
229 
+
234 int getMaxWidth();
+
235 
+
240 int getMaxHeight();
+
241 
+ +
247 
+
252 std::vector<QPoint> getPolygonDataOfActiveLayer();
+
253 
+ +
259 
+ +
265 
+ +
271 
+
276 std::vector<LayerObject>* getLayerBundle();
+
277 
+ +
282 
+ +
287 
+
291 void historyadd();
+
292 
+
296 void historyGoBack();
+
297 
+
301 void historyGoForward();
+
302 
+
308 void setCanvasDimensions(int maxWidth, int maxHeight);
+
309 
+
315 void drawPixelOntoActive(QColor color, QPoint point);
+
316 
+
321 void setPolygonDataToActive(std::vector<QPoint> points);
+
322 public slots:
+
327 void slotActivateLayer(int a);
+
331 void slotDeleteActiveLayer();
+
332 
+
333 protected:
+
338 void mousePressEvent(QMouseEvent*event) override;
+
339 
+
344 void mouseMoveEvent(QMouseEvent*event) override;
+
345 
+
350 void mouseReleaseEvent(QMouseEvent*event) override;
+
351 
+
356 void wheelEvent(QWheelEvent*event) override;
+
357 
+
362 void paintEvent(QPaintEvent*event) override;
+
363 
+
364 private:
+
368 int offsetXDimension;
+
369 
+
373 int offsetYDimension;
+
374 
+
378 void selectLayerUp();
+
379 
+
383 void selectLayerDown();
+
384 
+
389 IntelliTool* copyActiveTool();
+
390 
+
394 QImage* Canvas;
+
395 
+
399 QImage ScaledCanvas;
+
400 
+
404 int maxWidth;
+
405 
+
409 int maxHeight;
+
410 
+
414 bool isSettingPolygon = false;
+
415 
+
419 IntelliRenderSettings renderSettings;
+
420 
+
424 IntelliTool* Tool;
+
425 
+
429 IntelliPhotoGui* guiReference;
+
430 
+
434 std::vector<LayerObject> layerBundle;
+
435 
+
439 int activeLayer = -1;
+
440 
+
445 void drawLayers(bool forSaving = false);
+
446 
+
452 bool createTempTopLayer(int idx);
+
453 
+
457 void updateTools();
+
458 
+
462 std::vector<std::vector<LayerObject> > history = {layerBundle};
+
463 
+
467 int historyPresent = 0;
+
468 
+
469 };
+
470 
+
471 #endif
+
+
+
int getWidthOfActive()
The getWidthOfActive gets the horizontal dimensions of the active layer.
+
void createCircleTool()
createCircleTool creates a Circle Tool.
+
@ RASTERIMAGE
+
ImageType
The Types, which an Image can be.
Definition: IntelliImage.h:22
+
int addLayerAt(int idx, int width, int height, int widthOffset=0, int heightOffset=0, ImageType type=ImageType::RASTERIMAGE)
The addLayerAt adds a layer to the current project/ painting area at a specific position in the layer...
+
void setRenderSettings(bool isFastRenderingOn)
setRenderSettings updates all Images to the new Rendersetting.
+
IntelliImage * getImageOfActiveLayer()
getImageOfActiveLayer returns the image of the active Layer.
+
void mouseReleaseEvent(QMouseEvent *event) override
mouseReleaseEvent handles a mouse released event
+
void createRectangleTool()
createRectangleTool creates a Rectangle Tool.
+
+
int getMaxWidth()
getMaxWidth gets the max width of the Canvas.
+
+
+
bool save(const QString &filePath, const char *fileFormat)
The save method is used for exporting the current project as one picture.
+
void setLayerAlpha(int idx, int alpha)
The setAlphaOfLayer method sets the alpha value of a specific layer.
+
std::vector< QPoint > getPolygonDataOfActiveLayer()
getPolygonDataOfActiveLayer get the polygon data of the active Layer.
+
The IntelliRenderSettings class which manages the render Settings.
+
void setLayerActive(int idx)
The setLayerToActive method marks a specific layer as active.
+
int widthOffset
widthOffset - Stores the number of pixles from the left side of the painting area.
Definition: PaintingArea.h:39
+
int getMaxHeight()
getMaxHeight gets the max height of the Canvas.
+
void deleteLayer(int idx, bool isTool=false)
The deleteLayer method removes a layer at a given idx.
+
The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto p...
+
int heightOffset
heightOffset - Stores the number of pixles from the top of the painting area.
Definition: PaintingArea.h:43
+
int getHeightOfActive()
The getHeightOfActive gets the vertical dimensions of the active layer.
+
void createPlainTool()
createPlainTool creates a Plain Tool.
+
void wheelEvent(QWheelEvent *event) override
wheelEvent handles a mouse wheel event
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+
The LayerObject struct holds all the information needed to construct a layer.
Definition: PaintingArea.h:23
+
void createPenTool()
createPenTool creates a Pen Tool.
+
void mousePressEvent(QMouseEvent *event) override
mousePressEvent handles a mouse pressed event.
+
+
int alpha
alpha - Stores the alpha value of the layer (default=255).
Definition: PaintingArea.h:47
+
void drawPixelOntoActive(QColor color, QPoint point)
drawPixelOntoActive draws a pixel onto the image data of the active Layer.
+
int getIndexOfActiveLayer()
getIndexOfActiveLayer returns the index of athe active Layer.
+
void historyGoBack()
historyGoBack go back in hisotry
+
void createLineTool()
createLineTool creates a Line Tool.
+
void colorPickerSetSecondColor()
The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color.
+
void colorPickerSetFirstColor()
The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color.
+
+
std::vector< LayerObject > * getLayerBundle()
getLayerBundle returns the real active layerbundle (care!)
+
int width
width - Stores the width of a layer in pixels.
Definition: PaintingArea.h:31
+
~PaintingArea() override
This deconstructor is used to clear up the memory and remove the currently active window.
+
void mouseMoveEvent(QMouseEvent *event) override
mouseMoveEvent handles a mouse moved event
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:17
+
void slotDeleteActiveLayer()
The slotDeleteActiveLayer method handles the deletion of the active layer.
+
ImageType getTypeOfImageActiveLayer()
getTypeOfImageActiveLayer get the type of the active Layer.
+
bool open(const QString &filePath)
The open method is used for loading a picture into the current layer.
+
void createPolygonTool()
createPolygonTool creates a Polygon Tool.
+
void moveActiveLayer(int idx)
The moveActiveLayer moves the active layer to a specific position in the layer stack.
+
IntelliColorPicker colorPicker
colorPicker a class to manage Tool color.
Definition: PaintingArea.h:286
+
PaintingArea(int maxWidth=600, int maxHeight=600, QWidget *parent=nullptr)
PaintingArea is the constructor of the PaintingArea class, which initiates the working environment.
+
int height
height - Stores the height of a layer in pixels.
Definition: PaintingArea.h:35
+
void deleteAllLayers()
deleteAllLayers deletes all layers
+
void setCanvasDimensions(int maxWidth, int maxHeight)
setCanvasDimensions sets the dimension of the Canvas
+
QImage getImageDataOfActiveLayer()
getImageDataOfActiveLayer used to get the currents active imageData (if there isn't any active layer ...
+
void createFloodFillTool()
createFloodFillTool creates a Floodfill Tool.
+
void slotActivateLayer(int a)
The slotActivateLayer method handles the event of selecting one layer as active.
+
The IntelliColorPicker manages the selected colors for one whole project.
+
void paintEvent(QPaintEvent *event) override
paintEvent handles a painting event
+
Definition: mainUnitTest.cpp:8
+
bool getRenderSettings()
getRenderSettings updates all Images to the new Rendersetting.
+
IntelliImage * image
image - Stores the imageData of the current LayerObject.
Definition: PaintingArea.h:27
+
IntelliToolsettings Toolsettings
Toolsettings - a class to manage Tool settings.
Definition: PaintingArea.h:281
+
void setPolygon(int idx)
setPolygon is used for setting polygondata, it only works on RASTER images
+
void colorPickerSwapColors()
The colorPickerSwitchColor swaps the primary color with the secondary drawing color.
+
void movePositionActive(int x, int y)
The movePositionActive method moves the active layer to certain position.
+
An abstract class which manages the basic IntelliImage operations.
Definition: IntelliImage.h:30
+
int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)
The addLayer adds a layer to the current project/ painting area.
+
void historyGoForward()
historyGoForward a function to undo the return of the previous state of the project.
+
void historyadd()
historyadd adds an hisotry step
+
LayerObject()
+
void setPolygonDataToActive(std::vector< QPoint > points)
setPolygonDataToActive sets polygondata to the active Layer.
+
void createGradientTool()
createGradientTool creates a Gradient Tool.
+
The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ + + + diff --git a/docs-src/html/_tool_2_intelli_color_picker_8cpp.html b/docs-src/html/_tool_2_intelli_color_picker_8cpp.html new file mode 100644 index 0000000..85db597 --- /dev/null +++ b/docs-src/html/_tool_2_intelli_color_picker_8cpp.html @@ -0,0 +1,105 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliColorPicker.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.cpp File Reference
+
+
+
#include "IntelliColorPicker.h"
+#include "QDebug"
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/docs-src/html/_tool_2_intelli_color_picker_8cpp__incl.dot b/docs-src/html/_tool_2_intelli_color_picker_8cpp__incl.dot new file mode 100644 index 0000000..1a77fa3 --- /dev/null +++ b/docs-src/html/_tool_2_intelli_color_picker_8cpp__incl.dot @@ -0,0 +1,17 @@ +digraph "intelliphoto/src/Tool/IntelliColorPicker.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/Tool\l/IntelliColorPicker.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_color_picker_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QColor",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPoint",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QColorDialog",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QDebug",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/_tool_2_intelli_color_picker_8cpp_source.html b/docs-src/html/_tool_2_intelli_color_picker_8cpp_source.html new file mode 100644 index 0000000..3f2f951 --- /dev/null +++ b/docs-src/html/_tool_2_intelli_color_picker_8cpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +IntelliPhoto: src/Tool/IntelliColorPicker.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker.cpp
+
+
+Go to the documentation of this file.
1 #include "IntelliColorPicker.h"
+
2 #include "QDebug"
+
3 
+ +
5  : IntelliTool(Area){
+
6  firstColor = {255,0,0,255};
+
7  secondColor = {0,0,255,255};
+
8 }
+
9 
+ +
11 
+
12 }
+
13 
+
14 void IntelliColorPicker::getColorbar(int firstOrSecondColor = 1){
+
15  QString Titel;
+
16  QColor newColor;
+
17  if(firstOrSecondColor == 1) {
+
18  Titel = "Choose first Color";
+
19  newColor = QColorDialog::getColor(this->firstColor,nullptr,Titel);
+
20  this->firstColor = newColor;
+
21  qDebug() << "Firstcolor" << this->firstColor;
+
22  }
+
23  else{
+
24  Titel = "Choose second Color";
+
25  newColor = QColorDialog::getColor(this->secondColor,nullptr,Titel);
+
26  this->secondColor = newColor;
+
27  }
+
28 }
+
29 
+ +
31  return firstColor;
+
32 }
+
33 
+ +
35  return secondColor;
+
36 }
+
+
+
virtual ~IntelliColorPicker()
IntelliColorPicker destructor clears up his used memory, if there is some.
+
QColor getSecondColor()
A function to read the secondary selected color.
+
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:37
+
+
An abstract class that manages the basic events, like mouse clicks or scrolls events.
Definition: IntelliTool.h:14
+
QColor getFirstColor()
A function to read the primary selected color.
+
IntelliColorPicker()
IntelliColorPicker constructor, setting 2 preset colors, be careful, theese color may change in produ...
+ + + + diff --git a/docs-src/html/annotated.html b/docs-src/html/annotated.html new file mode 100644 index 0000000..eb95d12 --- /dev/null +++ b/docs-src/html/annotated.html @@ -0,0 +1,125 @@ + + + + + + + +IntelliPhoto: Class List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + +
 CIntelliColorPickerThe IntelliColorPicker manages the selected colors for one whole project
 CIntelliImageAn abstract class which manages the basic IntelliImage operations
 CIntelliInputDialogCustomized Input Dialog to get Integers
 CIntelliPhotoGuiThe IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto program
 CIntelliRasterImageThe IntelliRasterImage manages a RASTERIMAGE
 CIntelliRenderSettingsWhich manages the render Settings
 CIntelliShapedImageThe IntelliShapedImage manages a Shapedimage
 CIntelliToolAn abstract class that manages the basic events, like mouse clicks or scrolls events
 CIntelliToolCircleTool to draw a circle
 CIntelliToolFloodFillTool to flood FIll a certian area
 CIntelliToolGradientThat represents a gradient call
 CIntelliToolLineThe IntelliToolFloodFill class represents a tool to draw a line
 CIntelliToolPenTool to draw a line
 CIntelliToolPlainToolTool to fill the whole canvas with one color
 CIntelliToolPolygonThe IntelliToolPolygon managed the Drawing of Polygonforms
 CIntelliToolRectangleTool to draw a rectangle
 CIntelliToolsettingsManaging the settings of the tools, independent of an existing tool
 CLayerObjectThe LayerObject struct holds all the information needed to construct a layer
 CPaintingAreaManages the methods and stores information about the current painting area, which is the currently opened project
 CTriangleThe Triangle struct holds the 3 vertices of a triangle
 CUnitTest
+
+
+
+ + + + diff --git a/docs-src/html/annotated_dup.js b/docs-src/html/annotated_dup.js new file mode 100644 index 0000000..28c407f --- /dev/null +++ b/docs-src/html/annotated_dup.js @@ -0,0 +1,24 @@ +var annotated_dup = +[ + [ "IntelliColorPicker", "class_intelli_color_picker.html", "class_intelli_color_picker" ], + [ "IntelliImage", "class_intelli_image.html", "class_intelli_image" ], + [ "IntelliInputDialog", "class_intelli_input_dialog.html", "class_intelli_input_dialog" ], + [ "IntelliPhotoGui", "class_intelli_photo_gui.html", "class_intelli_photo_gui" ], + [ "IntelliRasterImage", "class_intelli_raster_image.html", "class_intelli_raster_image" ], + [ "IntelliRenderSettings", "class_intelli_render_settings.html", "class_intelli_render_settings" ], + [ "IntelliShapedImage", "class_intelli_shaped_image.html", "class_intelli_shaped_image" ], + [ "IntelliTool", "class_intelli_tool.html", "class_intelli_tool" ], + [ "IntelliToolCircle", "class_intelli_tool_circle.html", "class_intelli_tool_circle" ], + [ "IntelliToolFloodFill", "class_intelli_tool_flood_fill.html", "class_intelli_tool_flood_fill" ], + [ "IntelliToolGradient", "class_intelli_tool_gradient.html", "class_intelli_tool_gradient" ], + [ "IntelliToolLine", "class_intelli_tool_line.html", "class_intelli_tool_line" ], + [ "IntelliToolPen", "class_intelli_tool_pen.html", "class_intelli_tool_pen" ], + [ "IntelliToolPlainTool", "class_intelli_tool_plain_tool.html", "class_intelli_tool_plain_tool" ], + [ "IntelliToolPolygon", "class_intelli_tool_polygon.html", "class_intelli_tool_polygon" ], + [ "IntelliToolRectangle", "class_intelli_tool_rectangle.html", "class_intelli_tool_rectangle" ], + [ "IntelliToolsettings", "class_intelli_toolsettings.html", "class_intelli_toolsettings" ], + [ "LayerObject", "struct_layer_object.html", "struct_layer_object" ], + [ "PaintingArea", "class_painting_area.html", "class_painting_area" ], + [ "Triangle", "struct_triangle.html", "struct_triangle" ], + [ "UnitTest", "class_unit_test.html", "class_unit_test" ] +]; \ No newline at end of file diff --git a/docs-src/html/bc_s.png b/docs-src/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..6054c8c7c29cf1b903e5c5a42df223373c951058 GIT binary patch literal 678 zcmV;X0$KfuP)dBLd(I7Y7vMq*|ei0J_NfS;O6QjEuOFGqmVe-6r-^u(YJMYZ1ceM0q`S^U_ zInajxtD+nM03m#FV4&AzGSe+=3w>~Kun7Q!PUf*Pl zRkzzc*kQMCWwy7CT?UX$rRuet#`I1w6#T8#UR70(4InW$*Z9fTKA$LAEtWMktG+OR zJNJ@}K-g?CZ-}CJl2x0RWm~)M~XZ3WBhY`}+F<0Gi`T zSC_M!W|)s?>edVZ5aJPqs*)5iJc1@~P6Gg;hc>${-r;cM3%mJAbR#+i0E99=(PyP; zCQ-=e-=pz~iN?jtoXPY`5IjE$`Ca2CaWE8W1Xdl6PBX*MYqeVKvvJke$H(i7c8a13 zKCwry<>Fq!Ffa}TgLUA6b}=5!pIgPfz4cQ+jEs)f>u(-!w~5Ahrc^3^I<>t&VDx*1 zW!cHr*0z&!sklOTa&Tls&l^ssQ`S0IuawKr2_P~&+^HYV^|aC$+=X_N$er007PL2ZdFlXLVlp3IG5A M07*qoM6N<$g88dJkN^Mx literal 0 HcmV?d00001 diff --git a/docs-src/html/bdwn.png b/docs-src/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..fd803bcfc5d20493e6327f61833461c497583b74 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZa8DP{riU$B%_`_Q})78&qol`;+0ABPnkpKVy literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_color_picker-members.html b/docs-src/html/class_intelli_color_picker-members.html new file mode 100644 index 0000000..6190a20 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker-members.html @@ -0,0 +1,110 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliColorPicker Member List
+
+ +
+ + + + diff --git a/docs-src/html/class_intelli_color_picker.html b/docs-src/html/class_intelli_color_picker.html new file mode 100644 index 0000000..976e766 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker.html @@ -0,0 +1,315 @@ + + + + + + + +IntelliPhoto: IntelliColorPicker Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliColorPicker Class Reference
+
+
+ +

The IntelliColorPicker manages the selected colors for one whole project. + More...

+ +

#include <IntelliColorPicker.h>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliColorPicker ()
 IntelliColorPicker constructor, setting 2 preset colors, be careful, theese color may change in production. More...
 
virtual ~IntelliColorPicker ()
 IntelliColorPicker destructor clears up his used memory, if there is some. More...
 
void swapColors ()
 A function switching primary and secondary color. More...
 
QColor getFirstColor () const
 A function to read the primary selected color. More...
 
QColor getSecondColor () const
 A function to read the secondary selected color. More...
 
void setFirstColor (QColor Color)
 A function to set the primary color. More...
 
void setSecondColor (QColor Color)
 A function to set the secondary color. More...
 
+

Detailed Description

+

The IntelliColorPicker manages the selected colors for one whole project.

+ +

Definition at line 14 of file IntelliColorPicker.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliColorPicker()

+ +
+
+ + + + + + + +
IntelliColorPicker::IntelliColorPicker ()
+
+ +

IntelliColorPicker constructor, setting 2 preset colors, be careful, theese color may change in production.

+ +

Definition at line 3 of file IntelliColorPicker.cpp.

+ +
+
+ +

◆ ~IntelliColorPicker()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliColorPicker::~IntelliColorPicker ()
+
+virtual
+
+ +

IntelliColorPicker destructor clears up his used memory, if there is some.

+ +

Definition at line 7 of file IntelliColorPicker.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getFirstColor()

+ +
+
+ + + + + + + +
QColor IntelliColorPicker::getFirstColor () const
+
+ +

A function to read the primary selected color.

+
Returns
Returns the primary color.
+ +

Definition at line 15 of file IntelliColorPicker.cpp.

+ +
+
+ +

◆ getSecondColor()

+ +
+
+ + + + + + + +
QColor IntelliColorPicker::getSecondColor () const
+
+ +

A function to read the secondary selected color.

+
Returns
Returns the secondary color.
+ +

Definition at line 19 of file IntelliColorPicker.cpp.

+ +
+
+ +

◆ setFirstColor()

+ +
+
+ + + + + + + + +
void IntelliColorPicker::setFirstColor (QColor Color)
+
+ +

A function to set the primary color.

+
Parameters
+ + +
Color- The color to be set as primary.
+
+
+ +

Definition at line 23 of file IntelliColorPicker.cpp.

+ +
+
+ +

◆ setSecondColor()

+ +
+
+ + + + + + + + +
void IntelliColorPicker::setSecondColor (QColor Color)
+
+ +

A function to set the secondary color.

+
Parameters
+ + +
Color- The color to be set as secondary.
+
+
+ +

Definition at line 27 of file IntelliColorPicker.cpp.

+ +
+
+ +

◆ swapColors()

+ +
+
+ + + + + + + +
void IntelliColorPicker::swapColors ()
+
+ +

A function switching primary and secondary color.

+ +

Definition at line 11 of file IntelliColorPicker.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_color_picker.js b/docs-src/html/class_intelli_color_picker.js new file mode 100644 index 0000000..f02759d --- /dev/null +++ b/docs-src/html/class_intelli_color_picker.js @@ -0,0 +1,10 @@ +var class_intelli_color_picker = +[ + [ "IntelliColorPicker", "class_intelli_color_picker.html#a0d1247bdd87add1396ea5d9acaad79ae", null ], + [ "~IntelliColorPicker", "class_intelli_color_picker.html#a40b975268a1f05249e8a49dde9a862ff", null ], + [ "getFirstColor", "class_intelli_color_picker.html#aeb08029a0c946ed0402c9c11a91965b1", null ], + [ "getSecondColor", "class_intelli_color_picker.html#ab41abe8fb7e184db2c33e792f09792e0", null ], + [ "setFirstColor", "class_intelli_color_picker.html#a7e2ddbbbfbed383f06b24e5bf6b27ae8", null ], + [ "setSecondColor", "class_intelli_color_picker.html#a86bf4a940e4a0e465e30cbdf28748931", null ], + [ "swapColors", "class_intelli_color_picker.html#aec499265ae28ce1b54be88222e74292e", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_color_picker_a437a6f20bf2fc0a4cbaf4c030c2a26d9_icgraph.dot b/docs-src/html/class_intelli_color_picker_a437a6f20bf2fc0a4cbaf4c030c2a26d9_icgraph.dot new file mode 100644 index 0000000..3370f98 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker_a437a6f20bf2fc0a4cbaf4c030c2a26d9_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliColorPicker::switchColors" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliColorPicker\l::switchColors",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function switching primary and secondary color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::colorPicker\lSwitchColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a66115307ff4a99cd7ca16423c5c8ecfb",tooltip="The colorPickerSwitchColor swaps the primary color with the secondary drawing color."]; +} diff --git a/docs-src/html/class_intelli_color_picker_a55568fbf5dc783f06284b7031ffe9415_icgraph.dot b/docs-src/html/class_intelli_color_picker_a55568fbf5dc783f06284b7031ffe9415_icgraph.dot new file mode 100644 index 0000000..41eed46 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker_a55568fbf5dc783f06284b7031ffe9415_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliColorPicker::getSecondColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliColorPicker\l::getSecondColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to read the secondary selected color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::colorPicker\lSetSecondColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#ae261acaaa346610dfed489dbac17e789",tooltip="The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliPhotoGui::UpdateGui",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_color_picker_a7e2ddbbbfbed383f06b24e5bf6b27ae8_icgraph.dot b/docs-src/html/class_intelli_color_picker_a7e2ddbbbfbed383f06b24e5bf6b27ae8_icgraph.dot new file mode 100644 index 0000000..cc08d61 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker_a7e2ddbbbfbed383f06b24e5bf6b27ae8_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliColorPicker::setFirstColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliColorPicker\l::setFirstColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to set the primary color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::colorPicker\lSetFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a4735d4cf1dc58a9096d904e74c39c4df",tooltip="The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color."]; +} diff --git a/docs-src/html/class_intelli_color_picker_a86bf4a940e4a0e465e30cbdf28748931_icgraph.dot b/docs-src/html/class_intelli_color_picker_a86bf4a940e4a0e465e30cbdf28748931_icgraph.dot new file mode 100644 index 0000000..a271fd7 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker_a86bf4a940e4a0e465e30cbdf28748931_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliColorPicker::setSecondColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliColorPicker\l::setSecondColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to set the secondary color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::colorPicker\lSetSecondColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#ae261acaaa346610dfed489dbac17e789",tooltip="The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color."]; +} diff --git a/docs-src/html/class_intelli_color_picker_aae2eb27b928fe9388b9398b0556303b7_icgraph.dot b/docs-src/html/class_intelli_color_picker_aae2eb27b928fe9388b9398b0556303b7_icgraph.dot new file mode 100644 index 0000000..ae35542 --- /dev/null +++ b/docs-src/html/class_intelli_color_picker_aae2eb27b928fe9388b9398b0556303b7_icgraph.dot @@ -0,0 +1,28 @@ +digraph "IntelliColorPicker::getFirstColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to read the primary selected color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::colorPicker\lSetFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a4735d4cf1dc58a9096d904e74c39c4df",tooltip="The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPlainTool\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9",tooltip="A function managing the left click pressed of a mouse. Filling the whole canvas."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolFloodFill\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961",tooltip="A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t..."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPen::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205",tooltip="A function managing the left click pressed of a mouse. Starting the drawing procedure."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolLine::onMouse\lLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846",tooltip="A function managing the left click pressed of a mouse. Sets the starting point of the line."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolPen::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2",tooltip="A function managing the mouse moved event. To draw the line."]; + Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; + Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliPhotoGui::UpdateGui",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_color_picker_aec499265ae28ce1b54be88222e74292e_icgraph.dot b/docs-src/html/class_intelli_color_picker_aec499265ae28ce1b54be88222e74292e_icgraph.dot new file mode 100644 index 0000000..a6c880e --- /dev/null +++ b/docs-src/html/class_intelli_color_picker_aec499265ae28ce1b54be88222e74292e_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliColorPicker::swapColors" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliColorPicker\l::swapColors",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function switching primary and secondary color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::colorPicker\lSwapColors",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#acff4563d006fda491469bd41778d07eb",tooltip="The colorPickerSwitchColor swaps the primary color with the secondary drawing color."]; +} diff --git a/docs-src/html/class_intelli_helper-members.html b/docs-src/html/class_intelli_helper-members.html new file mode 100644 index 0000000..363478b --- /dev/null +++ b/docs-src/html/class_intelli_helper-members.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliHelper Member List
+
+
+ +

This is the complete list of members for IntelliHelper, including all inherited members.

+ + + +
isInTriangle(QPoint &A, QPoint &B, QPoint &C, QPoint &P)IntelliHelperinlinestatic
sign(QPoint &p1, QPoint &p2, QPoint &p3)IntelliHelperinlinestatic
+
+ + + + diff --git a/docs-src/html/class_intelli_helper.html b/docs-src/html/class_intelli_helper.html new file mode 100644 index 0000000..1160554 --- /dev/null +++ b/docs-src/html/class_intelli_helper.html @@ -0,0 +1,234 @@ + + + + + + + +IntelliPhoto: IntelliHelper Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliHelper Class Reference
+
+
+ +

#include <IntelliHelper.h>

+ + + + + + +

+Static Public Member Functions

static float sign (QPoint &p1, QPoint &p2, QPoint &p3)
 
static bool isInTriangle (QPoint &A, QPoint &B, QPoint &C, QPoint &P)
 
+

Detailed Description

+
+

Definition at line 7 of file IntelliHelper.h.

+

Member Function Documentation

+ +

◆ isInTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool IntelliHelper::isInTriangle (QPoint & A,
QPoint & B,
QPoint & C,
QPoint & P 
)
+
+inlinestatic
+
+ +

Definition at line 15 of file IntelliHelper.h.

+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ sign()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static float IntelliHelper::sign (QPoint & p1,
QPoint & p2,
QPoint & p3 
)
+
+inlinestatic
+
+ +

Definition at line 11 of file IntelliHelper.h.

+
+Here is the caller graph for this function:
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_cgraph.dot b/docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_cgraph.dot new file mode 100644 index 0000000..7be3942 --- /dev/null +++ b/docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliHelper::isInTriangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_helper.html#a67fc007dda64187f6cef7fba3fcd9e40",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_icgraph.dot b/docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_icgraph.dot new file mode 100644 index 0000000..54d1362 --- /dev/null +++ b/docs-src/html/class_intelli_helper_a04bdb4f53b89dded693ba6e896f4c63f_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliHelper::isInTriangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a0221d93c3c8990f7dab332454cc21f50",tooltip=" "]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_helper_a67fc007dda64187f6cef7fba3fcd9e40_icgraph.dot b/docs-src/html/class_intelli_helper_a67fc007dda64187f6cef7fba3fcd9e40_icgraph.dot new file mode 100644 index 0000000..617951d --- /dev/null +++ b/docs-src/html/class_intelli_helper_a67fc007dda64187f6cef7fba3fcd9e40_icgraph.dot @@ -0,0 +1,16 @@ +digraph "IntelliHelper::sign" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliHelper::sign",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_helper.html#a04bdb4f53b89dded693ba6e896f4c63f",tooltip=" "]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage\l::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a0221d93c3c8990f7dab332454cc21f50",tooltip=" "]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e",tooltip=" "]; + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_image-members.html b/docs-src/html/class_intelli_image-members.html new file mode 100644 index 0000000..35376c4 --- /dev/null +++ b/docs-src/html/class_intelli_image-members.html @@ -0,0 +1,128 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliImage Member List
+
+
+ +

This is the complete list of members for IntelliImage, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
calculateVisiblity()=0IntelliImagepure virtual
drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)IntelliImagevirtual
drawPixel(const QPoint &p1, const QColor &color)IntelliImagevirtual
drawPlain(const QColor &color)IntelliImagevirtual
drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)IntelliImagevirtual
fastRendereringIntelliImageprotected
getDeepCopy()=0IntelliImagepure virtual
getDisplayable(const QSize &displaySize, int alpha)=0IntelliImagepure virtual
getDisplayable(int alpha=255)=0IntelliImagepure virtual
getHeight() constIntelliImagevirtual
getImageData()IntelliImagevirtual
getPixelColor(QPoint &point)IntelliImagevirtual
getPolygonData()IntelliImageinlinevirtual
getTypeOfImage()IntelliImageinlinevirtual
getWidth() constIntelliImagevirtual
imageDataIntelliImageprotected
IntelliImage(int width, int height, bool fastRendererOn)IntelliImage
isFastRendering() constIntelliImagevirtual
loadImage(const QString &filePath)IntelliImagevirtual
resizeImage(QImage *image, const QSize &newSize)IntelliImageprotected
setImageData(const QImage &newData)IntelliImagevirtual
setPolygon(const std::vector< QPoint > &polygonData)=0IntelliImagepure virtual
TypeOfImageIntelliImageprotected
updateRendererSetting(bool fastRendererOn)IntelliImagevirtual
~IntelliImage()=0IntelliImagepure virtual
+
+ + + + diff --git a/docs-src/html/class_intelli_image.html b/docs-src/html/class_intelli_image.html new file mode 100644 index 0000000..cbdf552 --- /dev/null +++ b/docs-src/html/class_intelli_image.html @@ -0,0 +1,1108 @@ + + + + + + + +IntelliPhoto: IntelliImage Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ +

An abstract class which manages the basic IntelliImage operations. + More...

+ +

#include <IntelliImage.h>

+
+Inheritance diagram for IntelliImage:
+
+
+ + +IntelliRasterImage +IntelliShapedImage + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliImage (int width, int height, bool fastRendererOn)
 The Construcor of the IntelliImage. Given the Image dimensions. More...
 
virtual ~IntelliImage ()=0
 An Abstract Destructor. More...
 
virtual void drawPixel (const QPoint &p1, const QColor &color)
 A funtcion used to draw a pixel on the Image with the given Color. More...
 
virtual void drawLine (const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
 A function that draws a line between two given points in a given color. More...
 
virtual void drawPoint (const QPoint &p1, const QColor &color, const int &penWidth)
 A function that draws a point between on a given point in a given color. More...
 
virtual void drawPlain (const QColor &color)
 A function that clears the whole image in a given Color. More...
 
virtual QImage getDisplayable (const QSize &displaySize, int alpha)=0
 A function returning the displayable ImageData in a requested transparence and size. More...
 
virtual QImage getDisplayable (int alpha=255)=0
 A function returning the displayable ImageData in a requested transparence and it's standart size. More...
 
virtual IntelliImagegetDeepCopy ()=0
 A function that copys all that returns a [allocated] Image. More...
 
virtual void calculateVisiblity ()=0
 An abstract function that calculates the visiblity of the Image data if needed. More...
 
virtual void setPolygon (const std::vector< QPoint > &polygonData)=0
 An abstract function that sets the data of the visible Polygon, if needed. More...
 
virtual std::vector< QPoint > getPolygonData ()
 A function that returns the Polygondata if existent. More...
 
virtual ImageType getTypeOfImage ()
 
virtual bool loadImage (const QString &filePath)
 A function that loads and sclaes an image to the fitting dimensions. More...
 
virtual QColor getPixelColor (QPoint &point)
 A function that returns the pixelcolor at a certain point. More...
 
virtual void updateRendererSetting (bool fastRendererOn)
 updateRendererSetting updates the existing image format to the new format. More...
 
virtual QImage getImageData ()
 getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!). More...
 
virtual void setImageData (const QImage &newData)
 setImageData overwrites the old imageData the new imageData. More...
 
virtual int getWidth () const
 getWidth returns the width of the Image. More...
 
virtual int getHeight () const
 getHeight returns the height of the Image. More...
 
virtual bool isFastRendering () const
 isFastRendering returns if the Image is in fast rendering mode. More...
 
+ + + +

+Protected Member Functions

void resizeImage (QImage *image, const QSize &newSize)
 
+ + + + + + + + + + +

+Protected Attributes

QImage imageData
 The underlying image data. More...
 
ImageType TypeOfImage
 The Type, an Image is. More...
 
bool fastRenderering
 fastRendering is the flag that represents the usage of 8bit pictures. More...
 
+

Detailed Description

+

An abstract class which manages the basic IntelliImage operations.

+ +

Definition at line 30 of file IntelliImage.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliImage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliImage::IntelliImage (int width,
int height,
bool fastRendererOn 
)
+
+ +

The Construcor of the IntelliImage. Given the Image dimensions.

+
Parameters
+ + + + +
width- The width of the Image.
height- The height of the Image.
fastRendererOn- Represents the flag for 8bit picture handelling.
+
+
+ +

Definition at line 5 of file IntelliImage.cpp.

+ +
+
+ +

◆ ~IntelliImage()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliImage::~IntelliImage ()
+
+pure virtual
+
+ +

An Abstract Destructor.

+ +

Definition at line 19 of file IntelliImage.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ calculateVisiblity()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IntelliImage::calculateVisiblity ()
+
+pure virtual
+
+ +

An abstract function that calculates the visiblity of the Image data if needed.

+ +

Implemented in IntelliRasterImage.

+ +
+
+ +

◆ drawLine()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IntelliImage::drawLine (const QPoint & p1,
const QPoint & p2,
const QColor & color,
const int & penWidth 
)
+
+virtual
+
+ +

A function that draws a line between two given points in a given color.

+
Parameters
+ + + + + +
p1- The coordinates of the first Point.
p2- The coordinates of the second Point.
color- The color of the line.
penWidth- The width of the line.
+
+
+ +

Definition at line 97 of file IntelliImage.cpp.

+ +
+
+ +

◆ drawPixel()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliImage::drawPixel (const QPoint & p1,
const QColor & color 
)
+
+virtual
+
+ +

A funtcion used to draw a pixel on the Image with the given Color.

+
Parameters
+ + + +
p1- The coordinates of the pixel, which should be drawn. [Top-Left-System]
color- The color of the pixel.
+
+
+ +

Definition at line 58 of file IntelliImage.cpp.

+ +
+
+ +

◆ drawPlain()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliImage::drawPlain (const QColor & color)
+
+virtual
+
+ +

A function that clears the whole image in a given Color.

+
Parameters
+ + +
color- The color, in which the image will be filled.
+
+
+ +

Definition at line 117 of file IntelliImage.cpp.

+ +
+
+ +

◆ drawPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IntelliImage::drawPoint (const QPoint & p1,
const QColor & color,
const int & penWidth 
)
+
+virtual
+
+ +

A function that draws a point between on a given point in a given color.

+
Parameters
+ + + + +
p1- The coordinates of the first Point.
color- The color of the point.
penWidth- The size of the point.
+
+
+ +

Definition at line 78 of file IntelliImage.cpp.

+ +
+
+ +

◆ getDeepCopy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual IntelliImage* IntelliImage::getDeepCopy ()
+
+pure virtual
+
+ +

A function that copys all that returns a [allocated] Image.

+
Returns
An [allocated] image with all the properties of the instance.
+ +

Implemented in IntelliShapedImage, and IntelliRasterImage.

+ +
+
+ +

◆ getDisplayable() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual QImage IntelliImage::getDisplayable (const QSize & displaySize,
int alpha 
)
+
+pure virtual
+
+ +

A function returning the displayable ImageData in a requested transparence and size.

+
Parameters
+ + + +
displaySize- The size, in whcih the Image should be displayed.
alpha- The maximum alpha value, a pixel can have.
+
+
+
Returns
A QImage which is ready to be displayed.
+ +

Implemented in IntelliShapedImage, and IntelliRasterImage.

+ +
+
+ +

◆ getDisplayable() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual QImage IntelliImage::getDisplayable (int alpha = 255)
+
+pure virtual
+
+ +

A function returning the displayable ImageData in a requested transparence and it's standart size.

+
Parameters
+ + +
alpha- The maximum alpha value, a pixel can have.
+
+
+
Returns
A QImage which is ready to be displayed.
+ +

Implemented in IntelliShapedImage, and IntelliRasterImage.

+ +
+
+ +

◆ getHeight()

+ +
+
+ + + + + +
+ + + + + + + +
int IntelliImage::getHeight () const
+
+virtual
+
+ +

getHeight returns the height of the Image.

+
Returns
The height of the Image in pixel.
+ +

Definition at line 167 of file IntelliImage.cpp.

+ +
+
+ +

◆ getImageData()

+ +
+
+ + + + + +
+ + + + + + + +
QImage IntelliImage::getImageData ()
+
+virtual
+
+ +

getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!).

+ +

Definition at line 135 of file IntelliImage.cpp.

+ +
+
+ +

◆ getPixelColor()

+ +
+
+ + + + + +
+ + + + + + + + +
QColor IntelliImage::getPixelColor (QPoint & point)
+
+virtual
+
+ +

A function that returns the pixelcolor at a certain point.

+
Parameters
+ + +
point- The point from whcih to get the coordinates.
+
+
+
Returns
The color of the Pixel as QColor.
+ +

Definition at line 127 of file IntelliImage.cpp.

+ +
+
+ +

◆ getPolygonData()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector<QPoint> IntelliImage::getPolygonData ()
+
+inlinevirtual
+
+ +

A function that returns the Polygondata if existent.

+
Returns
The Polygondata if existent.
+ +

Reimplemented in IntelliShapedImage.

+ +

Definition at line 135 of file IntelliImage.h.

+ +
+
+ +

◆ getTypeOfImage()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ImageType IntelliImage::getTypeOfImage ()
+
+inlinevirtual
+
+ +

Definition at line 139 of file IntelliImage.h.

+ +
+
+ +

◆ getWidth()

+ +
+
+ + + + + +
+ + + + + + + +
int IntelliImage::getWidth () const
+
+virtual
+
+ +

getWidth returns the width of the Image.

+
Returns
The width of the Image in pixel.
+ +

Definition at line 163 of file IntelliImage.cpp.

+ +
+
+ +

◆ isFastRendering()

+ +
+
+ + + + + +
+ + + + + + + +
bool IntelliImage::isFastRendering () const
+
+virtual
+
+ +

isFastRendering returns if the Image is in fast rendering mode.

+
Returns
True if the Image is fast rendered, flase otherwiese.
+ +

Definition at line 171 of file IntelliImage.cpp.

+ +
+
+ +

◆ loadImage()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IntelliImage::loadImage (const QString & filePath)
+
+virtual
+
+ +

A function that loads and sclaes an image to the fitting dimensions.

+
Parameters
+ + +
filePath- The path+name of the image which to loaded.
+
+
+
Returns
True if the image could be loaded, false otherwise.
+ +

Definition at line 23 of file IntelliImage.cpp.

+ +
+
+ +

◆ resizeImage()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliImage::resizeImage (QImage * image,
const QSize & newSize 
)
+
+protected
+
+ +

Definition at line 38 of file IntelliImage.cpp.

+ +
+
+ +

◆ setImageData()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliImage::setImageData (const QImage & newData)
+
+virtual
+
+ +

setImageData overwrites the old imageData the new imageData.

+
Parameters
+ + +
newData- represents the new imageData
+
+
+ +

Definition at line 143 of file IntelliImage.cpp.

+ +
+
+ +

◆ setPolygon()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IntelliImage::setPolygon (const std::vector< QPoint > & polygonData)
+
+pure virtual
+
+ +

An abstract function that sets the data of the visible Polygon, if needed.

+
Parameters
+ + +
polygonData- The Vertices of the Polygon. Just Planar Polygons are allowed.
+
+
+ +

Implemented in IntelliShapedImage, and IntelliRasterImage.

+ +
+
+ +

◆ updateRendererSetting()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliImage::updateRendererSetting (bool fastRendererOn)
+
+virtual
+
+ +

updateRendererSetting updates the existing image format to the new format.

+
Parameters
+ + +
fastRendererOnflag for the 8bit image handeling.
+
+
+ +

Definition at line 153 of file IntelliImage.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ fastRenderering

+ +
+
+ + + + + +
+ + + + +
bool IntelliImage::fastRenderering
+
+protected
+
+ +

fastRendering is the flag that represents the usage of 8bit pictures.

+ +

Definition at line 51 of file IntelliImage.h.

+ +
+
+ +

◆ imageData

+ +
+
+ + + + + +
+ + + + +
QImage IntelliImage::imageData
+
+protected
+
+ +

The underlying image data.

+ +

Definition at line 41 of file IntelliImage.h.

+ +
+
+ +

◆ TypeOfImage

+ +
+
+ + + + + +
+ + + + +
ImageType IntelliImage::TypeOfImage
+
+protected
+
+ +

The Type, an Image is.

+ +

Definition at line 46 of file IntelliImage.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_image.js b/docs-src/html/class_intelli_image.js new file mode 100644 index 0000000..061bf5b --- /dev/null +++ b/docs-src/html/class_intelli_image.js @@ -0,0 +1,28 @@ +var class_intelli_image = +[ + [ "IntelliImage", "class_intelli_image.html#a2c6632ff35ee0a7094a8a289eb3a8652", null ], + [ "~IntelliImage", "class_intelli_image.html#ac398bfa9ddd3185508a1e36ee15d80cc", null ], + [ "calculateVisiblity", "class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2", null ], + [ "drawLine", "class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31", null ], + [ "drawPixel", "class_intelli_image.html#af3c859f5c409e37051edfd9e9fbca056", null ], + [ "drawPlain", "class_intelli_image.html#a6be622810dc2bc756054bb5769becb06", null ], + [ "drawPoint", "class_intelli_image.html#a2e787f1b333b59401643936ebb3dcfe1", null ], + [ "getDeepCopy", "class_intelli_image.html#af6381067bdf565669f856bb589008ae9", null ], + [ "getDisplayable", "class_intelli_image.html#a21c7e65b59a26db45aac3880133ef21d", null ], + [ "getDisplayable", "class_intelli_image.html#a9d4daf3c48c64695105689f61c21bae0", null ], + [ "getHeight", "class_intelli_image.html#a895bbe107ad2958aca6eebf9af3eb7f1", null ], + [ "getImageData", "class_intelli_image.html#ad66fbe380ffe0e073a8cd760f8285fe3", null ], + [ "getPixelColor", "class_intelli_image.html#a4576ebb6d863321c816293d7b7f9fd3f", null ], + [ "getPolygonData", "class_intelli_image.html#aaf9f3e8db8666850024bee9aad9966ba", null ], + [ "getTypeOfImage", "class_intelli_image.html#af6b09c8d1d6b54a7e8a4e7286f3e503f", null ], + [ "getWidth", "class_intelli_image.html#aea7b5f173968b330ef034bedb9426520", null ], + [ "isFastRendering", "class_intelli_image.html#a47941bed3060d8df5f2edce8c7f046cb", null ], + [ "loadImage", "class_intelli_image.html#ae231800aba38c96074bbe9bb6e341d4e", null ], + [ "resizeImage", "class_intelli_image.html#a177403ab9585d4ba31984a644c54d310", null ], + [ "setImageData", "class_intelli_image.html#ab09c64e7559f3db32ca3b20ba6339268", null ], + [ "setPolygon", "class_intelli_image.html#aa4b3f4631bd972456917275afb9fd309", null ], + [ "updateRendererSetting", "class_intelli_image.html#ae4dbaefabce4ec5bec37f5b95e2f62e2", null ], + [ "fastRenderering", "class_intelli_image.html#aa63d34c7932113d021653980ee018671", null ], + [ "imageData", "class_intelli_image.html#a2431be82e9e85dd34b62a7f7cba053c2", null ], + [ "TypeOfImage", "class_intelli_image.html#ac460f75e1fa7e44b00a65e7fddac5b80", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_image.png b/docs-src/html/class_intelli_image.png new file mode 100644 index 0000000000000000000000000000000000000000..139e6e85f01772dd0cdb0c9bb97ea89993e9c247 GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^r9j-l!3-qdT?_F9QW60^A+G=b{|7Q3K6;d#o<0G{ z0^t-#~LKU?zt|B3s< z9336kZa*+rQ+IVM3m@mje@88!&*Emk5YfyP5d2@cbhGOIYiu7}{8ye7IN-i($v&BT z*S|I?=OyxYzkO@{TgSFx&AOGIZn7%5_ky!-S20xH?fBXwC13F9lkKZNT8AfQZZ0g2 z0}9tlypG)Ql6S!h{nQ=Tc8X*U%xJ~!M`+p@B1MA;Ar)0tFQF^muX=8Ww@&N z+*Yvz&b|z1ueMtG+HQzlp`XE?Bmc_(>W2kPAy*eLUAclC$DBU%W~Q3)=JZ1t%* zPRd$kfAwko&u{-cyl&+^NSMB4&bz?F7wT^62j10QW~o;{@$$84-Tal$zt4Lq&arQG zyvb?@Uk$&m=)#&vGo1|uO8ZZ&7RjC{H8*?Cx2aVgXYyuNUuiAs$Ta(LxVI+!e5VCHpq+udHty-a7wXDJ2)uuu3YVVHOUYJ#(h* z<&?BTFEJrZVlq?Od?2#5#1r@d)3t9c3P_L7k(9F z`}@l};qc;DI?I=&{ymp$+fpqQyTU^K?X8RN>)N=lT-up7ZRfcU8`~Z~Hw}6GNB2sB ziSCr}eQl~Qo$pqeY~H84;`sKc$r0PH^wnE=W-X9kJZt9GYx4Zt^!L;irR)PHPzFy| KKbLh*2~7a&zi%f1 literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_image__inherit__graph.dot b/docs-src/html/class_intelli_image__inherit__graph.dot new file mode 100644 index 0000000..54f1a50 --- /dev/null +++ b/docs-src/html/class_intelli_image__inherit__graph.dot @@ -0,0 +1,11 @@ +digraph "IntelliImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="An abstract class which manages the basic IntelliImage operations."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html",tooltip="The IntelliRasterImage manages a RASTERIMAGE."]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html",tooltip="The IntelliShapedImage manages a Shapedimage."]; +} diff --git a/docs-src/html/class_intelli_image_a2e787f1b333b59401643936ebb3dcfe1_icgraph.dot b/docs-src/html/class_intelli_image_a2e787f1b333b59401643936ebb3dcfe1_icgraph.dot new file mode 100644 index 0000000..e10d367 --- /dev/null +++ b/docs-src/html/class_intelli_image_a2e787f1b333b59401643936ebb3dcfe1_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliImage::drawPoint" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::drawPoint",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPen::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205",tooltip="A function managing the left click pressed of a mouse. Starting the drawing procedure."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolLine::onMouse\lLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846",tooltip="A function managing the left click pressed of a mouse. Sets the starting point of the line."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; +} diff --git a/docs-src/html/class_intelli_image_a4576ebb6d863321c816293d7b7f9fd3f_icgraph.dot b/docs-src/html/class_intelli_image_a4576ebb6d863321c816293d7b7f9fd3f_icgraph.dot new file mode 100644 index 0000000..c27fd6d --- /dev/null +++ b/docs-src/html/class_intelli_image_a4576ebb6d863321c816293d7b7f9fd3f_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliImage::getPixelColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::getPixelColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that returns the pixelcolor at a certain point."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolFloodFill\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961",tooltip="A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t..."]; +} diff --git a/docs-src/html/class_intelli_image_a6be622810dc2bc756054bb5769becb06_icgraph.dot b/docs-src/html/class_intelli_image_a6be622810dc2bc756054bb5769becb06_icgraph.dot new file mode 100644 index 0000000..976550d --- /dev/null +++ b/docs-src/html/class_intelli_image_a6be622810dc2bc756054bb5769becb06_icgraph.dot @@ -0,0 +1,18 @@ +digraph "IntelliImage::drawPlain" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::drawPlain",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that clears the whole image in a given Color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::floodFill",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#aeb5eb394b979ea90f2be9849fdda1774",tooltip="The floodFill method fills a the active layer with a given color."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPlainTool\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9",tooltip="A function managing the left click pressed of a mouse. Filling the whole canvas."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolRectangle\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a4b5931071e21eb6949ffe357315e408b",tooltip="A function managing the mouse moved event.Drawing a rectangle to currrent mouse position."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolCircle::\lonMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#a90ee58c5390a86afc75c14ca79b91d7b",tooltip="A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse posit..."]; +} diff --git a/docs-src/html/class_intelli_image_ad66fbe380ffe0e073a8cd760f8285fe3_icgraph.dot b/docs-src/html/class_intelli_image_ad66fbe380ffe0e073a8cd760f8285fe3_icgraph.dot new file mode 100644 index 0000000..211f7b5 --- /dev/null +++ b/docs-src/html/class_intelli_image_ad66fbe380ffe0e073a8cd760f8285fe3_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliImage::getImageData" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::getImageData",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="getImageData returns the data of the current image."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliPhotoGui::UpdateGui",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_image_ae231800aba38c96074bbe9bb6e341d4e_icgraph.dot b/docs-src/html/class_intelli_image_ae231800aba38c96074bbe9bb6e341d4e_icgraph.dot new file mode 100644 index 0000000..001acf9 --- /dev/null +++ b/docs-src/html/class_intelli_image_ae231800aba38c96074bbe9bb6e341d4e_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliImage::loadImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::loadImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that loads and sclaes an image to the fitting dimensions."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::open",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a88c7e759aa8375a56129791645f46ea5",tooltip="The open method is used for loading a picture into the current layer."]; +} diff --git a/docs-src/html/class_intelli_image_aebbced93f4744fad81b7f141b21f4ab2_icgraph.dot b/docs-src/html/class_intelli_image_aebbced93f4744fad81b7f141b21f4ab2_icgraph.dot new file mode 100644 index 0000000..386f3b5 --- /dev/null +++ b/docs-src/html/class_intelli_image_aebbced93f4744fad81b7f141b21f4ab2_icgraph.dot @@ -0,0 +1,71 @@ +digraph "IntelliImage::calculateVisiblity" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPlainTool\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9",tooltip="A function managing the left click pressed of a mouse. Filling the whole canvas."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolFloodFill\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961",tooltip="A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t..."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPen::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205",tooltip="A function managing the left click pressed of a mouse. Starting the drawing procedure."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolLine::onMouse\lLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846",tooltip="A function managing the left click pressed of a mouse. Sets the starting point of the line."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolRectangle\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#ae03c307ccf66cbe3fd59e3657712368d",tooltip="A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle..."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolCircle::\lonMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ae883b8ae833c78a8867e626c600f9639",tooltip="A function managing the left click pressed of a mouse. Sets the middle point of the cricle."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node9 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="PaintingArea::mousePress\lEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#abfe445f8d9b70ae42bfeda874127dd15",tooltip=" "]; + Node9 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node11 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="PaintingArea::mouseRelease\lEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a35b5df914acb608cc29717659793359c",tooltip=" "]; + Node11 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="IntelliToolPlainTool\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ac23f5d0f07e42fd7c2ea3fc1347da400",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node11 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="IntelliToolFloodFill\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#a7438ef96c6c36068bce76e2364e8594c",tooltip="A function managing the left click released of a mouse."]; + Node11 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="IntelliToolPen::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#abda7a22b9766fa4ad254324a53cab94d",tooltip="A function managing the left click released of a mouse. Merging the drawing to the active layer."]; + Node11 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="IntelliToolLine::onMouse\lLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#ac93f76ff20a1c111a403b298bab02482",tooltip="A function managing the left click released of a mouse."]; + Node11 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="IntelliToolRectangle\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a94460e3ff1c19e80bde922c55f53cc43",tooltip="A function managing the left click released of a mouse. Merging the draw to the active layer."]; + Node11 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node18 [label="IntelliToolCircle::\lonMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ad8e438ec997c57262b5efc2db4cee1a3",tooltip="A function managing the left click released of a mouse."]; + Node11 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node19 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node20 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node20 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node21 [label="PaintingArea::mouseMoveEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#aa22e274b6094a9619f196cd7b49526b5",tooltip=" "]; + Node20 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node22 [label="IntelliToolPlainTool\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ad7546a6335bb3bb4cbf0e1883788d41c",tooltip="A function managing the mouse moved event."]; + Node20 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node23 [label="IntelliToolFloodFill\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#a3cd42cea99bc7583875abcc0c274c668",tooltip="A function managing the mouse moved event."]; + Node20 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node24 [label="IntelliToolPen::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2",tooltip="A function managing the mouse moved event. To draw the line."]; + Node20 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node25 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; + Node20 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node26 [label="IntelliToolRectangle\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a4b5931071e21eb6949ffe357315e408b",tooltip="A function managing the mouse moved event.Drawing a rectangle to currrent mouse position."]; + Node20 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node27 [label="IntelliToolCircle::\lonMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#a90ee58c5390a86afc75c14ca79b91d7b",tooltip="A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse posit..."]; + Node20 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node28 [label="IntelliToolPolygon\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a0e3a1135f04c73c159137ae219a38922",tooltip="A function managing the mouse moved event."]; + Node1 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node29 [label="PaintingArea::open",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a88c7e759aa8375a56129791645f46ea5",tooltip="The open method is used for loading a picture into the current layer."]; +} diff --git a/docs-src/html/class_intelli_image_aec0e9c8184d89dee33fd9adefbd2f8aa_icgraph.dot b/docs-src/html/class_intelli_image_aec0e9c8184d89dee33fd9adefbd2f8aa_icgraph.dot new file mode 100644 index 0000000..4e1d41c --- /dev/null +++ b/docs-src/html/class_intelli_image_aec0e9c8184d89dee33fd9adefbd2f8aa_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliImage::loadImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::loadImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that loads and sclaes an image to the fitting dimensions."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::open",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a1f597740b4d7b4bc2e24c51f8cb0b6eb",tooltip="The open method is used for loading a picture into the current layer."]; +} diff --git a/docs-src/html/class_intelli_image_af3c859f5c409e37051edfd9e9fbca056_icgraph.dot b/docs-src/html/class_intelli_image_af3c859f5c409e37051edfd9e9fbca056_icgraph.dot new file mode 100644 index 0000000..6aecc8a --- /dev/null +++ b/docs-src/html/class_intelli_image_af3c859f5c409e37051edfd9e9fbca056_icgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliImage::drawPixel" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::drawPixel",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A funtcion used to draw a pixel on the Image with the given Color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolFloodFill\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961",tooltip="A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t..."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/class_intelli_image_af8eddbd9aa54c8d37590d1d4bf8dce31_icgraph.dot b/docs-src/html/class_intelli_image_af8eddbd9aa54c8d37590d1d4bf8dce31_icgraph.dot new file mode 100644 index 0000000..1ba597e --- /dev/null +++ b/docs-src/html/class_intelli_image_af8eddbd9aa54c8d37590d1d4bf8dce31_icgraph.dot @@ -0,0 +1,16 @@ +digraph "IntelliImage::drawLine" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliImage::drawLine",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that draws A Line between two given Points in a given color."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPen::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2",tooltip="A function managing the mouse moved event. To draw the line."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; +} diff --git a/docs-src/html/class_intelli_input_dialog-members.html b/docs-src/html/class_intelli_input_dialog-members.html new file mode 100644 index 0000000..ef6d0e6 --- /dev/null +++ b/docs-src/html/class_intelli_input_dialog-members.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliInputDialog Member List
+
+
+ +

This is the complete list of members for IntelliInputDialog, including all inherited members.

+ + + + + +
getInt(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)IntelliInputDialogstatic
IntelliInputDialog(QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)IntelliInputDialog
slotCloseEvent()IntelliInputDialogslot
slotEingabe()IntelliInputDialogslot
+
+ + + + diff --git a/docs-src/html/class_intelli_input_dialog.html b/docs-src/html/class_intelli_input_dialog.html new file mode 100644 index 0000000..c863f21 --- /dev/null +++ b/docs-src/html/class_intelli_input_dialog.html @@ -0,0 +1,364 @@ + + + + + + + +IntelliPhoto: IntelliInputDialog Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliInputDialog Class Reference
+
+
+ +

The IntelliInputDialog class is a customized Input Dialog to get Integers. + More...

+ +

#include <IntelliInputDialog.h>

+
+Inheritance diagram for IntelliInputDialog:
+
+
+ +
+ + + + + + + + +

+Public Slots

void slotCloseEvent ()
 slotCloseEvent is a slot for catching the close Event. More...
 
void slotEingabe ()
 slotEingabe is a slot for catching the Input Event. More...
 
+ + + + +

+Public Member Functions

 IntelliInputDialog (QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
 IntelliInputDialog is the baisc constructor to for the InputDialog. More...
 
+ + + + +

+Static Public Member Functions

static int getInt (QString Title=nullptr, QString Label=nullptr, int value=5, int minValue=-2147483647, int maxValue=2147483647, int step=1, bool *ok=nullptr)
 getInt is a static funktion ´, which creates an Input Dialog and gets an Integer. More...
 
+

Detailed Description

+

The IntelliInputDialog class is a customized Input Dialog to get Integers.

+ +

Definition at line 15 of file IntelliInputDialog.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliInputDialog()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IntelliInputDialog::IntelliInputDialog (QString Title = nullptr,
QString Label = nullptr,
int value = 5,
int minValue = -2147483647,
int maxValue = 2147483647,
int step = 1,
bool * ok = nullptr 
)
+
+ +

IntelliInputDialog is the baisc constructor to for the InputDialog.

+
Parameters
+ + + + + + + + +
Title- Title of the Input Dialog.
Label- A Label for the Iput Dialog, to show further information.
value- The standart value in the Input Box.
minValue- The minimal value to read.
maxValue- The maximal value to read.
step- The step size of Values.
ok- A check if the input was okay
+
+
+ +

Definition at line 3 of file IntelliInputDialog.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getInt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int IntelliInputDialog::getInt (QString Title = nullptr,
QString Label = nullptr,
int value = 5,
int minValue = -2147483647,
int maxValue = 2147483647,
int step = 1,
bool * ok = nullptr 
)
+
+static
+
+ +

getInt is a static funktion ´, which creates an Input Dialog and gets an Integer.

+
Parameters
+ + + + + + + + +
Title- Title of the Input Dialog.
Label- A Label for the Iput Dialog, to show further information.
value- The standart value in the Input Box.
minValue- The minimal value to read.
maxValue- The maximal value to read.
step- The step size of Values.
ok- A check if the input was okay
+
+
+
Returns
+ +

Definition at line 16 of file IntelliInputDialog.cpp.

+ +
+
+ +

◆ slotCloseEvent

+ +
+
+ + + + + +
+ + + + + + + +
void IntelliInputDialog::slotCloseEvent ()
+
+slot
+
+ +

slotCloseEvent is a slot for catching the close Event.

+ +

Definition at line 74 of file IntelliInputDialog.cpp.

+ +
+
+ +

◆ slotEingabe

+ +
+
+ + + + + +
+ + + + + + + +
void IntelliInputDialog::slotEingabe ()
+
+slot
+
+ +

slotEingabe is a slot for catching the Input Event.

+ +

Definition at line 78 of file IntelliInputDialog.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_input_dialog.js b/docs-src/html/class_intelli_input_dialog.js new file mode 100644 index 0000000..206e7e6 --- /dev/null +++ b/docs-src/html/class_intelli_input_dialog.js @@ -0,0 +1,6 @@ +var class_intelli_input_dialog = +[ + [ "IntelliInputDialog", "class_intelli_input_dialog.html#aa276ec605b08b19d70c54654cc606cc5", null ], + [ "slotCloseEvent", "class_intelli_input_dialog.html#ae59e68446caab323945ea725f69e89b0", null ], + [ "slotEingabe", "class_intelli_input_dialog.html#a23f837147e6aab3d8e0aff9d0f7012bd", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_input_dialog.png b/docs-src/html/class_intelli_input_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..496ba5eacb7c3b9033d766fd1e9c6dac649c3198 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^89*Gs!3-o1y*>~Oq$C1-LR|m<{|{t7eDo+eJ$(X@ z1;z&s9QdpvWC!GOlmz(&GXNEVz|~VBMhpy$DV{ElAr*{o=U$xDtia>yA6NDNe}8zZ zRz%Fit7rVwW&2WGETocZkDfWh>@#Vey2~V!BlbdPML)j_-oWb_q`rJn>D#$a@&e`N z?h<*bV0%Z*_iksI&lKI#FD)yU?s?d`P4)B@TZLJCvMYZtUJ+P&{!QSyOPc~d$}KG} z51Xq}`bcS4V!z7D<~fd@S;F%_v-L9%cRdV`WCyW!-1YZZ|)z{C+}c-}3awR=Vz=kG}rZy25L!rn zZF2pqh$}&6^H=QXo#L=z(cJD+nYD|~uX-)GHK<6>=*HH&c4CW`{j2HcTeVJSUyR@9 zjWzv2lKANx!Zq=vBZ4NhQNJ6DQV9R@E>inD_+*WQWzKq44$rj JF6*2UngD=I%<=#L literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_photo_gui-members.html b/docs-src/html/class_intelli_photo_gui-members.html new file mode 100644 index 0000000..aeda07b --- /dev/null +++ b/docs-src/html/class_intelli_photo_gui-members.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliPhotoGui Member List
+
+
+ +

This is the complete list of members for IntelliPhotoGui, including all inherited members.

+ + + + + +
closeEvent(QCloseEvent *event) overrideIntelliPhotoGuiprotected
IntelliPhotoGui()IntelliPhotoGui
setToolWidth(int value)IntelliPhotoGui
UpdateGui()IntelliPhotoGui
+
+ + + + diff --git a/docs-src/html/class_intelli_photo_gui.html b/docs-src/html/class_intelli_photo_gui.html new file mode 100644 index 0000000..29db37c --- /dev/null +++ b/docs-src/html/class_intelli_photo_gui.html @@ -0,0 +1,245 @@ + + + + + + + +IntelliPhoto: IntelliPhotoGui Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliPhotoGui Class Reference
+
+
+ +

The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto program. + More...

+ +

#include <IntelliPhotoGui.h>

+
+Inheritance diagram for IntelliPhotoGui:
+
+
+ +
+ + + + + + + + + + + +

+Public Member Functions

 IntelliPhotoGui ()
 The IntelliPhotoGui method is the constructor and is used to create a new instance of the main program window. More...
 
void UpdateGui ()
 UpdateGui a function to update all gui elements. More...
 
void setToolWidth (int value)
 setToolWidth stes a width to the tool More...
 
+ + + + +

+Protected Member Functions

void closeEvent (QCloseEvent *event) override
 The closeEvent function handles closing events. More...
 
+

Detailed Description

+

The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto program.

+ +

Definition at line 34 of file IntelliPhotoGui.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliPhotoGui()

+ +
+
+ + + + + + + +
IntelliPhotoGui::IntelliPhotoGui ()
+
+ +

The IntelliPhotoGui method is the constructor and is used to create a new instance of the main program window.

+ +

Definition at line 14 of file IntelliPhotoGui.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ closeEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliPhotoGui::closeEvent (QCloseEvent * event)
+
+overrideprotected
+
+ +

The closeEvent function handles closing events.

+ +

Definition at line 30 of file IntelliPhotoGui.cpp.

+ +
+
+ +

◆ setToolWidth()

+ +
+
+ + + + + + + + +
void IntelliPhotoGui::setToolWidth (int value)
+
+ +

setToolWidth stes a width to the tool

+
Parameters
+ + +
value- the width of the tool
+
+
+ +

Definition at line 923 of file IntelliPhotoGui.cpp.

+ +
+
+ +

◆ UpdateGui()

+ +
+
+ + + + + + + +
void IntelliPhotoGui::UpdateGui ()
+
+ +

UpdateGui a function to update all gui elements.

+ +

Definition at line 932 of file IntelliPhotoGui.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_photo_gui.js b/docs-src/html/class_intelli_photo_gui.js new file mode 100644 index 0000000..3e40da6 --- /dev/null +++ b/docs-src/html/class_intelli_photo_gui.js @@ -0,0 +1,7 @@ +var class_intelli_photo_gui = +[ + [ "IntelliPhotoGui", "class_intelli_photo_gui.html#ad2aaec3c1517a9aaa461b54e341b97e0", null ], + [ "closeEvent", "class_intelli_photo_gui.html#a2cf48070236ae8b35245e7f30482ef13", null ], + [ "setToolWidth", "class_intelli_photo_gui.html#a343f8ebf5d27b7242208747de6c92497", null ], + [ "UpdateGui", "class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_photo_gui.png b/docs-src/html/class_intelli_photo_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..1947c4eab94877f0c02fd3634bf7e827dfa4149d GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^aX=iv!3-pqvl;0CDTx4|5ZC|z{{xv1A3aJ=PoDr} zf$@O@2R^F^*#Ws6B|(0{3_wL7aP?G(5d#Bbnx~6nNCo5Dxi|X`8*sSt>p%Sezv5N} zv$~0-W{6a8Xx@jW{*ArAdOAGj34~tN(cQBuYr*@6_xbn!z9#RuF7)YTu1PXK`t)X- zEMIkuCoZ%%_F?~dVI$wUP^YUHu4}V+8y=V0tf%U6?Z4rwL zHN9|X^(wYg$Gbb0a6T}<#qeoL_x)`lb$b6?&p%Or{J-L7kE+s(ADKr3qwlgLq?`rUi)o@YqP3FZ)nO#DD@eaf5=_&-S2}g!-i)c z*882@QYX+hlSA5gZq^#BgVu8zwrV~Ss9>(&^s3^!;69mWa{C_Cd=vk%`Et#Pe+A#q zKVn@|d*u4gTe~DWM4fF2mj} literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_photo_gui__coll__graph.dot b/docs-src/html/class_intelli_photo_gui__coll__graph.dot new file mode 100644 index 0000000..3aec454 --- /dev/null +++ b/docs-src/html/class_intelli_photo_gui__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliPhotoGui" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliPhotoGui",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliPhotoGui class handles the graphical user interface for the intelliPhoto program."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_photo_gui__inherit__graph.dot b/docs-src/html/class_intelli_photo_gui__inherit__graph.dot new file mode 100644 index 0000000..3aec454 --- /dev/null +++ b/docs-src/html/class_intelli_photo_gui__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliPhotoGui" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliPhotoGui",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliPhotoGui class handles the graphical user interface for the intelliPhoto program."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_photo_gui_a1dbef8d4688227aa9455aea52db00bf4_cgraph.dot b/docs-src/html/class_intelli_photo_gui_a1dbef8d4688227aa9455aea52db00bf4_cgraph.dot new file mode 100644 index 0000000..d1638a7 --- /dev/null +++ b/docs-src/html/class_intelli_photo_gui_a1dbef8d4688227aa9455aea52db00bf4_cgraph.dot @@ -0,0 +1,18 @@ +digraph "IntelliPhotoGui::UpdateGui" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliPhotoGui::UpdateGui",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::getImageData",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#ad66fbe380ffe0e073a8cd760f8285fe3",tooltip="getImageData returns the data of the current image."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="PaintingArea::getImageOf\lActiveLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#acab11ad35d07e9081203d8217d2c0855",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="PaintingArea::getNumberOf\lActiveLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a24280454ebb80db7feba2fd621513353",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliColorPicker\l::getSecondColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#a55568fbf5dc783f06284b7031ffe9415",tooltip="A function to read the secondary selected color."]; +} diff --git a/docs-src/html/class_intelli_raster_image-members.html b/docs-src/html/class_intelli_raster_image-members.html new file mode 100644 index 0000000..340cc45 --- /dev/null +++ b/docs-src/html/class_intelli_raster_image-members.html @@ -0,0 +1,131 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRasterImage Member List
+
+
+ +

This is the complete list of members for IntelliRasterImage, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
calculateVisiblity() overrideIntelliRasterImageprotectedvirtual
drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)IntelliImagevirtual
drawPixel(const QPoint &p1, const QColor &color)IntelliImagevirtual
drawPlain(const QColor &color)IntelliImagevirtual
drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)IntelliImagevirtual
fastRendereringIntelliImageprotected
getDeepCopy() overrideIntelliRasterImagevirtual
getDisplayable(const QSize &displaySize, int alpha) overrideIntelliRasterImagevirtual
getDisplayable(int alpha=255) overrideIntelliRasterImagevirtual
getHeight() constIntelliImagevirtual
getImageData()IntelliImagevirtual
getPixelColor(QPoint &point)IntelliImagevirtual
getPolygon()IntelliRasterImagevirtual
getPolygonData()IntelliImageinlinevirtual
getTypeOfImage()IntelliImageinlinevirtual
getWidth() constIntelliImagevirtual
imageDataIntelliImageprotected
IntelliImage(int width, int height, bool fastRendererOn)IntelliImage
IntelliRasterImage(int width, int height, bool fastRendererOn)IntelliRasterImage
isFastRendering() constIntelliImagevirtual
loadImage(const QString &filePath)IntelliImagevirtual
resizeImage(QImage *image, const QSize &newSize)IntelliImageprotected
setImageData(const QImage &newData)IntelliImagevirtual
setPolygon(const std::vector< QPoint > &polygonData) overrideIntelliRasterImagevirtual
TypeOfImageIntelliImageprotected
updateRendererSetting(bool fastRendererOn)IntelliImagevirtual
~IntelliImage()=0IntelliImagepure virtual
~IntelliRasterImage() overrideIntelliRasterImagevirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_raster_image.html b/docs-src/html/class_intelli_raster_image.html new file mode 100644 index 0000000..13b9704 --- /dev/null +++ b/docs-src/html/class_intelli_raster_image.html @@ -0,0 +1,530 @@ + + + + + + + +IntelliPhoto: IntelliRasterImage Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliRasterImage Class Reference
+
+
+ +

The IntelliRasterImage manages a RASTERIMAGE. + More...

+ +

#include <IntelliRasterImage.h>

+
+Inheritance diagram for IntelliRasterImage:
+
+
+ + +IntelliImage +IntelliShapedImage + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliRasterImage (int width, int height, bool fastRendererOn)
 The Construcor of the IntelliRasterImage. Given the Image dimensions. More...
 
virtual ~IntelliRasterImage () override
 An Destructor. More...
 
virtual QImage getDisplayable (const QSize &displaySize, int alpha) override
 A function returning the displayable ImageData in a requested transparence and size. More...
 
virtual QImage getDisplayable (int alpha=255) override
 A function returning the displayable ImageData in a requested transparence and it's standart size. More...
 
virtual IntelliImagegetDeepCopy () override
 A function that copys all that returns a [allocated] Image. More...
 
virtual void setPolygon (const std::vector< QPoint > &polygonData) override
 An abstract function that sets the data of the visible Polygon, if needed. More...
 
virtual std::vector< QPoint > getPolygon ()
 getPolygon More...
 
- Public Member Functions inherited from IntelliImage
 IntelliImage (int width, int height, bool fastRendererOn)
 The Construcor of the IntelliImage. Given the Image dimensions. More...
 
virtual ~IntelliImage ()=0
 An Abstract Destructor. More...
 
virtual void drawPixel (const QPoint &p1, const QColor &color)
 A funtcion used to draw a pixel on the Image with the given Color. More...
 
virtual void drawLine (const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
 A function that draws a line between two given points in a given color. More...
 
virtual void drawPoint (const QPoint &p1, const QColor &color, const int &penWidth)
 A function that draws a point between on a given point in a given color. More...
 
virtual void drawPlain (const QColor &color)
 A function that clears the whole image in a given Color. More...
 
virtual std::vector< QPoint > getPolygonData ()
 A function that returns the Polygondata if existent. More...
 
virtual ImageType getTypeOfImage ()
 
virtual bool loadImage (const QString &filePath)
 A function that loads and sclaes an image to the fitting dimensions. More...
 
virtual QColor getPixelColor (QPoint &point)
 A function that returns the pixelcolor at a certain point. More...
 
virtual void updateRendererSetting (bool fastRendererOn)
 updateRendererSetting updates the existing image format to the new format. More...
 
virtual QImage getImageData ()
 getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!). More...
 
virtual void setImageData (const QImage &newData)
 setImageData overwrites the old imageData the new imageData. More...
 
virtual int getWidth () const
 getWidth returns the width of the Image. More...
 
virtual int getHeight () const
 getHeight returns the height of the Image. More...
 
virtual bool isFastRendering () const
 isFastRendering returns if the Image is in fast rendering mode. More...
 
+ + + + + + + +

+Protected Member Functions

virtual void calculateVisiblity () override
 A function that calculates the visibility of the image if a polygon is given. [does nothing in RASTERIMAGE]. More...
 
- Protected Member Functions inherited from IntelliImage
void resizeImage (QImage *image, const QSize &newSize)
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from IntelliImage
QImage imageData
 The underlying image data. More...
 
ImageType TypeOfImage
 The Type, an Image is. More...
 
bool fastRenderering
 fastRendering is the flag that represents the usage of 8bit pictures. More...
 
+

Detailed Description

+

The IntelliRasterImage manages a RASTERIMAGE.

+ +

Definition at line 12 of file IntelliRasterImage.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliRasterImage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliRasterImage::IntelliRasterImage (int width,
int height,
bool fastRendererOn 
)
+
+ +

The Construcor of the IntelliRasterImage. Given the Image dimensions.

+
Parameters
+ + + + +
width- The width of the Image.
height- The height of the Image.
fastRendererOn- Represents the flag for 8bit picture handelling.
+
+
+ +

Definition at line 6 of file IntelliRasterImage.cpp.

+ +
+
+ +

◆ ~IntelliRasterImage()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliRasterImage::~IntelliRasterImage ()
+
+overridevirtual
+
+ +

An Destructor.

+ +

Definition at line 12 of file IntelliRasterImage.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ calculateVisiblity()

+ +
+
+ + + + + +
+ + + + + + + +
void IntelliRasterImage::calculateVisiblity ()
+
+overrideprotectedvirtual
+
+ +

A function that calculates the visibility of the image if a polygon is given. [does nothing in RASTERIMAGE].

+ +

Implements IntelliImage.

+ +

Definition at line 23 of file IntelliRasterImage.cpp.

+ +
+
+ +

◆ getDeepCopy()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliImage * IntelliRasterImage::getDeepCopy ()
+
+overridevirtual
+
+ +

A function that copys all that returns a [allocated] Image.

+
Returns
A [allocated] Image with all the properties of the instance.
+ +

Implements IntelliImage.

+ +

Reimplemented in IntelliShapedImage.

+ +

Definition at line 16 of file IntelliRasterImage.cpp.

+ +
+
+ +

◆ getDisplayable() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QImage IntelliRasterImage::getDisplayable (const QSize & displaySize,
int alpha 
)
+
+overridevirtual
+
+ +

A function returning the displayable ImageData in a requested transparence and size.

+
Parameters
+ + + +
displaySize- The size, in whcih the Image should be displayed.
alpha- The maximum alpha value, a pixel can have.
+
+
+
Returns
A QImage which is ready to be displayed.
+ +

Implements IntelliImage.

+ +

Reimplemented in IntelliShapedImage.

+ +

Definition at line 31 of file IntelliRasterImage.cpp.

+ +
+
+ +

◆ getDisplayable() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
QImage IntelliRasterImage::getDisplayable (int alpha = 255)
+
+overridevirtual
+
+ +

A function returning the displayable ImageData in a requested transparence and it's standart size.

+
Parameters
+ + +
alpha- The maximum alpha value, a pixel can have.
+
+
+
Returns
A QImage which is ready to be displayed.
+ +

Implements IntelliImage.

+ +

Reimplemented in IntelliShapedImage.

+ +

Definition at line 27 of file IntelliRasterImage.cpp.

+ +
+
+ +

◆ getPolygon()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< QPoint > IntelliRasterImage::getPolygon ()
+
+virtual
+
+ +

getPolygon

+
Returns
returns the points of the polygon
+ +

Reimplemented in IntelliShapedImage.

+ +

Definition at line 53 of file IntelliRasterImage.cpp.

+ +
+
+ +

◆ setPolygon()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliRasterImage::setPolygon (const std::vector< QPoint > & polygonData)
+
+overridevirtual
+
+ +

An abstract function that sets the data of the visible Polygon, if needed.

+
Parameters
+ + +
polygonData- The Vertices of the Polygon. Nothing happens.
+
+
+ +

Implements IntelliImage.

+ +

Reimplemented in IntelliShapedImage.

+ +

Definition at line 49 of file IntelliRasterImage.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_raster_image.js b/docs-src/html/class_intelli_raster_image.js new file mode 100644 index 0000000..f536e0f --- /dev/null +++ b/docs-src/html/class_intelli_raster_image.js @@ -0,0 +1,11 @@ +var class_intelli_raster_image = +[ + [ "IntelliRasterImage", "class_intelli_raster_image.html#ae779b571372296f1922af818ba003413", null ], + [ "~IntelliRasterImage", "class_intelli_raster_image.html#a844a2b58c43f7e01f2ca116286371bc8", null ], + [ "calculateVisiblity", "class_intelli_raster_image.html#a87cf2d360c129d64a5db0db85818eb60", null ], + [ "getDeepCopy", "class_intelli_raster_image.html#a8f901301b106504de3c27308ade897dc", null ], + [ "getDisplayable", "class_intelli_raster_image.html#ae43393397b0141a8033fe34d3a1b1884", null ], + [ "getDisplayable", "class_intelli_raster_image.html#a612d79124f0e2c158a4f0abbe4b5f97f", null ], + [ "getPolygon", "class_intelli_raster_image.html#af19828176178cc1dece5160d726d946e", null ], + [ "setPolygon", "class_intelli_raster_image.html#a6462fa5f94c5e64e9e1f0c4658e0507b", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_raster_image.png b/docs-src/html/class_intelli_raster_image.png new file mode 100644 index 0000000000000000000000000000000000000000..768500f74e81d2a66c329b2b189d0de6ca21fa4a GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^r9j-l!3-qdT?_F9QW60^A+G=b{|7Q3K6;d#o<0G{ z0^3kP61Pb01z>t-#~rKTY!f|B3s< zSREbLZa*+rGxr)73m@mke@88!&*E11>@{66DJ1y6^3_k}2UT8n&I_8X=lRQHddTFx z>mMow=hX3^zHz(!TV&LvDOXKRPprTAxlHZef76^?}~?4RX?3hyD|NGCNJ}q3ljro@AA%F9bx=`@nc{1 zfN*;^Q{!yihW1$uvsQDL&Z*;o=WdCJ!{A^JCVE?w=z?8}0>FVdQ&MBb@ E0D{hKV*mgE literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_raster_image__coll__graph.dot b/docs-src/html/class_intelli_raster_image__coll__graph.dot new file mode 100644 index 0000000..7a7f252 --- /dev/null +++ b/docs-src/html/class_intelli_raster_image__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliRasterImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliRasterImage manages a RASTERIMAGE."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_raster_image__inherit__graph.dot b/docs-src/html/class_intelli_raster_image__inherit__graph.dot new file mode 100644 index 0000000..f2bc33b --- /dev/null +++ b/docs-src/html/class_intelli_raster_image__inherit__graph.dot @@ -0,0 +1,11 @@ +digraph "IntelliRasterImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliRasterImage manages a RASTERIMAGE."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html",tooltip="The IntelliShapedImage manages a Shapedimage."]; +} diff --git a/docs-src/html/class_intelli_raster_image_a612d79124f0e2c158a4f0abbe4b5f97f_cgraph.dot b/docs-src/html/class_intelli_raster_image_a612d79124f0e2c158a4f0abbe4b5f97f_cgraph.dot new file mode 100644 index 0000000..6e31bb0 --- /dev/null +++ b/docs-src/html/class_intelli_raster_image_a612d79124f0e2c158a4f0abbe4b5f97f_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliRasterImage::getDisplayable" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliRasterImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function returning the displayable ImageData in a requested transparence and it's standart size."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html#ae43393397b0141a8033fe34d3a1b1884",tooltip="A function returning the displayable ImageData in a requested transparence and size."]; +} diff --git a/docs-src/html/class_intelli_raster_image_a8f901301b106504de3c27308ade897dc_cgraph.dot b/docs-src/html/class_intelli_raster_image_a8f901301b106504de3c27308ade897dc_cgraph.dot new file mode 100644 index 0000000..1dd7f4f --- /dev/null +++ b/docs-src/html/class_intelli_raster_image_a8f901301b106504de3c27308ade897dc_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliRasterImage::getDeepCopy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliRasterImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that copys all that returns a [allocated] Image."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage\l::IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html#ae779b571372296f1922af818ba003413",tooltip="The Construcor of the IntelliRasterImage. Given the Image dimensions."]; +} diff --git a/docs-src/html/class_intelli_raster_image_aad9b561fe499a4da3c6ef98971aa3468_icgraph.dot b/docs-src/html/class_intelli_raster_image_aad9b561fe499a4da3c6ef98971aa3468_icgraph.dot new file mode 100644 index 0000000..0fdfdea --- /dev/null +++ b/docs-src/html/class_intelli_raster_image_aad9b561fe499a4da3c6ef98971aa3468_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliRasterImage::IntelliRasterImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliRasterImage\l::IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The Construcor of the IntelliRasterImage. Given the Image dimensions."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html#a8f901301b106504de3c27308ade897dc",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/class_intelli_raster_image_ae43393397b0141a8033fe34d3a1b1884_icgraph.dot b/docs-src/html/class_intelli_raster_image_ae43393397b0141a8033fe34d3a1b1884_icgraph.dot new file mode 100644 index 0000000..ab3c96f --- /dev/null +++ b/docs-src/html/class_intelli_raster_image_ae43393397b0141a8033fe34d3a1b1884_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliRasterImage::getDisplayable" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliRasterImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function returning the displayable ImageData in a requested transparence and size."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html#a612d79124f0e2c158a4f0abbe4b5f97f",tooltip="A function returning the displayable ImageData in a requested transparence and it's standart size."]; +} diff --git a/docs-src/html/class_intelli_raster_image_ae779b571372296f1922af818ba003413_icgraph.dot b/docs-src/html/class_intelli_raster_image_ae779b571372296f1922af818ba003413_icgraph.dot new file mode 100644 index 0000000..0fdfdea --- /dev/null +++ b/docs-src/html/class_intelli_raster_image_ae779b571372296f1922af818ba003413_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliRasterImage::IntelliRasterImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliRasterImage\l::IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The Construcor of the IntelliRasterImage. Given the Image dimensions."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html#a8f901301b106504de3c27308ade897dc",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/class_intelli_render_settings-members.html b/docs-src/html/class_intelli_render_settings-members.html new file mode 100644 index 0000000..f0a55fc --- /dev/null +++ b/docs-src/html/class_intelli_render_settings-members.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliRenderSettings Member List
+
+
+ +

This is the complete list of members for IntelliRenderSettings, including all inherited members.

+ + + + +
IntelliRenderSettings()IntelliRenderSettings
isFastRenderering() constIntelliRenderSettings
setFastRendering(bool Updatedsetting)IntelliRenderSettings
+
+ + + + diff --git a/docs-src/html/class_intelli_render_settings.html b/docs-src/html/class_intelli_render_settings.html new file mode 100644 index 0000000..6e30191 --- /dev/null +++ b/docs-src/html/class_intelli_render_settings.html @@ -0,0 +1,200 @@ + + + + + + + +IntelliPhoto: IntelliRenderSettings Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliRenderSettings Class Reference
+
+
+ +

The IntelliRenderSettings class which manages the render Settings. + More...

+ +

#include <IntelliRenderSettings.h>

+ + + + + + + + + + +

+Public Member Functions

 IntelliRenderSettings ()
 
void setFastRendering (bool Updatedsetting)
 setFastRendering sets fastRendering to Updatedsetting. More...
 
bool isFastRenderering () const
 The getfastRenderer gets the value of the flag for the fastRenderer setting. More...
 
+

Detailed Description

+

The IntelliRenderSettings class which manages the render Settings.

+ +

Definition at line 10 of file IntelliRenderSettings.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliRenderSettings()

+ +
+
+ + + + + + + +
IntelliRenderSettings::IntelliRenderSettings ()
+
+ +

Definition at line 3 of file IntelliRenderSettings.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ isFastRenderering()

+ +
+
+ + + + + + + +
bool IntelliRenderSettings::isFastRenderering () const
+
+ +

The getfastRenderer gets the value of the flag for the fastRenderer setting.

+
Returns
Returns true if fastRenderer is active else false
+ +

Definition at line 12 of file IntelliRenderSettings.cpp.

+ +
+
+ +

◆ setFastRendering()

+ +
+
+ + + + + + + + +
void IntelliRenderSettings::setFastRendering (bool Updatedsetting)
+
+ +

setFastRendering sets fastRendering to Updatedsetting.

+
Parameters
+ + +
Updatedsetting- Represents the new value for the Fast Rendering Flag.
+
+
+ +

Definition at line 8 of file IntelliRenderSettings.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_render_settings.js b/docs-src/html/class_intelli_render_settings.js new file mode 100644 index 0000000..73ef9f6 --- /dev/null +++ b/docs-src/html/class_intelli_render_settings.js @@ -0,0 +1,6 @@ +var class_intelli_render_settings = +[ + [ "IntelliRenderSettings", "class_intelli_render_settings.html#a4a01de6e5e8e516a7eae51d6f1f66529", null ], + [ "isFastRenderering", "class_intelli_render_settings.html#a38fd592c4948d2e47b95bb6fabc34073", null ], + [ "setFastRendering", "class_intelli_render_settings.html#a5ffb878b77e5d448ffe4eb03a8397ac2", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_render_settings_a5a74e7d7ed3a2e944883dddbe8bbf5e8_icgraph.dot b/docs-src/html/class_intelli_render_settings_a5a74e7d7ed3a2e944883dddbe8bbf5e8_icgraph.dot new file mode 100644 index 0000000..f413d45 --- /dev/null +++ b/docs-src/html/class_intelli_render_settings_a5a74e7d7ed3a2e944883dddbe8bbf5e8_icgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliRenderSettings::getFastRenderer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliRenderSettings\l::getFastRenderer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The getfastRenderer gets the value of the flag for the fastRenderer setting."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::addLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a6e9207612cef104d39013564696fe989",tooltip="The addLayer adds a layer to the current project/ painting area."]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="PaintingArea::PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a4fa0ec23e78cc59f28c823584c721460",tooltip="PaintingArea is the constructor of the PaintingArea class, which initiates the working environment."]; +} diff --git a/docs-src/html/class_intelli_shaped_image-members.html b/docs-src/html/class_intelli_shaped_image-members.html new file mode 100644 index 0000000..b6be2f6 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image-members.html @@ -0,0 +1,133 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliShapedImage Member List
+
+
+ +

This is the complete list of members for IntelliShapedImage, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
drawLine(const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)IntelliImagevirtual
drawPixel(const QPoint &p1, const QColor &color)IntelliImagevirtual
drawPlain(const QColor &color)IntelliImagevirtual
drawPoint(const QPoint &p1, const QColor &color, const int &penWidth)IntelliImagevirtual
fastRendereringIntelliImageprotected
getDeepCopy() overrideIntelliShapedImagevirtual
getDisplayable(const QSize &displaySize, int alpha=255) overrideIntelliShapedImagevirtual
getDisplayable(int alpha=255) overrideIntelliShapedImagevirtual
getHeight() constIntelliImagevirtual
getImageData()IntelliImagevirtual
getPixelColor(QPoint &point)IntelliImagevirtual
getPolygon() overrideIntelliShapedImagevirtual
getPolygonData() overrideIntelliShapedImageinlinevirtual
getTypeOfImage()IntelliImageinlinevirtual
getWidth() constIntelliImagevirtual
imageDataIntelliImageprotected
IntelliImage(int width, int height, bool fastRendererOn)IntelliImage
IntelliRasterImage(int width, int height, bool fastRendererOn)IntelliRasterImage
IntelliShapedImage(int width, int height, bool fastRendererOn)IntelliShapedImage
isFastRendering() constIntelliImagevirtual
loadImage(const QString &filePath)IntelliImagevirtual
polygonDataIntelliShapedImageprotected
resizeImage(QImage *image, const QSize &newSize)IntelliImageprotected
setImageData(const QImage &newData)IntelliImagevirtual
setPolygon(const std::vector< QPoint > &polygonData) overrideIntelliShapedImagevirtual
TypeOfImageIntelliImageprotected
updateRendererSetting(bool fastRendererOn)IntelliImagevirtual
~IntelliImage()=0IntelliImagepure virtual
~IntelliRasterImage() overrideIntelliRasterImagevirtual
~IntelliShapedImage() overrideIntelliShapedImagevirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_shaped_image.html b/docs-src/html/class_intelli_shaped_image.html new file mode 100644 index 0000000..c036ef0 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image.html @@ -0,0 +1,557 @@ + + + + + + + +IntelliPhoto: IntelliShapedImage Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliShapedImage Class Reference
+
+
+ +

The IntelliShapedImage manages a Shapedimage. + More...

+ +

#include <IntelliShapedImage.h>

+
+Inheritance diagram for IntelliShapedImage:
+
+
+ + +IntelliRasterImage +IntelliImage + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliShapedImage (int width, int height, bool fastRendererOn)
 The Construcor of the IntelliShapedImage. Given the Image dimensions. More...
 
virtual ~IntelliShapedImage () override
 An Destructor. More...
 
virtual QImage getDisplayable (const QSize &displaySize, int alpha=255) override
 A function returning the displayable ImageData in a requested transparence and size. More...
 
virtual QImage getDisplayable (int alpha=255) override
 A function returning the displayable ImageData in a requested transparence and it's standart size. More...
 
virtual IntelliImagegetDeepCopy () override
 A function that copys all that returns a [allocated] Image. More...
 
virtual std::vector< QPoint > getPolygonData () override
 A function that returns the Polygondata if existent. More...
 
virtual void setPolygon (const std::vector< QPoint > &polygonData) override
 A function that sets the data of the visible Polygon. More...
 
virtual std::vector< QPoint > getPolygon () override
 getPolygon More...
 
- Public Member Functions inherited from IntelliRasterImage
 IntelliRasterImage (int width, int height, bool fastRendererOn)
 The Construcor of the IntelliRasterImage. Given the Image dimensions. More...
 
virtual ~IntelliRasterImage () override
 An Destructor. More...
 
- Public Member Functions inherited from IntelliImage
 IntelliImage (int width, int height, bool fastRendererOn)
 The Construcor of the IntelliImage. Given the Image dimensions. More...
 
virtual ~IntelliImage ()=0
 An Abstract Destructor. More...
 
virtual void drawPixel (const QPoint &p1, const QColor &color)
 A funtcion used to draw a pixel on the Image with the given Color. More...
 
virtual void drawLine (const QPoint &p1, const QPoint &p2, const QColor &color, const int &penWidth)
 A function that draws a line between two given points in a given color. More...
 
virtual void drawPoint (const QPoint &p1, const QColor &color, const int &penWidth)
 A function that draws a point between on a given point in a given color. More...
 
virtual void drawPlain (const QColor &color)
 A function that clears the whole image in a given Color. More...
 
virtual ImageType getTypeOfImage ()
 
virtual bool loadImage (const QString &filePath)
 A function that loads and sclaes an image to the fitting dimensions. More...
 
virtual QColor getPixelColor (QPoint &point)
 A function that returns the pixelcolor at a certain point. More...
 
virtual void updateRendererSetting (bool fastRendererOn)
 updateRendererSetting updates the existing image format to the new format. More...
 
virtual QImage getImageData ()
 getImageData returns the data of the current image (Note: It will allways return a ARGB32bit QImage!). More...
 
virtual void setImageData (const QImage &newData)
 setImageData overwrites the old imageData the new imageData. More...
 
virtual int getWidth () const
 getWidth returns the width of the Image. More...
 
virtual int getHeight () const
 getHeight returns the height of the Image. More...
 
virtual bool isFastRendering () const
 isFastRendering returns if the Image is in fast rendering mode. More...
 
+ + + + + + + + + + + + + + +

+Protected Attributes

std::vector< QPoint > polygonData
 The Vertices of The Polygon. Needs to be a planar Polygon. More...
 
- Protected Attributes inherited from IntelliImage
QImage imageData
 The underlying image data. More...
 
ImageType TypeOfImage
 The Type, an Image is. More...
 
bool fastRenderering
 fastRendering is the flag that represents the usage of 8bit pictures. More...
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from IntelliImage
void resizeImage (QImage *image, const QSize &newSize)
 
+

Detailed Description

+

The IntelliShapedImage manages a Shapedimage.

+ +

Definition at line 13 of file IntelliShapedImage.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliShapedImage()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliShapedImage::IntelliShapedImage (int width,
int height,
bool fastRendererOn 
)
+
+ +

The Construcor of the IntelliShapedImage. Given the Image dimensions.

+
Parameters
+ + + + +
width- The width of the Image.
height- The height of the Image.
fastRendererOn- Represents the flag for 8bit picture handelling.
+
+
+ +

Definition at line 7 of file IntelliShapedImage.cpp.

+ +
+
+ +

◆ ~IntelliShapedImage()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliShapedImage::~IntelliShapedImage ()
+
+overridevirtual
+
+ +

An Destructor.

+ +

Definition at line 12 of file IntelliShapedImage.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getDeepCopy()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliImage * IntelliShapedImage::getDeepCopy ()
+
+overridevirtual
+
+ +

A function that copys all that returns a [allocated] Image.

+
Returns
A [allocated] Image with all the properties of the instance.
+ +

Reimplemented from IntelliRasterImage.

+ +

Definition at line 20 of file IntelliShapedImage.cpp.

+ +
+
+ +

◆ getDisplayable() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
QImage IntelliShapedImage::getDisplayable (const QSize & displaySize,
int alpha = 255 
)
+
+overridevirtual
+
+ +

A function returning the displayable ImageData in a requested transparence and size.

+
Parameters
+ + + +
displaySize- The size, in whcih the Image should be displayed.
alpha- The maximum alpha value, a pixel can have.
+
+
+
Returns
A QImage which is ready to be displayed.
+ +

Reimplemented from IntelliRasterImage.

+ +

Definition at line 69 of file IntelliShapedImage.cpp.

+ +
+
+ +

◆ getDisplayable() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
QImage IntelliShapedImage::getDisplayable (int alpha = 255)
+
+overridevirtual
+
+ +

A function returning the displayable ImageData in a requested transparence and it's standart size.

+
Parameters
+ + +
alpha- The maximum alpha value, a pixel can have.
+
+
+
Returns
A QImage which is ready to be displayed.
+ +

Reimplemented from IntelliRasterImage.

+ +

Definition at line 16 of file IntelliShapedImage.cpp.

+ +
+
+ +

◆ getPolygon()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< QPoint > IntelliShapedImage::getPolygon ()
+
+overridevirtual
+
+ +

getPolygon

+
Returns
returns the data of the polygon as points
+ +

Reimplemented from IntelliRasterImage.

+ +

Definition at line 114 of file IntelliShapedImage.cpp.

+ +
+
+ +

◆ getPolygonData()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector<QPoint> IntelliShapedImage::getPolygonData ()
+
+inlineoverridevirtual
+
+ +

A function that returns the Polygondata if existent.

+
Returns
The Polygondata if existent.
+ +

Reimplemented from IntelliImage.

+ +

Definition at line 71 of file IntelliShapedImage.h.

+ +
+
+ +

◆ setPolygon()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliShapedImage::setPolygon (const std::vector< QPoint > & polygonData)
+
+overridevirtual
+
+ +

A function that sets the data of the visible Polygon.

+
Parameters
+ + +
polygonData- The Vertices of the Polygon. Just Planar Polygons are allowed.
+
+
+ +

Reimplemented from IntelliRasterImage.

+ +

Definition at line 87 of file IntelliShapedImage.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ polygonData

+ +
+
+ + + + + +
+ + + + +
std::vector<QPoint> IntelliShapedImage::polygonData
+
+protected
+
+ +

The Vertices of The Polygon. Needs to be a planar Polygon.

+ +

Definition at line 31 of file IntelliShapedImage.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_shaped_image.js b/docs-src/html/class_intelli_shaped_image.js new file mode 100644 index 0000000..cb558d0 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image.js @@ -0,0 +1,12 @@ +var class_intelli_shaped_image = +[ + [ "IntelliShapedImage", "class_intelli_shaped_image.html#ae2e612a1fa52d7f878b34a7a7022d8e9", null ], + [ "~IntelliShapedImage", "class_intelli_shaped_image.html#a43d63d8a814852d377ee2030658fbab9", null ], + [ "getDeepCopy", "class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337", null ], + [ "getDisplayable", "class_intelli_shaped_image.html#a68cf374247c16f07fd84d50e4cd05630", null ], + [ "getDisplayable", "class_intelli_shaped_image.html#ac6a99e1a96134073bceea252b37636cc", null ], + [ "getPolygon", "class_intelli_shaped_image.html#aeff4b2331f4244f170c70526d8ca819b", null ], + [ "getPolygonData", "class_intelli_shaped_image.html#ae4518c7f5a105cc4f33fabb60c794a93", null ], + [ "setPolygon", "class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e", null ], + [ "polygonData", "class_intelli_shaped_image.html#a727d19ce314c0874be6b0633a3a603c8", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_shaped_image.png b/docs-src/html/class_intelli_shaped_image.png new file mode 100644 index 0000000000000000000000000000000000000000..5bdf651ad820bdd59dc8cc96e0ef2c94d92d8d92 GIT binary patch literal 742 zcmeAS@N?(olHy`uVBq!ia0vp^r9j-l!3-qdT?_F9QW60^A+G=b{|7Q3K6;d#o<0G{ z0^_?CuXGlB1$qDN4+-CQ%XgC9#pPF?OjFsrGv-Qhm8oA9u4!l09Oyj#eZ^<@BGqU% z{^wiOJyZ8ez7E~-vR@_i>r$TWR@c3F-6i>+em!rhcw=uX3|)AE}xiRsGx} zi2bj`)#~@v+z*_68Sa|4Sotb%a9*MRg5izCEB~t-0vTtWTEU>38qzS$NXx-nQgp%6 z9PZmb!ai<$16u71CpTizui*LpGz=^$UT1@l)FZM_xr;-rAXy0g*`g7{ZF zywd&7yF{5?r*Es* z-5n>7oLFtL{8_nU?CR%p?$tiBn`8CZW6g_l*=(_Qt|bc}$;{FDUOn$2*VeLit*P&f z=UgxNv!^X9X5Un)zGbbSw5}T*m|c~g_Ud-?tpBS^JHL9Y-TRWk>c#OD=Pa*B*B{(& WFz0qb=@nq2WbkzLb6Mw<&;$TnC1hm) literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_shaped_image__coll__graph.dot b/docs-src/html/class_intelli_shaped_image__coll__graph.dot new file mode 100644 index 0000000..1c59a61 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image__coll__graph.dot @@ -0,0 +1,11 @@ +digraph "IntelliShapedImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliShapedImage manages a Shapedimage."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html",tooltip="The IntelliRasterImage manages a RASTERIMAGE."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_shaped_image__inherit__graph.dot b/docs-src/html/class_intelli_shaped_image__inherit__graph.dot new file mode 100644 index 0000000..1c59a61 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image__inherit__graph.dot @@ -0,0 +1,11 @@ +digraph "IntelliShapedImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliShapedImage manages a Shapedimage."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html",tooltip="The IntelliRasterImage manages a RASTERIMAGE."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_cgraph.dot b/docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_cgraph.dot new file mode 100644 index 0000000..553d9f3 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliShapedImage::calculateVisiblity" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliShapedImage\l::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_helper.html#a04bdb4f53b89dded693ba6e896f4c63f",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_helper.html#a67fc007dda64187f6cef7fba3fcd9e40",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_icgraph.dot b/docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_icgraph.dot new file mode 100644 index 0000000..e5e7eb6 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_a0221d93c3c8990f7dab332454cc21f50_icgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliShapedImage::calculateVisiblity" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliShapedImage\l::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e",tooltip=" "]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_shaped_image_a0f834c3f255baeb50c98ef335a6d0ea9_icgraph.dot b/docs-src/html/class_intelli_shaped_image_a0f834c3f255baeb50c98ef335a6d0ea9_icgraph.dot new file mode 100644 index 0000000..8d5448d --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_a0f834c3f255baeb50c98ef335a6d0ea9_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliShapedImage::IntelliShapedImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliShapedImage\l::IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The Construcor of the IntelliShapedImage. Given the Image dimensions."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_cgraph.dot b/docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_cgraph.dot new file mode 100644 index 0000000..55bb17d --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliShapedImage::setPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that sets the data of the visible Polygon."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::calculateTriangles",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#acdaf1ed598e868b25e9e06d580da32e5",tooltip="A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ..."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_icgraph.dot b/docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_icgraph.dot new file mode 100644 index 0000000..d26d6f0 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_a4b69d75de7a3b85032482982f249458e_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliShapedImage::setPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that sets the data of the visible Polygon."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_a68cf374247c16f07fd84d50e4cd05630_icgraph.dot b/docs-src/html/class_intelli_shaped_image_a68cf374247c16f07fd84d50e4cd05630_icgraph.dot new file mode 100644 index 0000000..9992e60 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_a68cf374247c16f07fd84d50e4cd05630_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliShapedImage::getDisplayable" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliShapedImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function returning the displayable ImageData in a requested transparence and size."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#ac6a99e1a96134073bceea252b37636cc",tooltip="A function returning the displayable ImageData in a requested transparence and it's standart size."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_ac6a99e1a96134073bceea252b37636cc_cgraph.dot b/docs-src/html/class_intelli_shaped_image_ac6a99e1a96134073bceea252b37636cc_cgraph.dot new file mode 100644 index 0000000..fedf662 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_ac6a99e1a96134073bceea252b37636cc_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliShapedImage::getDisplayable" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliShapedImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function returning the displayable ImageData in a requested transparence and it's standart size."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::getDisplayable",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a68cf374247c16f07fd84d50e4cd05630",tooltip="A function returning the displayable ImageData in a requested transparence and size."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_ae2e612a1fa52d7f878b34a7a7022d8e9_icgraph.dot b/docs-src/html/class_intelli_shaped_image_ae2e612a1fa52d7f878b34a7a7022d8e9_icgraph.dot new file mode 100644 index 0000000..8d5448d --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_ae2e612a1fa52d7f878b34a7a7022d8e9_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliShapedImage::IntelliShapedImage" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliShapedImage\l::IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The Construcor of the IntelliShapedImage. Given the Image dimensions."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/class_intelli_shaped_image_aed0b31e0fa771104399d1f5ff39a0337_cgraph.dot b/docs-src/html/class_intelli_shaped_image_aed0b31e0fa771104399d1f5ff39a0337_cgraph.dot new file mode 100644 index 0000000..62314e1 --- /dev/null +++ b/docs-src/html/class_intelli_shaped_image_aed0b31e0fa771104399d1f5ff39a0337_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliShapedImage::getDeepCopy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function that copys all that returns a [allocated] Image."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage\l::IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#ae2e612a1fa52d7f878b34a7a7022d8e9",tooltip="The Construcor of the IntelliShapedImage. Given the Image dimensions."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e",tooltip="A function that sets the data of the visible Polygon."]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliTriangulation\l::calculateTriangles",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#acdaf1ed598e868b25e9e06d580da32e5",tooltip="A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ..."]; +} diff --git a/docs-src/html/class_intelli_tool-members.html b/docs-src/html/class_intelli_tool-members.html new file mode 100644 index 0000000..a4d12f2 --- /dev/null +++ b/docs-src/html/class_intelli_tool-members.html @@ -0,0 +1,121 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliTool Member List
+
+
+ +

This is the complete list of members for IntelliTool, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y)IntelliToolvirtual
onMouseLeftReleased(int x, int y)IntelliToolvirtual
onMouseMoved(int x, int y)IntelliToolvirtual
onMouseRightPressed(int x, int y)IntelliToolvirtual
onMouseRightReleased(int x, int y)IntelliToolvirtual
onWheelScrolled(int value)IntelliToolvirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool.html b/docs-src/html/class_intelli_tool.html new file mode 100644 index 0000000..993df36 --- /dev/null +++ b/docs-src/html/class_intelli_tool.html @@ -0,0 +1,836 @@ + + + + + + + +IntelliPhoto: IntelliTool Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliTool Class Referenceabstract
+
+
+ +

An abstract class that manages the basic events, like mouse clicks or scrolls events. + More...

+ +

#include <IntelliTool.h>

+
+Inheritance diagram for IntelliTool:
+
+
+ + +IntelliToolCircle +IntelliToolFloodFill +IntelliToolGradient +IntelliToolLine +IntelliToolPen +IntelliToolPlainTool +IntelliToolPolygon +IntelliToolRectangle + +
+ + + + + +

+Public Types

enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
virtual void onMouseRightPressed (int x, int y)
 A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on. Call this in child classes! More...
 
virtual void onMouseRightReleased (int x, int y)
 A function managing the right click Released of a Mouse. Merging the Canvas to Active. Call this in child classes! More...
 
virtual void onMouseLeftPressed (int x, int y)
 A function managing the left click Pressed of a Mouse. Resetting the current draw. Call this in child classes! More...
 
virtual void onMouseLeftReleased (int x, int y)
 A function managing the left click Released of a Mouse. Call this in child classes! More...
 
virtual void onWheelScrolled (int value)
 A function managing the scroll event. A positive value means scrolling outwards. Call this in child classes! More...
 
virtual void onMouseMoved (int x, int y)
 A function managing the mouse moved event. Call this in child classes! More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

An abstract class that manages the basic events, like mouse clicks or scrolls events.

+ +

Definition at line 17 of file IntelliTool.h.

+

Member Enumeration Documentation

+ +

◆ Tooltype

+ +
+
+ + + + + +
+ + + + +
enum IntelliTool::Tooltype
+
+strong
+
+ +

The Tooltype enum categorising the toosl.

+ + + + + + + + + + +
Enumerator
CIRCLE 
FLOODFILL 
GRADIENT 
LINE 
PEN 
PLAIN 
POLYGON 
RECTANGLE 
NONE 
+ +

Definition at line 23 of file IntelliTool.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ IntelliTool()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliTool::IntelliTool (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general Painting Area and colorPicker.

+
Parameters
+ + + +
Area- The general PaintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 5 of file IntelliTool.cpp.

+ +
+
+ +

◆ ~IntelliTool()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliTool::~IntelliTool ()
+
+pure virtual
+
+ +

An abstract Destructor.

+ +

Definition at line 15 of file IntelliTool.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getIsDrawing()

+ +
+
+ + + + + + + +
bool IntelliTool::getIsDrawing () const
+
+ +

getIsDrawing returns if the tool is currently drawing

+
Returns
returns if the tool is currently drawing
+ +

Definition at line 105 of file IntelliTool.cpp.

+ +
+
+ +

◆ getTooltype()

+ +
+
+ + + + + + + +
IntelliTool::Tooltype IntelliTool::getTooltype () const
+
+ +

getTooltype returns the tools type

+
Returns
returns the tool type of the current tool.
+ +

Definition at line 101 of file IntelliTool.cpp.

+ +
+
+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliTool::onMouseLeftPressed (int x,
int y 
)
+
+virtual
+
+ +

A function managing the left click Pressed of a Mouse. Resetting the current draw. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented in IntelliToolPolygon, IntelliToolCircle, IntelliToolRectangle, IntelliToolLine, IntelliToolPen, IntelliToolFloodFill, IntelliToolPlainTool, and IntelliToolGradient.

+ +

Definition at line 30 of file IntelliTool.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliTool::onMouseLeftReleased (int x,
int y 
)
+
+virtual
+
+ +

A function managing the left click Released of a Mouse. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented in IntelliToolPolygon, IntelliToolCircle, IntelliToolRectangle, IntelliToolLine, IntelliToolPen, IntelliToolFloodFill, IntelliToolPlainTool, and IntelliToolGradient.

+ +

Definition at line 37 of file IntelliTool.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliTool::onMouseMoved (int x,
int y 
)
+
+virtual
+
+ +

A function managing the mouse moved event. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented in IntelliToolPolygon, IntelliToolCircle, IntelliToolRectangle, IntelliToolLine, IntelliToolPen, IntelliToolFloodFill, IntelliToolPlainTool, and IntelliToolGradient.

+ +

Definition at line 48 of file IntelliTool.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliTool::onMouseRightPressed (int x,
int y 
)
+
+virtual
+
+ +

A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented in IntelliToolPolygon, IntelliToolCircle, IntelliToolRectangle, IntelliToolLine, IntelliToolPen, IntelliToolFloodFill, IntelliToolPlainTool, and IntelliToolGradient.

+ +

Definition at line 19 of file IntelliTool.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliTool::onMouseRightReleased (int x,
int y 
)
+
+virtual
+
+ +

A function managing the right click Released of a Mouse. Merging the Canvas to Active. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented in IntelliToolPolygon, IntelliToolCircle, IntelliToolRectangle, IntelliToolLine, IntelliToolPen, IntelliToolFloodFill, IntelliToolPlainTool, and IntelliToolGradient.

+ +

Definition at line 26 of file IntelliTool.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliTool::onWheelScrolled (int value)
+
+virtual
+
+ +

A function managing the scroll event. A positive value means scrolling outwards. Call this in child classes!

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented in IntelliToolPolygon, IntelliToolCircle, IntelliToolRectangle, IntelliToolLine, IntelliToolPen, IntelliToolFloodFill, IntelliToolPlainTool, and IntelliToolGradient.

+ +

Definition at line 53 of file IntelliTool.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ activeLayer

+ +
+
+ + + + + +
+ + + + +
LayerObject* IntelliTool::activeLayer
+
+protected
+
+ +

A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews.

+ +

Definition at line 74 of file IntelliTool.h.

+ +
+
+ +

◆ ActiveType

+ +
+
+ + + + + +
+ + + + +
Tooltype IntelliTool::ActiveType
+
+protected
+
+ +

ActiveType the type of the active tool.

+ +

Definition at line 59 of file IntelliTool.h.

+ +
+
+ +

◆ Area

+ +
+
+ + + + + +
+ + + + +
PaintingArea* IntelliTool::Area
+
+protected
+
+ +

A pointer to the general PaintingArea to interact with.

+ +

Definition at line 54 of file IntelliTool.h.

+ +
+
+ +

◆ Canvas

+ +
+
+ + + + + +
+ + + + +
LayerObject* IntelliTool::Canvas
+
+protected
+
+ +

A pointer to the drawing canvas of the tool, work on this.

+ +

Definition at line 79 of file IntelliTool.h.

+ +
+
+ +

◆ colorPicker

+ +
+
+ + + + + +
+ + + + +
IntelliColorPicker* IntelliTool::colorPicker
+
+protected
+
+ +

A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors.

+ +

Definition at line 64 of file IntelliTool.h.

+ +
+
+ +

◆ isDrawing

+ +
+
+ + + + + +
+ + + + +
bool IntelliTool::isDrawing = false
+
+protected
+
+ +

A flag checking if the user is currently drawing or not.

+ +

Definition at line 84 of file IntelliTool.h.

+ +
+
+ +

◆ Toolsettings

+ +
+
+ + + + + +
+ + + + +
IntelliToolsettings* IntelliTool::Toolsettings
+
+protected
+
+ +

Toolsettings a refrence to the tool settings.

+ +

Definition at line 69 of file IntelliTool.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool.js b/docs-src/html/class_intelli_tool.js new file mode 100644 index 0000000..f6bb814 --- /dev/null +++ b/docs-src/html/class_intelli_tool.js @@ -0,0 +1,31 @@ +var class_intelli_tool = +[ + [ "Tooltype", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8f", [ + [ "CIRCLE", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa0af50777920c1401ab975cab64c4d491", null ], + [ "FLOODFILL", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa526904ea67131c56718f9882518b5d93", null ], + [ "GRADIENT", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa90f70ea2675c36bd9b0b44a79f37a41f", null ], + [ "LINE", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa17b8ef2c330f1430e00c9de5469fc7e7", null ], + [ "PEN", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fad3fa1aa45b9fe56e1fc1b558d8ed6678", null ], + [ "PLAIN", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8faf62eb0bf5e5c72e80983fbbac1cb70e5", null ], + [ "POLYGON", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8faecdc92bf56d960b73b02ee40125758bc", null ], + [ "RECTANGLE", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa8e8e58fe94ab307a826e087028a7c01a", null ], + [ "NONE", "class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fab50339a10e1de285ac99d4c3990b8693", null ] + ] ], + [ "IntelliTool", "class_intelli_tool.html#a08ef094271ce6248b42f888472463526", null ], + [ "~IntelliTool", "class_intelli_tool.html#a57fb1b27d364c9e3696eb928b75fa9f2", null ], + [ "getIsDrawing", "class_intelli_tool.html#af90f0965efbc5c25126691e998f39ca3", null ], + [ "getTooltype", "class_intelli_tool.html#adf5c06ad2b2c0d745fb68cf80e7e5694", null ], + [ "onMouseLeftPressed", "class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c", null ], + [ "onMouseLeftReleased", "class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b", null ], + [ "onMouseMoved", "class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639", null ], + [ "onMouseRightPressed", "class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966", null ], + [ "onMouseRightReleased", "class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0", null ], + [ "onWheelScrolled", "class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574", null ], + [ "activeLayer", "class_intelli_tool.html#aedccdad01b2bc6ec84fad3582251ff5d", null ], + [ "ActiveType", "class_intelli_tool.html#a631388999f36013628e13b9de87a6f7b", null ], + [ "Area", "class_intelli_tool.html#ab4c2698a0f9f25fb6639ec760d2d0289", null ], + [ "Canvas", "class_intelli_tool.html#a144d469cc03584f501194529a1b53c77", null ], + [ "colorPicker", "class_intelli_tool.html#ae2e0ac394611a361ab4ef2fe55c03fef", null ], + [ "isDrawing", "class_intelli_tool.html#a555aa8a74992327f740dd69b3bb0ccca", null ], + [ "Toolsettings", "class_intelli_tool.html#a55f6b45b416b7d790fa8bc09603bf67f", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool.png b/docs-src/html/class_intelli_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..4d872f596ead2c7ea03526373450dcc2a05f43f8 GIT binary patch literal 2298 zcmcgueNYp38it{#0w=jtQL2)y;ZCN0pjL$ffh}z~>RA)@)KK{dNLx+;IX*%Hge>PB zO+3`t$y6+exwF@LXZZ3ggzrE?iC-8olmIcrB`F9PlMomBrhBrL3wcH`jLYVE{$G}*U(@&m*@{BylUsx};Sr-$_!y&>I< zI^$Bt)E*5t!wFtgv88+|gER0?xq`oqlKv44D||@}&vU~ngFP?Cul(r#d2@4@;{k%1 z@@M{GWl8y0eMxU0=iG^fH>Z^F&%Zor^VFY6t9Y%naD62CLY(Vp&|+V_hV9#J-KP{ida^Mjk`uHp&&(y$F-{E@W2M?>PHin4x^VLZ{SR-$(OHnj2Cc=6$77=GIAU3ZcOvbgCu;G1T^BI6>ZCcjy8cW^Z z<%;HPLtI)$X;N0ETw&e%s>pt7z~t%b`h$3fyaD2^s1km(FRA|+A`lRyA+A&C;1BO4 zK;)C$cr+phoqZ_q^Z#m%vQrP)tdliRu|RN&j=mY*y#V$TY}bc8WOV+DQlilE*_Ghe zOlJXX3b2;~b!+BUgJj`l2YBD;nofDaY*pRe*-6koZ4rj9MGJt!tSM8YA zOXp~>a6Qrwo4g`)f)no(ne2H@ALO}+wrl|{sMPa*H8dOG0tRQnRxSPErZu?6 zE0#@KJe+*EgwOh+TiQRg4rk?0e8aIm=+UJTiUj$f|TQqHAI7U^*wI8W|g7lxzl4GA#SbpF7-?-M&Y%7{iq-BVbvdp+0rXN~rqc1Kbg~Kf8GOn^Z^YSI~uqN4!8Rg$wnl+H6+MVGE-#O(av&u?@0fb8}6cUb+CB*&(hq z>$??>{!C}4#gK-+ivYu>z|=FfSJ9nynfQFgHP1(p$)7rJBRtDnRzHo&=0$rz&bM&%ymCAIR z86zzUk literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_tool__coll__graph.dot b/docs-src/html/class_intelli_tool__coll__graph.dot new file mode 100644 index 0000000..67bf4ac --- /dev/null +++ b/docs-src/html/class_intelli_tool__coll__graph.dot @@ -0,0 +1,21 @@ +digraph "IntelliTool" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node2 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node3 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node4 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node5 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node6 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node6 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node7 -> Node6 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node7 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool__inherit__graph.dot b/docs-src/html/class_intelli_tool__inherit__graph.dot new file mode 100644 index 0000000..9f14209 --- /dev/null +++ b/docs-src/html/class_intelli_tool__inherit__graph.dot @@ -0,0 +1,22 @@ +digraph "IntelliTool" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolCircle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html",tooltip="The IntelliToolCircle class represents a tool to draw a circle."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolFloodFill",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html",tooltip="The IntelliToolFloodFill class represents a tool to flood FIll a certian area."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html",tooltip="The IntelliToolFloodFill class represents a tool to draw a line."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPen",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html",tooltip="The IntelliToolPen class represents a tool to draw a line."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolPlainTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html",tooltip="The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html",tooltip="The IntelliToolPolygon managed the Drawing of Polygonforms."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolRectangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html",tooltip="The IntelliToolRectangle class represents a tool to draw a rectangle."]; +} diff --git a/docs-src/html/class_intelli_tool_a0020fad2e26315d5c4d96dbc95d1dceb_icgraph.dot b/docs-src/html/class_intelli_tool_a0020fad2e26315d5c4d96dbc95d1dceb_icgraph.dot new file mode 100644 index 0000000..5e6ffe0 --- /dev/null +++ b/docs-src/html/class_intelli_tool_a0020fad2e26315d5c4d96dbc95d1dceb_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliTool::getIsDrawing" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::getIsDrawing",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::moveActive\lLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#ae05f6893fb44bfcb34018573a609cd1a",tooltip="The moveActiveLayer moves the active layer to a specific position in the layer stack."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="PaintingArea::movePosition\lActive",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#ac6d089f4357b22d9a9906fd4771de3e7",tooltip="The movePositionActive method moves the active layer to certain position."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="PaintingArea::slotActivate\lLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a71ac281e0de263208d4a3b9de74258ec",tooltip="The slotActivateLayer method handles the event of selecting one layer as active."]; +} diff --git a/docs-src/html/class_intelli_tool_a16189b00307c6d7e89f28198f54404b0_icgraph.dot b/docs-src/html/class_intelli_tool_a16189b00307c6d7e89f28198f54404b0_icgraph.dot new file mode 100644 index 0000000..db4d50f --- /dev/null +++ b/docs-src/html/class_intelli_tool_a16189b00307c6d7e89f28198f54404b0_icgraph.dot @@ -0,0 +1,24 @@ +digraph "IntelliTool::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::mouseRelease\lEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a35b5df914acb608cc29717659793359c",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPlainTool\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#a2ae458f1b04eb77a47f6dca5e91e33b8",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolFloodFill\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#a39cf49c0ce46f96be3510f0b70c9d892",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPen::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#abf8562e8cd2da586afdf4d47b3a4ff13",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolLine::onMouse\lRightReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a6214918cba5753f89d97de4559a2b9b2",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolRectangle\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#ad43f653256a6516b9398f82054be0d7f",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolCircle::\lonMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#aca07540f2f7ccb3d2c0b84890c1afc4c",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolPolygon\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a47cad87cd02b128b02dc929713bd1d1b",tooltip="A function managing the right click released of a mouse."]; +} diff --git a/docs-src/html/class_intelli_tool_a1e6aa68ac5f3c2ca02319e5ef3f0c966_icgraph.dot b/docs-src/html/class_intelli_tool_a1e6aa68ac5f3c2ca02319e5ef3f0c966_icgraph.dot new file mode 100644 index 0000000..a6e1859 --- /dev/null +++ b/docs-src/html/class_intelli_tool_a1e6aa68ac5f3c2ca02319e5ef3f0c966_icgraph.dot @@ -0,0 +1,40 @@ +digraph "IntelliTool::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::mousePress\lEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#abfe445f8d9b70ae42bfeda874127dd15",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPlainTool\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#acb0c46e16d2c09370a2244a936de38b1",tooltip="A function managing the right click pressed of a mouse. Resetting the current fill."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolFloodFill\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ada0f7154d119102410a55038763a17e4",tooltip="A function managing the right click pressed of a mouse. Clearing the canvas."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolPen::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a1751e3864a0d36ef42ca55021cae73ce",tooltip="A function managing the right click pressed of a mouse. Resetting the current draw."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolLine::onMouse\lRightPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a6cce59f3017936214b10b47252a898a3",tooltip="A function managing the right click pressed of a mouse. Clearing the canvas."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolRectangle\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a480c6804a4963c5a1c3f7ef84b63c1a8",tooltip="A function managing the right click pressed of a mouse.Resetting the current draw."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolCircle::\lonMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#a29d7b9ed4960e6fe1f31ff620363e429",tooltip="A function managing the right click pressed of a mouse. Clearing the canvas layer."]; + Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliToolPolygon\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#aa36b012b48311c36e7cd6771a5081427",tooltip="A function managing the right click pressed of a mouse. Resetting the current fill."]; + Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliToolCircle::\l~IntelliToolCircle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#a7a03b65b95d7b5d72e6a92c95f068954",tooltip="A Destructor."]; + Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="IntelliToolFloodFill\l::~IntelliToolFloodFill",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#a83b1bd8be0cbb32cdf61a9597ec849ba",tooltip="A Destructor."]; + Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="IntelliToolLine::~Intelli\lToolLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#acb600b0f4e9225ebce2937c2b7abb4c2",tooltip="An abstract Destructor."]; + Node1 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="IntelliToolPen::~Intelli\lToolPen",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#ac77a025515d0fed6954556fe2b444818",tooltip="A Destructor."]; + Node1 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="IntelliToolPlainTool\l::~IntelliToolPlainTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#a91fe568be05c075814d67440472bb658",tooltip="A Destructor."]; + Node1 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="IntelliToolPolygon\l::~IntelliToolPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a087cbf2254010989df6106a357471499",tooltip="A Destructor."]; + Node1 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node17 [label="IntelliToolRectangle\l::~IntelliToolRectangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a7dc1463e726a21255e6297241dc71fb1",tooltip="A Destructor."]; +} diff --git a/docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_cgraph.dot b/docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_cgraph.dot new file mode 100644 index 0000000..fdaba4f --- /dev/null +++ b/docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliTool::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_icgraph.dot b/docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_icgraph.dot new file mode 100644 index 0000000..eb66746 --- /dev/null +++ b/docs-src/html/class_intelli_tool_a34b7ef1dde96b94a0ce450a25ae1778c_icgraph.dot @@ -0,0 +1,24 @@ +digraph "IntelliTool::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::mousePress\lEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#abfe445f8d9b70ae42bfeda874127dd15",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPlainTool\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9",tooltip="A function managing the left click pressed of a mouse. Filling the whole canvas."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolFloodFill\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961",tooltip="A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t..."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPen::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205",tooltip="A function managing the left click pressed of a mouse. Starting the drawing procedure."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolLine::onMouse\lLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846",tooltip="A function managing the left click pressed of a mouse. Sets the starting point of the line."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolRectangle\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#ae03c307ccf66cbe3fd59e3657712368d",tooltip="A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle..."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolCircle::\lonMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ae883b8ae833c78a8867e626c600f9639",tooltip="A function managing the left click pressed of a mouse. Sets the middle point of the cricle."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; +} diff --git a/docs-src/html/class_intelli_tool_a4dccfd4460255ccb866f336406a33574_icgraph.dot b/docs-src/html/class_intelli_tool_a4dccfd4460255ccb866f336406a33574_icgraph.dot new file mode 100644 index 0000000..313d57e --- /dev/null +++ b/docs-src/html/class_intelli_tool_a4dccfd4460255ccb866f336406a33574_icgraph.dot @@ -0,0 +1,24 @@ +digraph "IntelliTool::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPlainTool\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#adc004ea421e2cc0ac39cc7a6b6d43d0d",tooltip="A function managing the scroll event."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolFloodFill\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#ad58cc7c065123beb6b0270f99e99b991",tooltip="A function managing the scroll event."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPen::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#afe3626ddff440ab125f4a2465c45427a",tooltip="A function managing the scroll event. Changing penWidth relativ to value."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolLine::onWheel\lScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#aaf1d686e1ec43f41b5186ccfd806b125",tooltip="A function managing the scroll event. Changing the lineWidth relative to value."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolRectangle\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a445c53a56e859f970e59f5036e221e0c",tooltip="A function managing the scroll event.Changing edgeWidth relativ to value."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolCircle::\lonWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ae2d9b0fb6695c184c4cb507a5fb75506",tooltip="A function managing the scroll event. Changing the edge Width relative to value."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolPolygon\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a713103300c9f023d64d9eec5ac05dd17",tooltip="A function managing the scroll event. CHanging the lineWidth relative to value."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="PaintingArea::wheelEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a632848d99f44d33d7da2618fbc6775a4",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_cgraph.dot b/docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_cgraph.dot new file mode 100644 index 0000000..6ede39e --- /dev/null +++ b/docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliTool::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_icgraph.dot b/docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_icgraph.dot new file mode 100644 index 0000000..e2cce2e --- /dev/null +++ b/docs-src/html/class_intelli_tool_a906a2575c16c8a33cb2a5197f8d8cc5b_icgraph.dot @@ -0,0 +1,24 @@ +digraph "IntelliTool::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::mouseRelease\lEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a35b5df914acb608cc29717659793359c",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPlainTool\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ac23f5d0f07e42fd7c2ea3fc1347da400",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolFloodFill\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#a7438ef96c6c36068bce76e2364e8594c",tooltip="A function managing the left click released of a mouse."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPen::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#abda7a22b9766fa4ad254324a53cab94d",tooltip="A function managing the left click released of a mouse. Merging the drawing to the active layer."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolLine::onMouse\lLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#ac93f76ff20a1c111a403b298bab02482",tooltip="A function managing the left click released of a mouse."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolRectangle\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a94460e3ff1c19e80bde922c55f53cc43",tooltip="A function managing the left click released of a mouse. Merging the draw to the active layer."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolCircle::\lonMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ad8e438ec997c57262b5efc2db4cee1a3",tooltip="A function managing the left click released of a mouse."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_cgraph.dot b/docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_cgraph.dot new file mode 100644 index 0000000..15d8a44 --- /dev/null +++ b/docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliTool::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_icgraph.dot b/docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_icgraph.dot new file mode 100644 index 0000000..fd39439 --- /dev/null +++ b/docs-src/html/class_intelli_tool_ac10e20414cd8855a2f9b103fb6408639_icgraph.dot @@ -0,0 +1,24 @@ +digraph "IntelliTool::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::mouseMoveEvent",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#aa22e274b6094a9619f196cd7b49526b5",tooltip=" "]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPlainTool\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html#ad7546a6335bb3bb4cbf0e1883788d41c",tooltip="A function managing the mouse moved event."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolFloodFill\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html#a3cd42cea99bc7583875abcc0c274c668",tooltip="A function managing the mouse moved event."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPen::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2",tooltip="A function managing the mouse moved event. To draw the line."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolRectangle\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a4b5931071e21eb6949ffe357315e408b",tooltip="A function managing the mouse moved event.Drawing a rectangle to currrent mouse position."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolCircle::\lonMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#a90ee58c5390a86afc75c14ca79b91d7b",tooltip="A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse posit..."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolPolygon\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a0e3a1135f04c73c159137ae219a38922",tooltip="A function managing the mouse moved event."]; +} diff --git a/docs-src/html/class_intelli_tool_circle-members.html b/docs-src/html/class_intelli_tool_circle-members.html new file mode 100644 index 0000000..64dba21 --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolCircle Member List
+
+
+ +

This is the complete list of members for IntelliToolCircle, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolCircle(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolCircle
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolCirclevirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolCirclevirtual
onMouseMoved(int x, int y) overrideIntelliToolCirclevirtual
onMouseRightPressed(int x, int y) overrideIntelliToolCirclevirtual
onMouseRightReleased(int x, int y) overrideIntelliToolCirclevirtual
onWheelScrolled(int value) overrideIntelliToolCirclevirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolCircle() overrideIntelliToolCirclevirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_circle.html b/docs-src/html/class_intelli_tool_circle.html new file mode 100644 index 0000000..bd18c9f --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle.html @@ -0,0 +1,568 @@ + + + + + + + +IntelliPhoto: IntelliToolCircle Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolCircle Class Reference
+
+
+ +

The IntelliToolCircle class represents a tool to draw a circle. + More...

+ +

#include <IntelliToolCircle.h>

+
+Inheritance diagram for IntelliToolCircle:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolCircle (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general paintingArea and colorPicker. And reading in the inner alpha and edgeWidth. More...
 
virtual ~IntelliToolCircle () override
 A Destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse. Clearing the canvas layer. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Sets the middle point of the cricle. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. Changing the edge Width relative to value. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse position and the middle point. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolCircle class represents a tool to draw a circle.

+ +

Definition at line 14 of file IntelliToolCircle.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolCircle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolCircle::IntelliToolCircle (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general paintingArea and colorPicker. And reading in the inner alpha and edgeWidth.

+
Parameters
+ + + +
Area- The general paintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 6 of file IntelliToolCircle.cpp.

+ +
+
+ +

◆ ~IntelliToolCircle()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolCircle::~IntelliToolCircle ()
+
+overridevirtual
+
+ +

A Destructor.

+ +

Definition at line 11 of file IntelliToolCircle.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolCircle::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Sets the middle point of the cricle.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 57 of file IntelliToolCircle.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolCircle::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 67 of file IntelliToolCircle.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolCircle::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse position and the middle point.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 76 of file IntelliToolCircle.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolCircle::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse. Clearing the canvas layer.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 49 of file IntelliToolCircle.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolCircle::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 53 of file IntelliToolCircle.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolCircle::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event. Changing the edge Width relative to value.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 71 of file IntelliToolCircle.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_circle.js b/docs-src/html/class_intelli_tool_circle.js new file mode 100644 index 0000000..b0989fb --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle.js @@ -0,0 +1,11 @@ +var class_intelli_tool_circle = +[ + [ "IntelliToolCircle", "class_intelli_tool_circle.html#a835327842fb71cb6a505e260ac5b69c8", null ], + [ "~IntelliToolCircle", "class_intelli_tool_circle.html#a7a03b65b95d7b5d72e6a92c95f068954", null ], + [ "onMouseLeftPressed", "class_intelli_tool_circle.html#ae883b8ae833c78a8867e626c600f9639", null ], + [ "onMouseLeftReleased", "class_intelli_tool_circle.html#ad8e438ec997c57262b5efc2db4cee1a3", null ], + [ "onMouseMoved", "class_intelli_tool_circle.html#a90ee58c5390a86afc75c14ca79b91d7b", null ], + [ "onMouseRightPressed", "class_intelli_tool_circle.html#a29d7b9ed4960e6fe1f31ff620363e429", null ], + [ "onMouseRightReleased", "class_intelli_tool_circle.html#aca07540f2f7ccb3d2c0b84890c1afc4c", null ], + [ "onWheelScrolled", "class_intelli_tool_circle.html#ae2d9b0fb6695c184c4cb507a5fb75506", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_circle.png b/docs-src/html/class_intelli_tool_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..d85887da6fda56b65ac0308dc9f75a49df60f79c GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^$v_;y!3-p=xUH7}DTx4|5ZC|z{{xv1A3aJ=PoDr} zf$@O@2R^F^*#Ws6B|(0{3_wL7aP?G(5d#CGg{O;SNCo5DxexOWEAX)O^RImW|3voW zD~&yQ=ZuVVi;pgB>elCbSD&@kRAQA%>m)wUPaik;8U5SVv#CyH>*F2!9#u^J;N5qe z`F{HBHGJMXM3VzOtBxP%JAIS0?D)RB(==8}&%a`Lbz@v%g>3WhAF1!P)~r`~S?$rT z@)Lw-JXx{zS_H$nLS~M%rpIO7(|ro=h(4So*=K(_{3S!dBt8cDmkb{!qEH|EWtUD7 z;$c;oQo`_K#;Y5lcekh7+-A-=w&~tC{*84n3wZo)UVFv(qT+3Z&4*7Zw^K@QtXw<8 z?AEVa&FAmS$xhoW{H9N>Sa{Qk-4mAPz25OGW3!da>(IEOH?f~~^&PC8vo^WndHVgS zx!d`!*Z%mu>UX`2Q}aG14kcLzyGx7@k|!;m5|mWQ%*-Zwd`<7QMZj=n@O1TaS?83{ F1OSD|! Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_circle__inherit__graph.dot b/docs-src/html/class_intelli_tool_circle__inherit__graph.dot new file mode 100644 index 0000000..67ada15 --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolCircle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolCircle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolCircle class represents a tool to draw a circle."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_circle_a29d7b9ed4960e6fe1f31ff620363e429_cgraph.dot b/docs-src/html/class_intelli_tool_circle_a29d7b9ed4960e6fe1f31ff620363e429_cgraph.dot new file mode 100644 index 0000000..0e5b463 --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_a29d7b9ed4960e6fe1f31ff620363e429_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolCircle::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\lonMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse. Clearing the canvas layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_circle_a7a03b65b95d7b5d72e6a92c95f068954_cgraph.dot b/docs-src/html/class_intelli_tool_circle_a7a03b65b95d7b5d72e6a92c95f068954_cgraph.dot new file mode 100644 index 0000000..3edbae4 --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_a7a03b65b95d7b5d72e6a92c95f068954_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolCircle::~IntelliToolCircle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\l~IntelliToolCircle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_circle_a90ee58c5390a86afc75c14ca79b91d7b_cgraph.dot b/docs-src/html/class_intelli_tool_circle_a90ee58c5390a86afc75c14ca79b91d7b_cgraph.dot new file mode 100644 index 0000000..3410c6b --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_a90ee58c5390a86afc75c14ca79b91d7b_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolCircle::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\lonMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event. Draws a circle with radius of eulerian norm of mouse posit..."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::drawPlain",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a6be622810dc2bc756054bb5769becb06",tooltip="A function that clears the whole image in a given Color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_circle_aca07540f2f7ccb3d2c0b84890c1afc4c_cgraph.dot b/docs-src/html/class_intelli_tool_circle_aca07540f2f7ccb3d2c0b84890c1afc4c_cgraph.dot new file mode 100644 index 0000000..f7c2d9c --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_aca07540f2f7ccb3d2c0b84890c1afc4c_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolCircle::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\lonMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_circle_ad8e438ec997c57262b5efc2db4cee1a3_cgraph.dot b/docs-src/html/class_intelli_tool_circle_ad8e438ec997c57262b5efc2db4cee1a3_cgraph.dot new file mode 100644 index 0000000..44d094e --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_ad8e438ec997c57262b5efc2db4cee1a3_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolCircle::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\lonMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_circle_ae2d9b0fb6695c184c4cb507a5fb75506_cgraph.dot b/docs-src/html/class_intelli_tool_circle_ae2d9b0fb6695c184c4cb507a5fb75506_cgraph.dot new file mode 100644 index 0000000..784caf2 --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_ae2d9b0fb6695c184c4cb507a5fb75506_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolCircle::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\lonWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event. Changing the edge Width relative to value."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolsettings\l::setLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a906d37de6ee94b433d53fe3e598cc9fa",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_tool_circle_ae883b8ae833c78a8867e626c600f9639_cgraph.dot b/docs-src/html/class_intelli_tool_circle_ae883b8ae833c78a8867e626c600f9639_cgraph.dot new file mode 100644 index 0000000..2578e46 --- /dev/null +++ b/docs-src/html/class_intelli_tool_circle_ae883b8ae833c78a8867e626c600f9639_cgraph.dot @@ -0,0 +1,13 @@ +digraph "IntelliToolCircle::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolCircle::\lonMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Sets the middle point of the cricle."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node3 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill-members.html b/docs-src/html/class_intelli_tool_flood_fill-members.html new file mode 100644 index 0000000..51ae69a --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolFloodFill Member List
+
+
+ +

This is the complete list of members for IntelliToolFloodFill, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolFloodFill(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolFloodFill
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolFloodFillvirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolFloodFillvirtual
onMouseMoved(int x, int y) overrideIntelliToolFloodFillvirtual
onMouseRightPressed(int x, int y) overrideIntelliToolFloodFillvirtual
onMouseRightReleased(int x, int y) overrideIntelliToolFloodFillvirtual
onWheelScrolled(int value) overrideIntelliToolFloodFillvirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolFloodFill() overrideIntelliToolFloodFillvirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_flood_fill.html b/docs-src/html/class_intelli_tool_flood_fill.html new file mode 100644 index 0000000..2cc65a7 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill.html @@ -0,0 +1,568 @@ + + + + + + + +IntelliPhoto: IntelliToolFloodFill Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolFloodFill Class Reference
+
+
+ +

The IntelliToolFloodFill class represents a tool to flood FIll a certian area. + More...

+ +

#include <IntelliToolFloodFill.h>

+
+Inheritance diagram for IntelliToolFloodFill:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolFloodFill (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general paintingArea and colorPicker. More...
 
virtual ~IntelliToolFloodFill () override
 A Destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse. Clearing the canvas. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Sets the point to flood fill around and does this. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolFloodFill class represents a tool to flood FIll a certian area.

+ +

Definition at line 14 of file IntelliToolFloodFill.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolFloodFill()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolFloodFill::IntelliToolFloodFill (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general paintingArea and colorPicker.

+
Parameters
+ + + +
Area- The general paintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 8 of file IntelliToolFloodFill.cpp.

+ +
+
+ +

◆ ~IntelliToolFloodFill()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolFloodFill::~IntelliToolFloodFill ()
+
+overridevirtual
+
+ +

A Destructor.

+ +

Definition at line 13 of file IntelliToolFloodFill.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolFloodFill::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Sets the point to flood fill around and does this.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 25 of file IntelliToolFloodFill.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolFloodFill::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 72 of file IntelliToolFloodFill.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolFloodFill::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 81 of file IntelliToolFloodFill.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolFloodFill::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse. Clearing the canvas.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 17 of file IntelliToolFloodFill.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolFloodFill::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 21 of file IntelliToolFloodFill.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolFloodFill::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 76 of file IntelliToolFloodFill.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_flood_fill.js b/docs-src/html/class_intelli_tool_flood_fill.js new file mode 100644 index 0000000..d215069 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill.js @@ -0,0 +1,11 @@ +var class_intelli_tool_flood_fill = +[ + [ "IntelliToolFloodFill", "class_intelli_tool_flood_fill.html#a0b283b1b0135ff909a7199be9da9c076", null ], + [ "~IntelliToolFloodFill", "class_intelli_tool_flood_fill.html#a83b1bd8be0cbb32cdf61a9597ec849ba", null ], + [ "onMouseLeftPressed", "class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961", null ], + [ "onMouseLeftReleased", "class_intelli_tool_flood_fill.html#a7438ef96c6c36068bce76e2364e8594c", null ], + [ "onMouseMoved", "class_intelli_tool_flood_fill.html#a3cd42cea99bc7583875abcc0c274c668", null ], + [ "onMouseRightPressed", "class_intelli_tool_flood_fill.html#ada0f7154d119102410a55038763a17e4", null ], + [ "onMouseRightReleased", "class_intelli_tool_flood_fill.html#a39cf49c0ce46f96be3510f0b70c9d892", null ], + [ "onWheelScrolled", "class_intelli_tool_flood_fill.html#ad58cc7c065123beb6b0270f99e99b991", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_flood_fill.png b/docs-src/html/class_intelli_tool_flood_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..578ca9c47c5adc8f16efd181f699424d6aebf253 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^ML-t<74`e=k^e8z!eFBgL z#s>}@_^cvi2jp^;1o;Is02P72)l(rx3=E8ho-U3d6^w7^a_1dU;9+fVpYmJ2(tN(q z9#5@X>*lU1J+h!h+)%=TVe2(1?$Aj}o=a6MKS)n~`X@ItwN~Zp+pp1+GVKH6&i?0n z8gp)Qe(dT^XZKIN738@q#p9;PvF+O5AJ#FeyzJSi^*&_XcGX>{CU5=|EG=D{tom~A zlAuX49zf#?`ZryRa%TJ?C+wi}@l+;P`7!PJ$1{GR5S<$M3$k?C;#S%$QI?6$Mt_p?pWZ*E?B z@@)9}Ij1ATww3;UbZ!5(px;|Gea+6NeCA$ylWDj7+G^k5LOEtjOdd`svVLUz)bM{y zrN!6v;g;Jr9ybV+teO^RE~d~1wvU1RUEs7JFAe^?+ay_ Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill__inherit__graph.dot b/docs-src/html/class_intelli_tool_flood_fill__inherit__graph.dot new file mode 100644 index 0000000..b32d6bb --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolFloodFill" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolFloodFill",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolFloodFill class represents a tool to flood FIll a certian area."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_a39cf49c0ce46f96be3510f0b70c9d892_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_a39cf49c0ce46f96be3510f0b70c9d892_cgraph.dot new file mode 100644 index 0000000..c719c47 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_a39cf49c0ce46f96be3510f0b70c9d892_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolFloodFill::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_a3cd42cea99bc7583875abcc0c274c668_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_a3cd42cea99bc7583875abcc0c274c668_cgraph.dot new file mode 100644 index 0000000..d7c52e5 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_a3cd42cea99bc7583875abcc0c274c668_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolFloodFill::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_a7438ef96c6c36068bce76e2364e8594c_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_a7438ef96c6c36068bce76e2364e8594c_cgraph.dot new file mode 100644 index 0000000..2196f01 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_a7438ef96c6c36068bce76e2364e8594c_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolFloodFill::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_a83b1bd8be0cbb32cdf61a9597ec849ba_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_a83b1bd8be0cbb32cdf61a9597ec849ba_cgraph.dot new file mode 100644 index 0000000..ec5fca4 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_a83b1bd8be0cbb32cdf61a9597ec849ba_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolFloodFill::~IntelliToolFloodFill" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::~IntelliToolFloodFill",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_ac85e3cb6233508ff9612833a8d9e3961_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_ac85e3cb6233508ff9612833a8d9e3961_cgraph.dot new file mode 100644 index 0000000..6b637f9 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_ac85e3cb6233508ff9612833a8d9e3961_cgraph.dot @@ -0,0 +1,19 @@ +digraph "IntelliToolFloodFill::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Sets the point to flood fill around and does t..."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::drawPixel",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#af3c859f5c409e37051edfd9e9fbca056",tooltip="A funtcion used to draw a pixel on the Image with the given Color."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliImage::getPixelColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a4576ebb6d863321c816293d7b7f9fd3f",tooltip="A function that returns the pixelcolor at a certain point."]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node6 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_ad58cc7c065123beb6b0270f99e99b991_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_ad58cc7c065123beb6b0270f99e99b991_cgraph.dot new file mode 100644 index 0000000..fdd94f9 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_ad58cc7c065123beb6b0270f99e99b991_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolFloodFill::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; +} diff --git a/docs-src/html/class_intelli_tool_flood_fill_ada0f7154d119102410a55038763a17e4_cgraph.dot b/docs-src/html/class_intelli_tool_flood_fill_ada0f7154d119102410a55038763a17e4_cgraph.dot new file mode 100644 index 0000000..7105699 --- /dev/null +++ b/docs-src/html/class_intelli_tool_flood_fill_ada0f7154d119102410a55038763a17e4_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolFloodFill::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolFloodFill\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse. Clearing the canvas."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_gradient-members.html b/docs-src/html/class_intelli_tool_gradient-members.html new file mode 100644 index 0000000..ea13741 --- /dev/null +++ b/docs-src/html/class_intelli_tool_gradient-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolGradient Member List
+
+
+ +

This is the complete list of members for IntelliToolGradient, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolGradient(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolGradient
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolGradientvirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolGradientvirtual
onMouseMoved(int x, int y) overrideIntelliToolGradientvirtual
onMouseRightPressed(int x, int y) overrideIntelliToolGradientvirtual
onMouseRightReleased(int x, int y) overrideIntelliToolGradientvirtual
onWheelScrolled(int value) overrideIntelliToolGradientvirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolGradient() overrideIntelliToolGradientvirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_gradient.html b/docs-src/html/class_intelli_tool_gradient.html new file mode 100644 index 0000000..f11b2e9 --- /dev/null +++ b/docs-src/html/class_intelli_tool_gradient.html @@ -0,0 +1,569 @@ + + + + + + + +IntelliPhoto: IntelliToolGradient Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolGradient Class Reference
+
+
+ +

The IntelliToolGradient class that represents a gradient call. + More...

+ +

#include <IntelliToolGradient.h>

+
+Inheritance diagram for IntelliToolGradient:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolGradient (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 IntelliToolGradient basic constructor of the gradient tool. More...
 
virtual ~IntelliToolGradient () override
 ~IntelliToolGradient basic destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on. Call this in child classes! More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click Released of a Mouse. Merging the Canvas to Active. Call this in child classes! More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click Pressed of a Mouse. Resetting the current draw. Call this in child classes! More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click Released of a Mouse. Call this in child classes! More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. A positive value means scrolling outwards. Call this in child classes! More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. Call this in child classes! More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolGradient class that represents a gradient call.

+ +

Definition at line 7 of file IntelliToolGradient.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolGradient()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolGradient::IntelliToolGradient (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

IntelliToolGradient basic constructor of the gradient tool.

+
Parameters
+ + + + +
Area- a reference to the paintingArea
colorPicker- a reference to the colorpicker
Toolsettings- a regerence to the Toolsettings
+
+
+ +

Definition at line 6 of file IntelliToolGradient.cpp.

+ +
+
+ +

◆ ~IntelliToolGradient()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolGradient::~IntelliToolGradient ()
+
+overridevirtual
+
+ +

~IntelliToolGradient basic destructor.

+ +

Definition at line 13 of file IntelliToolGradient.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolGradient::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click Pressed of a Mouse. Resetting the current draw. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 17 of file IntelliToolGradient.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolGradient::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click Released of a Mouse. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 32 of file IntelliToolGradient.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolGradient::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 43 of file IntelliToolGradient.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolGradient::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 28 of file IntelliToolGradient.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolGradient::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click Released of a Mouse. Merging the Canvas to Active. Call this in child classes!

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 39 of file IntelliToolGradient.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolGradient::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event. A positive value means scrolling outwards. Call this in child classes!

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 54 of file IntelliToolGradient.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_gradient.js b/docs-src/html/class_intelli_tool_gradient.js new file mode 100644 index 0000000..12afbda --- /dev/null +++ b/docs-src/html/class_intelli_tool_gradient.js @@ -0,0 +1,11 @@ +var class_intelli_tool_gradient = +[ + [ "IntelliToolGradient", "class_intelli_tool_gradient.html#ad29617596a4dcf09aa8bcc633d627203", null ], + [ "~IntelliToolGradient", "class_intelli_tool_gradient.html#a7d5c812815872b7e394e36362358b539", null ], + [ "onMouseLeftPressed", "class_intelli_tool_gradient.html#a47700908dab413203d06d64175a12cc1", null ], + [ "onMouseLeftReleased", "class_intelli_tool_gradient.html#a6bbe09b64d8cd69e5ff64a3344725b11", null ], + [ "onMouseMoved", "class_intelli_tool_gradient.html#aff3ccbecb7a33514765fdb44c7ce9e4e", null ], + [ "onMouseRightPressed", "class_intelli_tool_gradient.html#aed5ad1f718d53034d944ff8f1e8f9f36", null ], + [ "onMouseRightReleased", "class_intelli_tool_gradient.html#a04315a520c97541d76e7723a07e0a834", null ], + [ "onWheelScrolled", "class_intelli_tool_gradient.html#a11f77ac474b697ebb6bc185560437f6a", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_gradient.png b/docs-src/html/class_intelli_tool_gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..133331028bcc2a88a0b468b09d4383943f6318aa GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^g+Ls@!3-oN1F}FIi2$Dv*Z=?j1DOvWJxWebp8#Zm z@qq&eKC1}X0l6F{L4LsuKt&*M^;C!v0|R4_r;B4q1>@VfH}eiF2)Oc#YySU#(s$2> zij{#@vf*c4WKOf$92XCmchWLF{KTXu9ulf2XW3`?94`;{{_G!gd)xU*x4tnyj;v&U ztbOKll%8s`=6)94#gj^oP1q=56>EC!o!LGWS%YaG-5%Ej%rTaG^VmKrbopj2&t)xv zlh$x9R*5X`HhezEma(Fny+QlkvEzrMU*^?t&7J!1Sii;UL>2?}9)@czf(K?9FhvNv zF=QX&Nbr?lT*Ik+KvHw*6E4mJ6M+)Ni#K-d-o0{dJ5R=~FEtn9@3YJbbD4h3H{Cpc z8`GCLHAk=g;4-fLTBIp?`ip9S^{sWGl5xkcb#8rfEP`k5Iw@&?<1IDb*Y8h%srFs+ zzTvb3_owbOJI9`6kbL*T*R`=T7xu9Ku1K_r{u21u<5+5B`LVNhaZ<<6zpB|?dt?69 qAoG9WjCGAbXM9#XHYMoO6Yd>e5*PK1KAi%FID@CFpUXO@geCw)7{x{a literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_tool_line-members.html b/docs-src/html/class_intelli_tool_line-members.html new file mode 100644 index 0000000..d845c20 --- /dev/null +++ b/docs-src/html/class_intelli_tool_line-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolLine Member List
+
+
+ +

This is the complete list of members for IntelliToolLine, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolLine(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolLine
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolLinevirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolLinevirtual
onMouseMoved(int x, int y) overrideIntelliToolLinevirtual
onMouseRightPressed(int x, int y) overrideIntelliToolLinevirtual
onMouseRightReleased(int x, int y) overrideIntelliToolLinevirtual
onWheelScrolled(int value) overrideIntelliToolLinevirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolLine() overrideIntelliToolLinevirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_line.html b/docs-src/html/class_intelli_tool_line.html new file mode 100644 index 0000000..f906afe --- /dev/null +++ b/docs-src/html/class_intelli_tool_line.html @@ -0,0 +1,568 @@ + + + + + + + +IntelliPhoto: IntelliToolLine Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolLine Class Reference
+
+
+ +

The IntelliToolFloodFill class represents a tool to draw a line. + More...

+ +

#include <IntelliToolLine.h>

+
+Inheritance diagram for IntelliToolLine:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolLine (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general paintingArea and colorPicker. More...
 
virtual ~IntelliToolLine () override
 An abstract Destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse. Clearing the canvas. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Sets the starting point of the line. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. Changing the lineWidth relative to value. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse position. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolFloodFill class represents a tool to draw a line.

+ +

Definition at line 13 of file IntelliToolLine.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolLine()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolLine::IntelliToolLine (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general paintingArea and colorPicker.

+
Parameters
+ + + +
Area- The general paintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 6 of file IntelliToolLine.cpp.

+ +
+
+ +

◆ ~IntelliToolLine()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolLine::~IntelliToolLine ()
+
+overridevirtual
+
+ +

An abstract Destructor.

+ +

Definition at line 11 of file IntelliToolLine.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolLine::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Sets the starting point of the line.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 23 of file IntelliToolLine.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolLine::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 30 of file IntelliToolLine.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolLine::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse position.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 39 of file IntelliToolLine.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolLine::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse. Clearing the canvas.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 15 of file IntelliToolLine.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolLine::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 19 of file IntelliToolLine.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolLine::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event. Changing the lineWidth relative to value.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 34 of file IntelliToolLine.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_line.js b/docs-src/html/class_intelli_tool_line.js new file mode 100644 index 0000000..08808b7 --- /dev/null +++ b/docs-src/html/class_intelli_tool_line.js @@ -0,0 +1,11 @@ +var class_intelli_tool_line = +[ + [ "IntelliToolLine", "class_intelli_tool_line.html#a111e83e0f0fec7d4ff773ba9f235e4dc", null ], + [ "~IntelliToolLine", "class_intelli_tool_line.html#acb600b0f4e9225ebce2937c2b7abb4c2", null ], + [ "onMouseLeftPressed", "class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846", null ], + [ "onMouseLeftReleased", "class_intelli_tool_line.html#ac93f76ff20a1c111a403b298bab02482", null ], + [ "onMouseMoved", "class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b", null ], + [ "onMouseRightPressed", "class_intelli_tool_line.html#a6cce59f3017936214b10b47252a898a3", null ], + [ "onMouseRightReleased", "class_intelli_tool_line.html#a6214918cba5753f89d97de4559a2b9b2", null ], + [ "onWheelScrolled", "class_intelli_tool_line.html#aaf1d686e1ec43f41b5186ccfd806b125", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_line.png b/docs-src/html/class_intelli_tool_line.png new file mode 100644 index 0000000000000000000000000000000000000000..5349288fcf216fd6dc66475fb9e730d82d9a2f03 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^kw6^4!3-o_Z)t`CDTx4|5ZC|z{{xv1A3aJ=PoDr} zf$@O@2R^F^*#Ws6B|(0{3_wL7aP?G(5d#CGpr?ytNCo5DyS#aa40zfeUf*`*x4dM= zt|Kq+tdyPc_r!^K%@!L|PrinkkzNL&S6in1Y2I|CJlnH+<*N06pTGVjSnOD5QojG2 z_xqj3(T{6GLYG@j*=@4XSuXzf{^C{7%}?YWo>awm?Wg$qW8LT5R=v8cxicm7s>aGq zGb7y?{L&dcJZJ6Ei7c5_(?0oy%}@V%y^|UPRj2a^EPXPGanY0*BZn#f^}9QkurPXf zoXnqgoO#*qt#)S81y|jkOJ0An_+*|)g1o-{tmyOK%U;@+S7zVo_bdLb|E*}cTG@$n z#m>8TKKA~9NBzmmx7<5(Z@fjZsTwLK cc=81A96#YTO?JAgfC0wf>FVdQ&MBb@02~Ui3jhEB literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_tool_line__coll__graph.dot b/docs-src/html/class_intelli_tool_line__coll__graph.dot new file mode 100644 index 0000000..9b3338a --- /dev/null +++ b/docs-src/html/class_intelli_tool_line__coll__graph.dot @@ -0,0 +1,23 @@ +digraph "IntelliToolLine" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolLine",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolFloodFill class represents a tool to draw a line."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_line__inherit__graph.dot b/docs-src/html/class_intelli_tool_line__inherit__graph.dot new file mode 100644 index 0000000..9c7435d --- /dev/null +++ b/docs-src/html/class_intelli_tool_line__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolLine" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolLine",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolFloodFill class represents a tool to draw a line."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_line_a155d676a5f98311217eb095be4759846_cgraph.dot b/docs-src/html/class_intelli_tool_line_a155d676a5f98311217eb095be4759846_cgraph.dot new file mode 100644 index 0000000..68183ee --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_a155d676a5f98311217eb095be4759846_cgraph.dot @@ -0,0 +1,19 @@ +digraph "IntelliToolLine::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::onMouse\lLeftPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Sets the starting point of the line."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::drawPoint",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a2e787f1b333b59401643936ebb3dcfe1",tooltip="A."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node6 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/class_intelli_tool_line_a6214918cba5753f89d97de4559a2b9b2_cgraph.dot b/docs-src/html/class_intelli_tool_line_a6214918cba5753f89d97de4559a2b9b2_cgraph.dot new file mode 100644 index 0000000..e5ef946 --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_a6214918cba5753f89d97de4559a2b9b2_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolLine::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::onMouse\lRightReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_line_a6cce59f3017936214b10b47252a898a3_cgraph.dot b/docs-src/html/class_intelli_tool_line_a6cce59f3017936214b10b47252a898a3_cgraph.dot new file mode 100644 index 0000000..15f12e5 --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_a6cce59f3017936214b10b47252a898a3_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolLine::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::onMouse\lRightPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse. Clearing the canvas."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_line_aaf1d686e1ec43f41b5186ccfd806b125_cgraph.dot b/docs-src/html/class_intelli_tool_line_aaf1d686e1ec43f41b5186ccfd806b125_cgraph.dot new file mode 100644 index 0000000..b42b674 --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_aaf1d686e1ec43f41b5186ccfd806b125_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolLine::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::onWheel\lScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event. Changing the lineWidth relative to value."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolsettings\l::setLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a906d37de6ee94b433d53fe3e598cc9fa",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_tool_line_abc6324ef0778823fe7e35aef8ae37f9b_cgraph.dot b/docs-src/html/class_intelli_tool_line_abc6324ef0778823fe7e35aef8ae37f9b_cgraph.dot new file mode 100644 index 0000000..00952dc --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_abc6324ef0778823fe7e35aef8ae37f9b_cgraph.dot @@ -0,0 +1,22 @@ +digraph "IntelliToolLine::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::drawLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31",tooltip="A function that draws A Line between two given Points in a given color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::drawPlain",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a6be622810dc2bc756054bb5769becb06",tooltip="A function that clears the whole image in a given Color."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolsettings\l::getLinestyle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a5beb193b25e0665516244c61c5e65aa6",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_line_ac93f76ff20a1c111a403b298bab02482_cgraph.dot b/docs-src/html/class_intelli_tool_line_ac93f76ff20a1c111a403b298bab02482_cgraph.dot new file mode 100644 index 0000000..c49cf1c --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_ac93f76ff20a1c111a403b298bab02482_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolLine::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::onMouse\lLeftReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_line_acb600b0f4e9225ebce2937c2b7abb4c2_cgraph.dot b/docs-src/html/class_intelli_tool_line_acb600b0f4e9225ebce2937c2b7abb4c2_cgraph.dot new file mode 100644 index 0000000..e06bd53 --- /dev/null +++ b/docs-src/html/class_intelli_tool_line_acb600b0f4e9225ebce2937c2b7abb4c2_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolLine::~IntelliToolLine" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolLine::~Intelli\lToolLine",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="An abstract Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_pen-members.html b/docs-src/html/class_intelli_tool_pen-members.html new file mode 100644 index 0000000..b1968b8 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPen Member List
+
+
+ +

This is the complete list of members for IntelliToolPen, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolPen(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolPen
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolPenvirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolPenvirtual
onMouseMoved(int x, int y) overrideIntelliToolPenvirtual
onMouseRightPressed(int x, int y) overrideIntelliToolPenvirtual
onMouseRightReleased(int x, int y) overrideIntelliToolPenvirtual
onWheelScrolled(int value) overrideIntelliToolPenvirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolPen() overrideIntelliToolPenvirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_pen.html b/docs-src/html/class_intelli_tool_pen.html new file mode 100644 index 0000000..8c00c2d --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen.html @@ -0,0 +1,568 @@ + + + + + + + +IntelliPhoto: IntelliToolPen Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolPen Class Reference
+
+
+ +

The IntelliToolPen class represents a tool to draw a line. + More...

+ +

#include <IntelliToolPen.h>

+
+Inheritance diagram for IntelliToolPen:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolPen (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general paintingArea and colorPicker. Reading the penWidth. More...
 
virtual ~IntelliToolPen () override
 A Destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse. Resetting the current draw. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Starting the drawing procedure. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. Merging the drawing to the active layer. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. Changing penWidth relativ to value. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. To draw the line. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolPen class represents a tool to draw a line.

+ +

Definition at line 14 of file IntelliToolPen.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolPen()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolPen::IntelliToolPen (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general paintingArea and colorPicker. Reading the penWidth.

+
Parameters
+ + + +
Area- The general PaintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 7 of file IntelliToolPen.cpp.

+ +
+
+ +

◆ ~IntelliToolPen()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolPen::~IntelliToolPen ()
+
+overridevirtual
+
+ +

A Destructor.

+ +

Definition at line 12 of file IntelliToolPen.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPen::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Starting the drawing procedure.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 24 of file IntelliToolPen.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPen::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse. Merging the drawing to the active layer.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 31 of file IntelliToolPen.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPen::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event. To draw the line.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 35 of file IntelliToolPen.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPen::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse. Resetting the current draw.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 16 of file IntelliToolPen.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPen::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 20 of file IntelliToolPen.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolPen::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event. Changing penWidth relativ to value.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 44 of file IntelliToolPen.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_pen.js b/docs-src/html/class_intelli_tool_pen.js new file mode 100644 index 0000000..19b29f0 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen.js @@ -0,0 +1,11 @@ +var class_intelli_tool_pen = +[ + [ "IntelliToolPen", "class_intelli_tool_pen.html#a9f885143d6bb7adda3dcd3707d59e14d", null ], + [ "~IntelliToolPen", "class_intelli_tool_pen.html#ac77a025515d0fed6954556fe2b444818", null ], + [ "onMouseLeftPressed", "class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205", null ], + [ "onMouseLeftReleased", "class_intelli_tool_pen.html#abda7a22b9766fa4ad254324a53cab94d", null ], + [ "onMouseMoved", "class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2", null ], + [ "onMouseRightPressed", "class_intelli_tool_pen.html#a1751e3864a0d36ef42ca55021cae73ce", null ], + [ "onMouseRightReleased", "class_intelli_tool_pen.html#abf8562e8cd2da586afdf4d47b3a4ff13", null ], + [ "onWheelScrolled", "class_intelli_tool_pen.html#afe3626ddff440ab125f4a2465c45427a", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_pen.png b/docs-src/html/class_intelli_tool_pen.png new file mode 100644 index 0000000000000000000000000000000000000000..f8afc009adad8bcaf7d3231393a102747ae025ed GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^;XoX~!3-p$g(aT>DTx4|5ZC|z{{xv1A3aJ=PoDr} zf$@O@2R^F^*#Ws6B|(0{3_wL7aP?G(5d#AwyQhm|NCo5DyASyeDe$m7$e#V?uY9EW zf`HUhN~%)X8s`?p=k@%MR#M_)O-!2?_i$bL%KB0sFa5N<ueVrBC+PvKD+l?k%zw6t7QZ+xlet(JlvU%)j&-}IT6o~IsQu@rz;FitI z&|Xxu{VaP~(fc*rZ=U|UQ^{c-!%*5HowtJ_0jTi*F;%4^4FLw9^*}vS&BKpt^h-Dx ze_QHTeWNzRZf)7aYj>MvB|j~x{CeCncK57hmo9!e7J7Wa)m)R^Ay!}6a_^nayBELv z!y(`M@~5N!al6G-%iY`kHTRsI$-Ccs#LqXswAsmEu<;OY`9yCQll^(meh51^e*NwY P3?>FoS3j3^P6 Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_pen__inherit__graph.dot b/docs-src/html/class_intelli_tool_pen__inherit__graph.dot new file mode 100644 index 0000000..406b281 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolPen" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolPen",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolPen class represents a tool to draw a line."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_pen_a1751e3864a0d36ef42ca55021cae73ce_cgraph.dot b/docs-src/html/class_intelli_tool_pen_a1751e3864a0d36ef42ca55021cae73ce_cgraph.dot new file mode 100644 index 0000000..693f9a8 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_a1751e3864a0d36ef42ca55021cae73ce_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPen::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse. Resetting the current draw."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_pen_a58d1d636497b630647ce0c4d652737c2_cgraph.dot b/docs-src/html/class_intelli_tool_pen_a58d1d636497b630647ce0c4d652737c2_cgraph.dot new file mode 100644 index 0000000..91f55e9 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_a58d1d636497b630647ce0c4d652737c2_cgraph.dot @@ -0,0 +1,18 @@ +digraph "IntelliToolPen::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event. To draw the line."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::drawLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31",tooltip="A function that draws A Line between two given Points in a given color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_pen_a8ff40aef6d38eb55af31a19322429205_cgraph.dot b/docs-src/html/class_intelli_tool_pen_a8ff40aef6d38eb55af31a19322429205_cgraph.dot new file mode 100644 index 0000000..cd8772b --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_a8ff40aef6d38eb55af31a19322429205_cgraph.dot @@ -0,0 +1,19 @@ +digraph "IntelliToolPen::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Starting the drawing procedure."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::drawPoint",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a2e787f1b333b59401643936ebb3dcfe1",tooltip="A."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node6 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/class_intelli_tool_pen_abda7a22b9766fa4ad254324a53cab94d_cgraph.dot b/docs-src/html/class_intelli_tool_pen_abda7a22b9766fa4ad254324a53cab94d_cgraph.dot new file mode 100644 index 0000000..6b84745 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_abda7a22b9766fa4ad254324a53cab94d_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolPen::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse. Merging the drawing to the active layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_pen_abf8562e8cd2da586afdf4d47b3a4ff13_cgraph.dot b/docs-src/html/class_intelli_tool_pen_abf8562e8cd2da586afdf4d47b3a4ff13_cgraph.dot new file mode 100644 index 0000000..a3e01c7 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_abf8562e8cd2da586afdf4d47b3a4ff13_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPen::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_pen_ac77a025515d0fed6954556fe2b444818_cgraph.dot b/docs-src/html/class_intelli_tool_pen_ac77a025515d0fed6954556fe2b444818_cgraph.dot new file mode 100644 index 0000000..56f030a --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_ac77a025515d0fed6954556fe2b444818_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPen::~IntelliToolPen" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::~Intelli\lToolPen",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_pen_afe3626ddff440ab125f4a2465c45427a_cgraph.dot b/docs-src/html/class_intelli_tool_pen_afe3626ddff440ab125f4a2465c45427a_cgraph.dot new file mode 100644 index 0000000..70fa525 --- /dev/null +++ b/docs-src/html/class_intelli_tool_pen_afe3626ddff440ab125f4a2465c45427a_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolPen::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPen::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event. Changing penWidth relativ to value."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolsettings\l::setLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a906d37de6ee94b433d53fe3e598cc9fa",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool-members.html b/docs-src/html/class_intelli_tool_plain_tool-members.html new file mode 100644 index 0000000..f717e35 --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPlainTool Member List
+
+
+ +

This is the complete list of members for IntelliToolPlainTool, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolPlainTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolPlainTool
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolPlainToolvirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolPlainToolvirtual
onMouseMoved(int x, int y) overrideIntelliToolPlainToolvirtual
onMouseRightPressed(int x, int y) overrideIntelliToolPlainToolvirtual
onMouseRightReleased(int x, int y) overrideIntelliToolPlainToolvirtual
onWheelScrolled(int value) overrideIntelliToolPlainToolvirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolPlainTool() overrideIntelliToolPlainToolvirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_plain_tool.html b/docs-src/html/class_intelli_tool_plain_tool.html new file mode 100644 index 0000000..835f762 --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool.html @@ -0,0 +1,568 @@ + + + + + + + +IntelliPhoto: IntelliToolPlainTool Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolPlainTool Class Reference
+
+
+ +

The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color. + More...

+ +

#include <IntelliToolPlain.h>

+
+Inheritance diagram for IntelliToolPlainTool:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolPlainTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general paintingArea and colorPicker. More...
 
virtual ~IntelliToolPlainTool () override
 A Destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse. Resetting the current fill. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Filling the whole canvas. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. Merging the fill to the active layer. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color.

+ +

Definition at line 13 of file IntelliToolPlain.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolPlainTool()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolPlainTool::IntelliToolPlainTool (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general paintingArea and colorPicker.

+
Parameters
+ + + +
Area- The general paintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 5 of file IntelliToolPlain.cpp.

+ +
+
+ +

◆ ~IntelliToolPlainTool()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolPlainTool::~IntelliToolPlainTool ()
+
+overridevirtual
+
+ +

A Destructor.

+ +

Definition at line 10 of file IntelliToolPlain.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPlainTool::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Filling the whole canvas.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 14 of file IntelliToolPlain.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPlainTool::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse. Merging the fill to the active layer.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 20 of file IntelliToolPlain.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPlainTool::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 32 of file IntelliToolPlain.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPlainTool::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse. Resetting the current fill.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 24 of file IntelliToolPlain.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPlainTool::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 28 of file IntelliToolPlain.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolPlainTool::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 36 of file IntelliToolPlain.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_plain_tool.js b/docs-src/html/class_intelli_tool_plain_tool.js new file mode 100644 index 0000000..4fd627b --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool.js @@ -0,0 +1,11 @@ +var class_intelli_tool_plain_tool = +[ + [ "IntelliToolPlainTool", "class_intelli_tool_plain_tool.html#a816bcd6aea046994420969bed8b139d2", null ], + [ "~IntelliToolPlainTool", "class_intelli_tool_plain_tool.html#a91fe568be05c075814d67440472bb658", null ], + [ "onMouseLeftPressed", "class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9", null ], + [ "onMouseLeftReleased", "class_intelli_tool_plain_tool.html#ac23f5d0f07e42fd7c2ea3fc1347da400", null ], + [ "onMouseMoved", "class_intelli_tool_plain_tool.html#ad7546a6335bb3bb4cbf0e1883788d41c", null ], + [ "onMouseRightPressed", "class_intelli_tool_plain_tool.html#acb0c46e16d2c09370a2244a936de38b1", null ], + [ "onMouseRightReleased", "class_intelli_tool_plain_tool.html#a2ae458f1b04eb77a47f6dca5e91e33b8", null ], + [ "onWheelScrolled", "class_intelli_tool_plain_tool.html#adc004ea421e2cc0ac39cc7a6b6d43d0d", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_plain_tool.png b/docs-src/html/class_intelli_tool_plain_tool.png new file mode 100644 index 0000000000000000000000000000000000000000..709271d725c8a15c4188f938091db053ceb41b56 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^r9d3O!3-n?cAw$~QW60^A+G=b{|7Q3K6;d#o<0G{ z0^&1DL$L`>+Z~!pOdEazpeMw`Z4jV$Hxh! zI7BJ?c<#k@-%Dh+_lA@OIB?_ zq3vFiRPU}aJa$8>VKxuL*_TPOZF0Btu1(+4ysiIh{MQZ9j6Q|h4XSyp8;-1Hn6^Xo zfY5fPh(}=z-gme@*ebSMkYRF2zQdK^nf_W!|J|~Wc{U2t$r+LBROFw_iDT_grk#lCgQu&X%Q~loCIEJI!(#vd literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_tool_plain_tool__coll__graph.dot b/docs-src/html/class_intelli_tool_plain_tool__coll__graph.dot new file mode 100644 index 0000000..73f54e2 --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool__coll__graph.dot @@ -0,0 +1,23 @@ +digraph "IntelliToolPlainTool" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolPlainTool",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool__inherit__graph.dot b/docs-src/html/class_intelli_tool_plain_tool__inherit__graph.dot new file mode 100644 index 0000000..962d72e --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolPlainTool" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolPlainTool",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_a2ae458f1b04eb77a47f6dca5e91e33b8_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_a2ae458f1b04eb77a47f6dca5e91e33b8_cgraph.dot new file mode 100644 index 0000000..ed1530c --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_a2ae458f1b04eb77a47f6dca5e91e33b8_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPlainTool::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_a91fe568be05c075814d67440472bb658_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_a91fe568be05c075814d67440472bb658_cgraph.dot new file mode 100644 index 0000000..3f08fe6 --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_a91fe568be05c075814d67440472bb658_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPlainTool::~IntelliToolPlainTool" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::~IntelliToolPlainTool",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_ab786dd5fa80af863246013d43c4b7ac9_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_ab786dd5fa80af863246013d43c4b7ac9_cgraph.dot new file mode 100644 index 0000000..11c6f8c --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_ab786dd5fa80af863246013d43c4b7ac9_cgraph.dot @@ -0,0 +1,17 @@ +digraph "IntelliToolPlainTool::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Filling the whole canvas."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::drawPlain",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a6be622810dc2bc756054bb5769becb06",tooltip="A function that clears the whole image in a given Color."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node5 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_ac23f5d0f07e42fd7c2ea3fc1347da400_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_ac23f5d0f07e42fd7c2ea3fc1347da400_cgraph.dot new file mode 100644 index 0000000..4e3de1f --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_ac23f5d0f07e42fd7c2ea3fc1347da400_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolPlainTool::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_acb0c46e16d2c09370a2244a936de38b1_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_acb0c46e16d2c09370a2244a936de38b1_cgraph.dot new file mode 100644 index 0000000..92d51ca --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_acb0c46e16d2c09370a2244a936de38b1_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPlainTool::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse. Resetting the current fill."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_ad7546a6335bb3bb4cbf0e1883788d41c_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_ad7546a6335bb3bb4cbf0e1883788d41c_cgraph.dot new file mode 100644 index 0000000..fff8436 --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_ad7546a6335bb3bb4cbf0e1883788d41c_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolPlainTool::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_plain_tool_adc004ea421e2cc0ac39cc7a6b6d43d0d_cgraph.dot b/docs-src/html/class_intelli_tool_plain_tool_adc004ea421e2cc0ac39cc7a6b6d43d0d_cgraph.dot new file mode 100644 index 0000000..4352f5d --- /dev/null +++ b/docs-src/html/class_intelli_tool_plain_tool_adc004ea421e2cc0ac39cc7a6b6d43d0d_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPlainTool::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPlainTool\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon-members.html b/docs-src/html/class_intelli_tool_polygon-members.html new file mode 100644 index 0000000..602fe5e --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolPolygon Member List
+
+
+ +

This is the complete list of members for IntelliToolPolygon, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolPolygon(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings, bool isSettingPolygon=false)IntelliToolPolygon
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolPolygonvirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolPolygonvirtual
onMouseMoved(int x, int y) overrideIntelliToolPolygonvirtual
onMouseRightPressed(int x, int y) overrideIntelliToolPolygonvirtual
onMouseRightReleased(int x, int y) overrideIntelliToolPolygonvirtual
onWheelScrolled(int value) overrideIntelliToolPolygonvirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolPolygon() overrideIntelliToolPolygon
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_polygon.html b/docs-src/html/class_intelli_tool_polygon.html new file mode 100644 index 0000000..19171a8 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon.html @@ -0,0 +1,575 @@ + + + + + + + +IntelliPhoto: IntelliToolPolygon Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolPolygon Class Reference
+
+
+ +

The IntelliToolPolygon managed the Drawing of Polygonforms. + More...

+ +

#include <IntelliToolPolygon.h>

+
+Inheritance diagram for IntelliToolPolygon:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolPolygon (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings, bool isSettingPolygon=false)
 A constructor setting the general paintingArea and colorPicker. More...
 
 ~IntelliToolPolygon () override
 A Destructor. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Setting polygon points. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. Merging the fill to the active layer. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse. Resetting the current fill. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event. CHanging the lineWidth relative to value. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolPolygon managed the Drawing of Polygonforms.

+ +

Definition at line 15 of file IntelliToolPolygon.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolPolygon()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolPolygon::IntelliToolPolygon (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings,
bool isSettingPolygon = false 
)
+
+ +

A constructor setting the general paintingArea and colorPicker.

+
Parameters
+ + + + +
Area- The general paintingArea used by the project.
colorPicker- The general colorPicker used by the project.
isSettingPolygon- The flag for the set polygon method, standart is false
+
+
+ +

Definition at line 8 of file IntelliToolPolygon.cpp.

+ +
+
+ +

◆ ~IntelliToolPolygon()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolPolygon::~IntelliToolPolygon ()
+
+override
+
+ +

A Destructor.

+ +

Definition at line 20 of file IntelliToolPolygon.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPolygon::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Setting polygon points.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 26 of file IntelliToolPolygon.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPolygon::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse. Merging the fill to the active layer.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 91 of file IntelliToolPolygon.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPolygon::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 137 of file IntelliToolPolygon.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPolygon::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse. Resetting the current fill.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 83 of file IntelliToolPolygon.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolPolygon::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 124 of file IntelliToolPolygon.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolPolygon::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event. CHanging the lineWidth relative to value.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 128 of file IntelliToolPolygon.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_polygon.js b/docs-src/html/class_intelli_tool_polygon.js new file mode 100644 index 0000000..871a8f0 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon.js @@ -0,0 +1,11 @@ +var class_intelli_tool_polygon = +[ + [ "IntelliToolPolygon", "class_intelli_tool_polygon.html#a63b8c7514a87d4608533fbb557ee0db5", null ], + [ "~IntelliToolPolygon", "class_intelli_tool_polygon.html#a087cbf2254010989df6106a357471499", null ], + [ "onMouseLeftPressed", "class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d", null ], + [ "onMouseLeftReleased", "class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21", null ], + [ "onMouseMoved", "class_intelli_tool_polygon.html#a0e3a1135f04c73c159137ae219a38922", null ], + [ "onMouseRightPressed", "class_intelli_tool_polygon.html#aa36b012b48311c36e7cd6771a5081427", null ], + [ "onMouseRightReleased", "class_intelli_tool_polygon.html#a47cad87cd02b128b02dc929713bd1d1b", null ], + [ "onWheelScrolled", "class_intelli_tool_polygon.html#a713103300c9f023d64d9eec5ac05dd17", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_polygon.png b/docs-src/html/class_intelli_tool_polygon.png new file mode 100644 index 0000000000000000000000000000000000000000..0a69102bf14a83ff77ac52772ba9839111a2b26a GIT binary patch literal 456 zcmV;(0XP1MP)B;Nm#2Q(xxEvR&sJ26kW&^oIxZY=mqt+fV1m83AzCrN(%HDB4j zx{tE_Nt(y=y`*Uz_q|H~Yu~Mq>)fYaUr*kO?5mRWf<3;T-^hk$&V9!wbmL3z!5G0fdu<5msnx2@2U$GM*F_LKhp=` zNcsT$NFRV7=>za1eE@!>55SM~0r-(VfDKA1B@hZg80iD><22vUnydSGv=%Up+ma3M z*!m9Nt5lEGttSCCnSHlH?t5-iudkOY5SIkxb0000 Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon__inherit__graph.dot b/docs-src/html/class_intelli_tool_polygon__inherit__graph.dot new file mode 100644 index 0000000..1dc9f96 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolPolygon managed the Drawing of Polygonforms."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_a087cbf2254010989df6106a357471499_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_a087cbf2254010989df6106a357471499_cgraph.dot new file mode 100644 index 0000000..04ae44e --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_a087cbf2254010989df6106a357471499_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPolygon::~IntelliToolPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::~IntelliToolPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_a0e3a1135f04c73c159137ae219a38922_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_a0e3a1135f04c73c159137ae219a38922_cgraph.dot new file mode 100644 index 0000000..123d693 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_a0e3a1135f04c73c159137ae219a38922_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolPolygon::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_a47cad87cd02b128b02dc929713bd1d1b_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_a47cad87cd02b128b02dc929713bd1d1b_cgraph.dot new file mode 100644 index 0000000..f55be23 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_a47cad87cd02b128b02dc929713bd1d1b_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPolygon::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_a4e1473ff408ae2e11cf6a43f6f575f21_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_a4e1473ff408ae2e11cf6a43f6f575f21_cgraph.dot new file mode 100644 index 0000000..798ebb4 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_a4e1473ff408ae2e11cf6a43f6f575f21_cgraph.dot @@ -0,0 +1,32 @@ +digraph "IntelliToolPolygon::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::calculateTriangles",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#acdaf1ed598e868b25e9e06d580da32e5",tooltip="A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ..."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::drawLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31",tooltip="A function that draws A Line between two given Points in a given color."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliImage::drawPixel",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#af3c859f5c409e37051edfd9e9fbca056",tooltip="A funtcion used to draw a pixel on the Image with the given Color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolsettings\l::getInnerAlpha",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a7d6ce2054ec4bcba7629dc2b514b6b5c",tooltip=" "]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliColorPicker\l::getSecondColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#a55568fbf5dc783f06284b7031ffe9415",tooltip="A function to read the secondary selected color."]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliTriangulation\l::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#a00621e2d8708fe2e8966d7d79b64e186",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliTriangulation\l::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#ac150fee67fd41a451bd2592f10e00197",tooltip="A function to check if a given point is in a triangle."]; + Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliTriangulation\l::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#af9af549a7faff35a74c1265b290ea0ca",tooltip="A function to get the 2*area of a traingle, using its determinat."]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_a713103300c9f023d64d9eec5ac05dd17_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_a713103300c9f023d64d9eec5ac05dd17_cgraph.dot new file mode 100644 index 0000000..a022779 --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_a713103300c9f023d64d9eec5ac05dd17_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolPolygon::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event. CHanging the lineWidth relative to value."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolsettings\l::setLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a906d37de6ee94b433d53fe3e598cc9fa",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_aa36b012b48311c36e7cd6771a5081427_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_aa36b012b48311c36e7cd6771a5081427_cgraph.dot new file mode 100644 index 0000000..0639fba --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_aa36b012b48311c36e7cd6771a5081427_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolPolygon::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse. Resetting the current fill."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_polygon_ad5d3b741be6d0647a9cdc9da2cb8bc3d_cgraph.dot b/docs-src/html/class_intelli_tool_polygon_ad5d3b741be6d0647a9cdc9da2cb8bc3d_cgraph.dot new file mode 100644 index 0000000..2b521ba --- /dev/null +++ b/docs-src/html/class_intelli_tool_polygon_ad5d3b741be6d0647a9cdc9da2cb8bc3d_cgraph.dot @@ -0,0 +1,39 @@ +digraph "IntelliToolPolygon::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::calculateTriangles",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#acdaf1ed598e868b25e9e06d580da32e5",tooltip="A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ..."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliImage::drawLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31",tooltip="A function that draws A Line between two given Points in a given color."]; + Node1 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliImage::drawPoint",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a2e787f1b333b59401643936ebb3dcfe1",tooltip="A."]; + Node1 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="PaintingArea::getHeightOf\lActive",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#ac576f58aad03b4dcd47611b6a4b9abb4",tooltip="The getHeightOfActive gets the vertical dimensions of the active layer."]; + Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="PaintingArea::getPolygon\lDataOfRealLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a7ae21fd031ee1c04f92e042e86be0a90",tooltip=" "]; + Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="PaintingArea::getTypeOfImage\lRealLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#ae92b27dfd09573c224d2ae1958d3bead",tooltip=" "]; + Node1 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="PaintingArea::getWidthOf\lActive",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a675ee91b26b1c58be6d833f279d81597",tooltip="The getWidthOfActive gets the horizontal dimensions of the active layer."]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="IntelliTriangulation\l::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#a00621e2d8708fe2e8966d7d79b64e186",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="IntelliTriangulation\l::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#ac150fee67fd41a451bd2592f10e00197",tooltip="A function to check if a given point is in a triangle."]; + Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="IntelliTriangulation\l::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#af9af549a7faff35a74c1265b290ea0ca",tooltip="A function to get the 2*area of a traingle, using its determinat."]; + Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node15 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle-members.html b/docs-src/html/class_intelli_tool_rectangle-members.html new file mode 100644 index 0000000..0d19481 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle-members.html @@ -0,0 +1,123 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolRectangle Member List
+
+
+ +

This is the complete list of members for IntelliToolRectangle, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
activeLayerIntelliToolprotected
ActiveTypeIntelliToolprotected
AreaIntelliToolprotected
CanvasIntelliToolprotected
colorPickerIntelliToolprotected
getIsDrawing() constIntelliTool
getTooltype() constIntelliTool
IntelliTool(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliTool
IntelliToolRectangle(PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)IntelliToolRectangle
isDrawingIntelliToolprotected
onMouseLeftPressed(int x, int y) overrideIntelliToolRectanglevirtual
onMouseLeftReleased(int x, int y) overrideIntelliToolRectanglevirtual
onMouseMoved(int x, int y) overrideIntelliToolRectanglevirtual
onMouseRightPressed(int x, int y) overrideIntelliToolRectanglevirtual
onMouseRightReleased(int x, int y) overrideIntelliToolRectanglevirtual
onWheelScrolled(int value) overrideIntelliToolRectanglevirtual
ToolsettingsIntelliToolprotected
Tooltype enum nameIntelliTool
~IntelliTool()=0IntelliToolpure virtual
~IntelliToolRectangle() overrideIntelliToolRectanglevirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_rectangle.html b/docs-src/html/class_intelli_tool_rectangle.html new file mode 100644 index 0000000..1267b93 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle.html @@ -0,0 +1,568 @@ + + + + + + + +IntelliPhoto: IntelliToolRectangle Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolRectangle Class Reference
+
+
+ +

The IntelliToolRectangle class represents a tool to draw a rectangle. + More...

+ +

#include <IntelliToolRectangle.h>

+
+Inheritance diagram for IntelliToolRectangle:
+
+
+ + +IntelliTool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolRectangle (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general paintingArea and colorPicker. And reading in the alphaInner and edgeWidth. More...
 
virtual ~IntelliToolRectangle () override
 A Destructor. More...
 
virtual void onMouseRightPressed (int x, int y) override
 A function managing the right click pressed of a mouse.Resetting the current draw. More...
 
virtual void onMouseRightReleased (int x, int y) override
 A function managing the right click released of a mouse. More...
 
virtual void onMouseLeftPressed (int x, int y) override
 A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle. More...
 
virtual void onMouseLeftReleased (int x, int y) override
 A function managing the left click released of a mouse. Merging the draw to the active layer. More...
 
virtual void onWheelScrolled (int value) override
 A function managing the scroll event.Changing edgeWidth relativ to value. More...
 
virtual void onMouseMoved (int x, int y) override
 A function managing the mouse moved event.Drawing a rectangle to currrent mouse position. More...
 
- Public Member Functions inherited from IntelliTool
 IntelliTool (PaintingArea *Area, IntelliColorPicker *colorPicker, IntelliToolsettings *Toolsettings)
 A constructor setting the general Painting Area and colorPicker. More...
 
virtual ~IntelliTool ()=0
 An abstract Destructor. More...
 
Tooltype getTooltype () const
 getTooltype returns the tools type More...
 
bool getIsDrawing () const
 getIsDrawing returns if the tool is currently drawing More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from IntelliTool
enum  Tooltype {
+  Tooltype::CIRCLE, +Tooltype::FLOODFILL, +Tooltype::GRADIENT, +Tooltype::LINE, +
+  Tooltype::PEN, +Tooltype::PLAIN, +Tooltype::POLYGON, +Tooltype::RECTANGLE, +
+  Tooltype::NONE +
+ }
 The Tooltype enum categorising the toosl. More...
 
- Protected Attributes inherited from IntelliTool
PaintingAreaArea
 A pointer to the general PaintingArea to interact with. More...
 
Tooltype ActiveType
 ActiveType the type of the active tool. More...
 
IntelliColorPickercolorPicker
 A pointer to the IntelliColorPicker of the PaintingArea to interact with, and get the colors. More...
 
IntelliToolsettingsToolsettings
 Toolsettings a refrence to the tool settings. More...
 
LayerObjectactiveLayer
 A pointer to the underlying active Layer, do not work on this. This is used for data grabbing or previews. More...
 
LayerObjectCanvas
 A pointer to the drawing canvas of the tool, work on this. More...
 
bool isDrawing = false
 A flag checking if the user is currently drawing or not. More...
 
+

Detailed Description

+

The IntelliToolRectangle class represents a tool to draw a rectangle.

+ +

Definition at line 15 of file IntelliToolRectangle.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolRectangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
IntelliToolRectangle::IntelliToolRectangle (PaintingAreaArea,
IntelliColorPickercolorPicker,
IntelliToolsettingsToolsettings 
)
+
+ +

A constructor setting the general paintingArea and colorPicker. And reading in the alphaInner and edgeWidth.

+
Parameters
+ + + +
Area- The general paintingArea used by the project.
colorPicker- The general colorPicker used by the project.
+
+
+ +

Definition at line 5 of file IntelliToolRectangle.cpp.

+ +
+
+ +

◆ ~IntelliToolRectangle()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolRectangle::~IntelliToolRectangle ()
+
+overridevirtual
+
+ +

A Destructor.

+ +

Definition at line 10 of file IntelliToolRectangle.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ onMouseLeftPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolRectangle::onMouseLeftPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 40 of file IntelliToolRectangle.cpp.

+ +
+
+ +

◆ onMouseLeftReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolRectangle::onMouseLeftReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the left click released of a mouse. Merging the draw to the active layer.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 47 of file IntelliToolRectangle.cpp.

+ +
+
+ +

◆ onMouseMoved()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolRectangle::onMouseMoved (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the mouse moved event.Drawing a rectangle to currrent mouse position.

+
Parameters
+ + + +
x- The x coordinate of the new mouse position.
y- The y coordinate of the new mouse position.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 51 of file IntelliToolRectangle.cpp.

+ +
+
+ +

◆ onMouseRightPressed()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolRectangle::onMouseRightPressed (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click pressed of a mouse.Resetting the current draw.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 32 of file IntelliToolRectangle.cpp.

+ +
+
+ +

◆ onMouseRightReleased()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IntelliToolRectangle::onMouseRightReleased (int x,
int y 
)
+
+overridevirtual
+
+ +

A function managing the right click released of a mouse.

+
Parameters
+ + + +
x- The x coordinate relative to the active/canvas layer.
y- The y coordinate relative to the active/canvas layer.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 36 of file IntelliToolRectangle.cpp.

+ +
+
+ +

◆ onWheelScrolled()

+ +
+
+ + + + + +
+ + + + + + + + +
void IntelliToolRectangle::onWheelScrolled (int value)
+
+overridevirtual
+
+ +

A function managing the scroll event.Changing edgeWidth relativ to value.

+
Parameters
+ + +
value- The absolute the scroll has changed.
+
+
+ +

Reimplemented from IntelliTool.

+ +

Definition at line 60 of file IntelliToolRectangle.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_tool_rectangle.js b/docs-src/html/class_intelli_tool_rectangle.js new file mode 100644 index 0000000..70a65ee --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle.js @@ -0,0 +1,11 @@ +var class_intelli_tool_rectangle = +[ + [ "IntelliToolRectangle", "class_intelli_tool_rectangle.html#ada06457247d5b173888a9a520b31ec5c", null ], + [ "~IntelliToolRectangle", "class_intelli_tool_rectangle.html#a7dc1463e726a21255e6297241dc71fb1", null ], + [ "onMouseLeftPressed", "class_intelli_tool_rectangle.html#ae03c307ccf66cbe3fd59e3657712368d", null ], + [ "onMouseLeftReleased", "class_intelli_tool_rectangle.html#a94460e3ff1c19e80bde922c55f53cc43", null ], + [ "onMouseMoved", "class_intelli_tool_rectangle.html#a4b5931071e21eb6949ffe357315e408b", null ], + [ "onMouseRightPressed", "class_intelli_tool_rectangle.html#a480c6804a4963c5a1c3f7ef84b63c1a8", null ], + [ "onMouseRightReleased", "class_intelli_tool_rectangle.html#ad43f653256a6516b9398f82054be0d7f", null ], + [ "onWheelScrolled", "class_intelli_tool_rectangle.html#a445c53a56e859f970e59f5036e221e0c", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_tool_rectangle.png b/docs-src/html/class_intelli_tool_rectangle.png new file mode 100644 index 0000000000000000000000000000000000000000..3c00191d1b9c7e347b17f140e72ce7cd90ae72b2 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^l|UT8!3-q1+O=ANlth3}i0l9V|AEYhj~*qbr%wQ~ z!1%y{1D{od?0{U3k|4ie2B0DkxOytYh=GAI#nZ(xq=ND7+>4W%40v4q^V9$Q_rJ&L zmAQ4pj!m7LkG))b|BLrhD$X-2KG% zOzV@AcfQ9gf3-8I>!Z}vCCYQv!h_oHp155U&F6XRV&(aKhd8NICqF-!^S^LwZ*}w} zz3>UDC%qh}sc7$jm{nqUtoAtuKC**J5c4RXMp1`<9B!xkn zRq}wBBin``IQN0%(kYX=Js9}7j2foiYuIzwq1?28t7K!E&%%R6vl%kn_SZG-nV#Eg z*D_Dt|5=)R>Z*CKw|5;j+vStHzTH2MnIBelF{r G5}E*s{@X$T literal 0 HcmV?d00001 diff --git a/docs-src/html/class_intelli_tool_rectangle__coll__graph.dot b/docs-src/html/class_intelli_tool_rectangle__coll__graph.dot new file mode 100644 index 0000000..fcf24b8 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle__coll__graph.dot @@ -0,0 +1,23 @@ +digraph "IntelliToolRectangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolRectangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolRectangle class represents a tool to draw a rectangle."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node3 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Area" ,fontname="Helvetica"]; + Node3 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node5 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node5 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node6 -> Node3 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node6 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; + Node6 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node5 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node7 -> Node2 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Canvas\nactiveLayer" ,fontname="Helvetica"]; + Node7 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node8 -> Node7 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node8 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle__inherit__graph.dot b/docs-src/html/class_intelli_tool_rectangle__inherit__graph.dot new file mode 100644 index 0000000..1db5251 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "IntelliToolRectangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="IntelliToolRectangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The IntelliToolRectangle class represents a tool to draw a rectangle."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_a445c53a56e859f970e59f5036e221e0c_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_a445c53a56e859f970e59f5036e221e0c_cgraph.dot new file mode 100644 index 0000000..d2c20a9 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_a445c53a56e859f970e59f5036e221e0c_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolRectangle::onWheelScrolled" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the scroll event.Changing edgeWidth relativ to value."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a68528dd3bad8f39ba19fa6b12a4e415a",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolsettings\l::setLineWidth",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html#a906d37de6ee94b433d53fe3e598cc9fa",tooltip=" "]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_a480c6804a4963c5a1c3f7ef84b63c1a8_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_a480c6804a4963c5a1c3f7ef84b63c1a8_cgraph.dot new file mode 100644 index 0000000..e8913f6 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_a480c6804a4963c5a1c3f7ef84b63c1a8_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolRectangle::onMouseRightPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::onMouseRightPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click pressed of a mouse.Resetting the current draw."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_a4b5931071e21eb6949ffe357315e408b_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_a4b5931071e21eb6949ffe357315e408b_cgraph.dot new file mode 100644 index 0000000..845cacb --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_a4b5931071e21eb6949ffe357315e408b_cgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliToolRectangle::onMouseMoved" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the mouse moved event.Drawing a rectangle to currrent mouse position."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::drawPlain",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a6be622810dc2bc756054bb5769becb06",tooltip="A function that clears the whole image in a given Color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_a7dc1463e726a21255e6297241dc71fb1_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_a7dc1463e726a21255e6297241dc71fb1_cgraph.dot new file mode 100644 index 0000000..25dbf94 --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_a7dc1463e726a21255e6297241dc71fb1_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolRectangle::~IntelliToolRectangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::~IntelliToolRectangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A Destructor."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_a94460e3ff1c19e80bde922c55f53cc43_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_a94460e3ff1c19e80bde922c55f53cc43_cgraph.dot new file mode 100644 index 0000000..3addb3f --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_a94460e3ff1c19e80bde922c55f53cc43_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliToolRectangle::onMouseLeftReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click released of a mouse. Merging the draw to the active layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_ad43f653256a6516b9398f82054be0d7f_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_ad43f653256a6516b9398f82054be0d7f_cgraph.dot new file mode 100644 index 0000000..daac2ca --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_ad43f653256a6516b9398f82054be0d7f_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolRectangle::onMouseRightReleased" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::onMouseRightReleased",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the right click released of a mouse."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_intelli_tool_rectangle_ae03c307ccf66cbe3fd59e3657712368d_cgraph.dot b/docs-src/html/class_intelli_tool_rectangle_ae03c307ccf66cbe3fd59e3657712368d_cgraph.dot new file mode 100644 index 0000000..21405cb --- /dev/null +++ b/docs-src/html/class_intelli_tool_rectangle_ae03c307ccf66cbe3fd59e3657712368d_cgraph.dot @@ -0,0 +1,13 @@ +digraph "IntelliToolRectangle::onMouseLeftPressed" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliToolRectangle\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function managing the left click pressed of a mouse. Setting the originCorner and draws a rectangle..."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node3 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; +} diff --git a/docs-src/html/class_intelli_toolsettings-members.html b/docs-src/html/class_intelli_toolsettings-members.html new file mode 100644 index 0000000..021d117 --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings-members.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliToolsettings Member List
+
+
+ +

This is the complete list of members for IntelliToolsettings, including all inherited members.

+ + + + + + + +
getInnerAlpha() constIntelliToolsettings
getLineWidth() constIntelliToolsettings
IntelliToolsettings()IntelliToolsettings
setInnerAlpha(int innerAlpha)IntelliToolsettings
setLineWidth(int LineWidth)IntelliToolsettings
~IntelliToolsettings()IntelliToolsettingsvirtual
+
+ + + + diff --git a/docs-src/html/class_intelli_toolsettings.html b/docs-src/html/class_intelli_toolsettings.html new file mode 100644 index 0000000..0388fd2 --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings.html @@ -0,0 +1,291 @@ + + + + + + + +IntelliPhoto: IntelliToolsettings Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
IntelliToolsettings Class Reference
+
+
+ +

The IntelliToolsettings class managing the settings of the tools, independent of an existing tool. + More...

+ +

#include <IntelliToolsettings.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IntelliToolsettings ()
 IntelliToolsettings - basic constructor of the IntelliToolsettings, initializing the basics. More...
 
virtual ~IntelliToolsettings ()
 ~IntelliToolsettings - basic destructor. More...
 
int getLineWidth () const
 getLineWidth returns the width attribute of the line. More...
 
void setLineWidth (int LineWidth)
 setLineWidth sets the width attribute of the line. More...
 
int getInnerAlpha () const
 getInnerAlpha returns the inner alpha value. More...
 
void setInnerAlpha (int innerAlpha)
 setInnerAlpha sets the inner alpha attribute of the Tool. More...
 
+

Detailed Description

+

The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.

+ +

Definition at line 9 of file IntelliToolsettings.h.

+

Constructor & Destructor Documentation

+ +

◆ IntelliToolsettings()

+ +
+
+ + + + + + + +
IntelliToolsettings::IntelliToolsettings ()
+
+ +

IntelliToolsettings - basic constructor of the IntelliToolsettings, initializing the basics.

+ +

Definition at line 4 of file IntelliToolsettings.cpp.

+ +
+
+ +

◆ ~IntelliToolsettings()

+ +
+
+ + + + + +
+ + + + + + + +
IntelliToolsettings::~IntelliToolsettings ()
+
+virtual
+
+ +

~IntelliToolsettings - basic destructor.

+ +

Definition at line 10 of file IntelliToolsettings.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getInnerAlpha()

+ +
+
+ + + + + + + +
int IntelliToolsettings::getInnerAlpha () const
+
+ +

getInnerAlpha returns the inner alpha value.

+
Returns
returns the inner alpha attribute as integer.
+ +

Definition at line 28 of file IntelliToolsettings.cpp.

+ +
+
+ +

◆ getLineWidth()

+ +
+
+ + + + + + + +
int IntelliToolsettings::getLineWidth () const
+
+ +

getLineWidth returns the width attribute of the line.

+
Returns
returns the width attribute as integer.
+ +

Definition at line 14 of file IntelliToolsettings.cpp.

+ +
+
+ +

◆ setInnerAlpha()

+ +
+
+ + + + + + + + +
void IntelliToolsettings::setInnerAlpha (int innerAlpha)
+
+ +

setInnerAlpha sets the inner alpha attribute of the Tool.

+
Parameters
+ + +
innerAlpha- the future inner alpha of the Tool.
+
+
+ +

Definition at line 32 of file IntelliToolsettings.cpp.

+ +
+
+ +

◆ setLineWidth()

+ +
+
+ + + + + + + + +
void IntelliToolsettings::setLineWidth (int LineWidth)
+
+ +

setLineWidth sets the width attribute of the line.

+
Parameters
+ + +
LineWidth- the future width of the line
+
+
+ +

Definition at line 18 of file IntelliToolsettings.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_intelli_toolsettings.js b/docs-src/html/class_intelli_toolsettings.js new file mode 100644 index 0000000..628d2d8 --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings.js @@ -0,0 +1,9 @@ +var class_intelli_toolsettings = +[ + [ "IntelliToolsettings", "class_intelli_toolsettings.html#a5560602964ab95380967d63ab7ec6e69", null ], + [ "~IntelliToolsettings", "class_intelli_toolsettings.html#a927e50594a459c952d06acd34c0eff56", null ], + [ "getInnerAlpha", "class_intelli_toolsettings.html#a96d267baa782a32784dbeb1b7cd68cc4", null ], + [ "getLineWidth", "class_intelli_toolsettings.html#abb3ee5a9c8a379167060799d275e65c3", null ], + [ "setInnerAlpha", "class_intelli_toolsettings.html#a9a61f3de61efeba2287f8b32941f4271", null ], + [ "setLineWidth", "class_intelli_toolsettings.html#a73fa94c85c6c2fdc1a33975a33304a6f", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_intelli_toolsettings_a5beb193b25e0665516244c61c5e65aa6_icgraph.dot b/docs-src/html/class_intelli_toolsettings_a5beb193b25e0665516244c61c5e65aa6_icgraph.dot new file mode 100644 index 0000000..3ee4cb6 --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings_a5beb193b25e0665516244c61c5e65aa6_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolsettings::getLinestyle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliToolsettings\l::getLinestyle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; +} diff --git a/docs-src/html/class_intelli_toolsettings_a68528dd3bad8f39ba19fa6b12a4e415a_icgraph.dot b/docs-src/html/class_intelli_toolsettings_a68528dd3bad8f39ba19fa6b12a4e415a_icgraph.dot new file mode 100644 index 0000000..c709ae3 --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings_a68528dd3bad8f39ba19fa6b12a4e415a_icgraph.dot @@ -0,0 +1,30 @@ +digraph "IntelliToolsettings::getLineWidth" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliToolsettings\l::getLineWidth",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPen::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205",tooltip="A function managing the left click pressed of a mouse. Starting the drawing procedure."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolLine::onMouse\lLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846",tooltip="A function managing the left click pressed of a mouse. Sets the starting point of the line."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolPen::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2",tooltip="A function managing the mouse moved event. To draw the line."]; + Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolLine::onMouse\lMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b",tooltip="A function managing the mouse moved event. Drawing a Line from the startpoint to the current mouse po..."]; + Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="IntelliToolPen::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#afe3626ddff440ab125f4a2465c45427a",tooltip="A function managing the scroll event. Changing penWidth relativ to value."]; + Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="IntelliToolLine::onWheel\lScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#aaf1d686e1ec43f41b5186ccfd806b125",tooltip="A function managing the scroll event. Changing the lineWidth relative to value."]; + Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="IntelliToolRectangle\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a445c53a56e859f970e59f5036e221e0c",tooltip="A function managing the scroll event.Changing edgeWidth relativ to value."]; + Node1 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="IntelliToolCircle::\lonWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ae2d9b0fb6695c184c4cb507a5fb75506",tooltip="A function managing the scroll event. Changing the edge Width relative to value."]; + Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="IntelliToolPolygon\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a713103300c9f023d64d9eec5ac05dd17",tooltip="A function managing the scroll event. CHanging the lineWidth relative to value."]; +} diff --git a/docs-src/html/class_intelli_toolsettings_a7d6ce2054ec4bcba7629dc2b514b6b5c_icgraph.dot b/docs-src/html/class_intelli_toolsettings_a7d6ce2054ec4bcba7629dc2b514b6b5c_icgraph.dot new file mode 100644 index 0000000..72567ea --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings_a7d6ce2054ec4bcba7629dc2b514b6b5c_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliToolsettings::getInnerAlpha" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliToolsettings\l::getInnerAlpha",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/class_intelli_toolsettings_a906d37de6ee94b433d53fe3e598cc9fa_icgraph.dot b/docs-src/html/class_intelli_toolsettings_a906d37de6ee94b433d53fe3e598cc9fa_icgraph.dot new file mode 100644 index 0000000..57e6e14 --- /dev/null +++ b/docs-src/html/class_intelli_toolsettings_a906d37de6ee94b433d53fe3e598cc9fa_icgraph.dot @@ -0,0 +1,18 @@ +digraph "IntelliToolsettings::setLineWidth" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliToolsettings\l::setLineWidth",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPen::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html#afe3626ddff440ab125f4a2465c45427a",tooltip="A function managing the scroll event. Changing penWidth relativ to value."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolLine::onWheel\lScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html#aaf1d686e1ec43f41b5186ccfd806b125",tooltip="A function managing the scroll event. Changing the lineWidth relative to value."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolRectangle\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html#a445c53a56e859f970e59f5036e221e0c",tooltip="A function managing the scroll event.Changing edgeWidth relativ to value."]; + Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolCircle::\lonWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html#ae2d9b0fb6695c184c4cb507a5fb75506",tooltip="A function managing the scroll event. Changing the edge Width relative to value."]; + Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolPolygon\l::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a713103300c9f023d64d9eec5ac05dd17",tooltip="A function managing the scroll event. CHanging the lineWidth relative to value."]; +} diff --git a/docs-src/html/class_painting_area-members.html b/docs-src/html/class_painting_area-members.html new file mode 100644 index 0000000..1f744e9 --- /dev/null +++ b/docs-src/html/class_painting_area-members.html @@ -0,0 +1,154 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PaintingArea Member List
+
+
+ +

This is the complete list of members for PaintingArea, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addLayer(int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)PaintingArea
addLayerAt(int idx, int width, int height, int widthOffset=0, int heightOffset=0, ImageType type=ImageType::RASTERIMAGE)PaintingArea
colorPickerPaintingArea
colorPickerSetFirstColor()PaintingArea
colorPickerSetSecondColor()PaintingArea
colorPickerSwapColors()PaintingArea
createCircleTool()PaintingArea
createFloodFillTool()PaintingArea
createGradientTool()PaintingArea
createLineTool()PaintingArea
createPenTool()PaintingArea
createPlainTool()PaintingArea
createPolygonTool()PaintingArea
createRectangleTool()PaintingArea
deleteAllLayers()PaintingArea
deleteLayer(int idx, bool isTool=false)PaintingArea
drawPixelOntoActive(QColor color, QPoint point)PaintingArea
getHeightOfActive()PaintingArea
getImageDataOfActiveLayer()PaintingArea
getImageOfActiveLayer()PaintingArea
getIndexOfActiveLayer()PaintingArea
getLayerBundle()PaintingArea
getMaxHeight()PaintingArea
getMaxWidth()PaintingArea
getPolygonDataOfActiveLayer()PaintingArea
getRenderSettings()PaintingArea
getTypeOfImageActiveLayer()PaintingArea
getWidthOfActive()PaintingArea
historyadd()PaintingArea
historyGoBack()PaintingArea
historyGoForward()PaintingArea
mouseMoveEvent(QMouseEvent *event) overridePaintingAreaprotected
mousePressEvent(QMouseEvent *event) overridePaintingAreaprotected
mouseReleaseEvent(QMouseEvent *event) overridePaintingAreaprotected
moveActiveLayer(int idx)PaintingArea
movePositionActive(int x, int y)PaintingArea
open(const QString &filePath)PaintingArea
paintEvent(QPaintEvent *event) overridePaintingAreaprotected
PaintingArea(int maxWidth=600, int maxHeight=600, QWidget *parent=nullptr)PaintingArea
save(const QString &filePath, const char *fileFormat)PaintingArea
setCanvasDimensions(int maxWidth, int maxHeight)PaintingArea
setLayerActive(int idx)PaintingArea
setLayerAlpha(int idx, int alpha)PaintingArea
setPolygon(int idx)PaintingArea
setPolygonDataToActive(std::vector< QPoint > points)PaintingArea
setRenderSettings(bool isFastRenderingOn)PaintingArea
slotActivateLayer(int a)PaintingAreaslot
slotDeleteActiveLayer()PaintingAreaslot
ToolsettingsPaintingArea
wheelEvent(QWheelEvent *event) overridePaintingAreaprotected
~PaintingArea() overridePaintingArea
+
+ + + + diff --git a/docs-src/html/class_painting_area.html b/docs-src/html/class_painting_area.html new file mode 100644 index 0000000..9841cb7 --- /dev/null +++ b/docs-src/html/class_painting_area.html @@ -0,0 +1,1751 @@ + + + + + + + +IntelliPhoto: PaintingArea Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ +

The PaintingArea class manages the methods and stores information about the current painting area, which is the currently opened project. + More...

+ +

#include <PaintingArea.h>

+
+Inheritance diagram for PaintingArea:
+
+
+ +
+ + + + + + + + +

+Public Slots

void slotActivateLayer (int a)
 The slotActivateLayer method handles the event of selecting one layer as active. More...
 
void slotDeleteActiveLayer ()
 The slotDeleteActiveLayer method handles the deletion of the active layer. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PaintingArea (int maxWidth=600, int maxHeight=600, QWidget *parent=nullptr)
 PaintingArea is the constructor of the PaintingArea class, which initiates the working environment. More...
 
 ~PaintingArea () override
 This deconstructor is used to clear up the memory and remove the currently active window. More...
 
void setRenderSettings (bool isFastRenderingOn)
 setRenderSettings updates all Images to the new Rendersetting. More...
 
bool getRenderSettings ()
 getRenderSettings updates all Images to the new Rendersetting. More...
 
bool open (const QString &filePath)
 The open method is used for loading a picture into the current layer. More...
 
bool save (const QString &filePath, const char *fileFormat)
 The save method is used for exporting the current project as one picture. More...
 
void deleteAllLayers ()
 deleteAllLayers deletes all layers More...
 
int addLayer (int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)
 The addLayer adds a layer to the current project/ painting area. More...
 
int addLayerAt (int idx, int width, int height, int widthOffset=0, int heightOffset=0, ImageType type=ImageType::RASTERIMAGE)
 The addLayerAt adds a layer to the current project/ painting area at a specific position in the layer stack. More...
 
void deleteLayer (int idx, bool isTool=false)
 The deleteLayer method removes a layer at a given idx. More...
 
void setLayerActive (int idx)
 The setLayerToActive method marks a specific layer as active. More...
 
void setLayerAlpha (int idx, int alpha)
 The setAlphaOfLayer method sets the alpha value of a specific layer. More...
 
void setPolygon (int idx)
 setPolygon is used for setting polygondata, it only works on RASTER images More...
 
void movePositionActive (int x, int y)
 The movePositionActive method moves the active layer to certain position. More...
 
void moveActiveLayer (int idx)
 The moveActiveLayer moves the active layer to a specific position in the layer stack. More...
 
void colorPickerSetFirstColor ()
 The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color. More...
 
void colorPickerSetSecondColor ()
 The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color. More...
 
void colorPickerSwapColors ()
 The colorPickerSwitchColor swaps the primary color with the secondary drawing color. More...
 
void createPenTool ()
 createPenTool creates a Pen Tool. More...
 
void createPlainTool ()
 createPlainTool creates a Plain Tool. More...
 
void createLineTool ()
 createLineTool creates a Line Tool. More...
 
void createRectangleTool ()
 createRectangleTool creates a Rectangle Tool. More...
 
void createCircleTool ()
 createCircleTool creates a Circle Tool. More...
 
void createPolygonTool ()
 createPolygonTool creates a Polygon Tool. More...
 
void createFloodFillTool ()
 createFloodFillTool creates a Floodfill Tool. More...
 
void createGradientTool ()
 createGradientTool creates a Gradient Tool. More...
 
int getWidthOfActive ()
 The getWidthOfActive gets the horizontal dimensions of the active layer. More...
 
int getHeightOfActive ()
 The getHeightOfActive gets the vertical dimensions of the active layer. More...
 
int getMaxWidth ()
 getMaxWidth gets the max width of the Canvas. More...
 
int getMaxHeight ()
 getMaxHeight gets the max height of the Canvas. More...
 
ImageType getTypeOfImageActiveLayer ()
 getTypeOfImageActiveLayer get the type of the active Layer. More...
 
std::vector< QPoint > getPolygonDataOfActiveLayer ()
 getPolygonDataOfActiveLayer get the polygon data of the active Layer. More...
 
int getIndexOfActiveLayer ()
 getIndexOfActiveLayer returns the index of athe active Layer. More...
 
IntelliImagegetImageOfActiveLayer ()
 getImageOfActiveLayer returns the image of the active Layer. More...
 
QImage getImageDataOfActiveLayer ()
 getImageDataOfActiveLayer used to get the currents active imageData (if there isn't any active layer it return a 10*10 white picture) More...
 
std::vector< LayerObject > * getLayerBundle ()
 getLayerBundle returns the real active layerbundle (care!) More...
 
void historyadd ()
 historyadd adds an hisotry step More...
 
void historyGoBack ()
 historyGoBack go back in hisotry More...
 
void historyGoForward ()
 historyGoForward a function to undo the return of the previous state of the project. More...
 
void setCanvasDimensions (int maxWidth, int maxHeight)
 setCanvasDimensions sets the dimension of the Canvas More...
 
void drawPixelOntoActive (QColor color, QPoint point)
 drawPixelOntoActive draws a pixel onto the image data of the active Layer. More...
 
void setPolygonDataToActive (std::vector< QPoint > points)
 setPolygonDataToActive sets polygondata to the active Layer. More...
 
+ + + + + + + +

+Public Attributes

IntelliToolsettings Toolsettings
 Toolsettings - a class to manage Tool settings. More...
 
IntelliColorPicker colorPicker
 colorPicker a class to manage Tool color. More...
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

void mousePressEvent (QMouseEvent *event) override
 mousePressEvent handles a mouse pressed event. More...
 
void mouseMoveEvent (QMouseEvent *event) override
 mouseMoveEvent handles a mouse moved event More...
 
void mouseReleaseEvent (QMouseEvent *event) override
 mouseReleaseEvent handles a mouse released event More...
 
void wheelEvent (QWheelEvent *event) override
 wheelEvent handles a mouse wheel event More...
 
void paintEvent (QPaintEvent *event) override
 paintEvent handles a painting event More...
 
+

Detailed Description

+

The PaintingArea class manages the methods and stores information about the current painting area, which is the currently opened project.

+ +

Definition at line 57 of file PaintingArea.h.

+

Constructor & Destructor Documentation

+ +

◆ PaintingArea()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PaintingArea::PaintingArea (int maxWidth = 600,
int maxHeight = 600,
QWidget * parent = nullptr 
)
+
+ +

PaintingArea is the constructor of the PaintingArea class, which initiates the working environment.

+
Parameters
+ + + + +
maxWidth- The maximum amount of pixles that are inside painting area from left to right (default=600px)
maxHeight- The maximum amount of pixles that are inside painting area from top to bottom (default=600px)
parent- The parent window of the main window (default=nullptr)
+
+
+ +

Definition at line 40 of file PaintingArea.cpp.

+ +
+
+ +

◆ ~PaintingArea()

+ +
+
+ + + + + +
+ + + + + + + +
PaintingArea::~PaintingArea ()
+
+override
+
+ +

This deconstructor is used to clear up the memory and remove the currently active window.

+ +

Definition at line 47 of file PaintingArea.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ addLayer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int PaintingArea::addLayer (int width,
int height,
int widthOffset = 0,
int heightOffset = 0,
int alpha = 255,
ImageType type = ImageType::RASTERIMAGE 
)
+
+ +

The addLayer adds a layer to the current project/ painting area.

+
Parameters
+ + + + + + + +
width- Width of the layer in pixles
height- Height of the layer in pixles
widthOffset- Offset of the layer measured to the left border of the painting area in pixles
heightOffset- Offset of the layer measured to the top border of the painting area in pixles
alpha- Transparence of the layer
type- Defining the ImageType of the new layer
+
+
+
Returns
Returns the number of layers in the project
+ +

Definition at line 94 of file PaintingArea.cpp.

+ +
+
+ +

◆ addLayerAt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int PaintingArea::addLayerAt (int idx,
int width,
int height,
int widthOffset = 0,
int heightOffset = 0,
ImageType type = ImageType::RASTERIMAGE 
)
+
+ +

The addLayerAt adds a layer to the current project/ painting area at a specific position in the layer stack.

+
Parameters
+ + + + + + + +
idx- Index of the position the new layer should be added
width- Width of the layer in pixles
height- Height of the layer in pixles
widthOffset- Offset of the layer measured to the left border of the painting area in pixles
heightOffset- Offset of the layer measured to the top border of the painting area in pixles
type- Defining the ImageType of the new layer
+
+
+
Returns
Returns the id of the layer position
+ +
+
+ +

◆ colorPickerSetFirstColor()

+ +
+
+ + + + + + + +
void PaintingArea::colorPickerSetFirstColor ()
+
+ +

The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color.

+ +

Definition at line 229 of file PaintingArea.cpp.

+ +
+
+ +

◆ colorPickerSetSecondColor()

+ +
+
+ + + + + + + +
void PaintingArea::colorPickerSetSecondColor ()
+
+ +

The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color.

+ +

Definition at line 234 of file PaintingArea.cpp.

+ +
+
+ +

◆ colorPickerSwapColors()

+ +
+
+ + + + + + + +
void PaintingArea::colorPickerSwapColors ()
+
+ +

The colorPickerSwitchColor swaps the primary color with the secondary drawing color.

+ +

Definition at line 239 of file PaintingArea.cpp.

+ +
+
+ +

◆ createCircleTool()

+ +
+
+ + + + + + + +
void PaintingArea::createCircleTool ()
+
+ +

createCircleTool creates a Circle Tool.

+ +

Definition at line 263 of file PaintingArea.cpp.

+ +
+
+ +

◆ createFloodFillTool()

+ +
+
+ + + + + + + +
void PaintingArea::createFloodFillTool ()
+
+ +

createFloodFillTool creates a Floodfill Tool.

+ +

Definition at line 272 of file PaintingArea.cpp.

+ +
+
+ +

◆ createGradientTool()

+ +
+
+ + + + + + + +
void PaintingArea::createGradientTool ()
+
+ +

createGradientTool creates a Gradient Tool.

+ +

Definition at line 277 of file PaintingArea.cpp.

+ +
+
+ +

◆ createLineTool()

+ +
+
+ + + + + + + +
void PaintingArea::createLineTool ()
+
+ +

createLineTool creates a Line Tool.

+ +

Definition at line 253 of file PaintingArea.cpp.

+ +
+
+ +

◆ createPenTool()

+ +
+
+ + + + + + + +
void PaintingArea::createPenTool ()
+
+ +

createPenTool creates a Pen Tool.

+ +

Definition at line 243 of file PaintingArea.cpp.

+ +
+
+ +

◆ createPlainTool()

+ +
+
+ + + + + + + +
void PaintingArea::createPlainTool ()
+
+ +

createPlainTool creates a Plain Tool.

+ +

Definition at line 248 of file PaintingArea.cpp.

+ +
+
+ +

◆ createPolygonTool()

+ +
+
+ + + + + + + +
void PaintingArea::createPolygonTool ()
+
+ +

createPolygonTool creates a Polygon Tool.

+ +

Definition at line 267 of file PaintingArea.cpp.

+ +
+
+ +

◆ createRectangleTool()

+ +
+
+ + + + + + + +
void PaintingArea::createRectangleTool ()
+
+ +

createRectangleTool creates a Rectangle Tool.

+ +

Definition at line 258 of file PaintingArea.cpp.

+ +
+
+ +

◆ deleteAllLayers()

+ +
+
+ + + + + + + +
void PaintingArea::deleteAllLayers ()
+
+ +

deleteAllLayers deletes all layers

+ +

Definition at line 173 of file PaintingArea.cpp.

+ +
+
+ +

◆ deleteLayer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PaintingArea::deleteLayer (int idx,
bool isTool = false 
)
+
+ +

The deleteLayer method removes a layer at a given idx.

+
Parameters
+ + + +
idx- The index of the layer to be removed
isTool- Is the flag for when a tool uses this function.
+
+
+ +

Definition at line 113 of file PaintingArea.cpp.

+ +
+
+ +

◆ drawPixelOntoActive()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PaintingArea::drawPixelOntoActive (QColor color,
QPoint point 
)
+
+ +

drawPixelOntoActive draws a pixel onto the image data of the active Layer.

+
Parameters
+ + + +
color- the color of the Pixel, which should be created.
point- the Pixelposition.
+
+
+ +

Definition at line 86 of file PaintingArea.cpp.

+ +
+
+ +

◆ getHeightOfActive()

+ +
+
+ + + + + + + +
int PaintingArea::getHeightOfActive ()
+
+ +

The getHeightOfActive gets the vertical dimensions of the active layer.

+
Returns
Returns the vertical pixle count of the active layer.
+ +

Definition at line 286 of file PaintingArea.cpp.

+ +
+
+ +

◆ getImageDataOfActiveLayer()

+ +
+
+ + + + + + + +
QImage PaintingArea::getImageDataOfActiveLayer ()
+
+ +

getImageDataOfActiveLayer used to get the currents active imageData (if there isn't any active layer it return a 10*10 white picture)

+
Returns
return the image as an rgba32bit qImage
+ +

Definition at line 476 of file PaintingArea.cpp.

+ +
+
+ +

◆ getImageOfActiveLayer()

+ +
+
+ + + + + + + +
IntelliImage * PaintingArea::getImageOfActiveLayer ()
+
+ +

getImageOfActiveLayer returns the image of the active Layer.

+
Returns
return the image of the active Layer.
+ +

Definition at line 469 of file PaintingArea.cpp.

+ +
+
+ +

◆ getIndexOfActiveLayer()

+ +
+
+ + + + + + + +
int PaintingArea::getIndexOfActiveLayer ()
+
+ +

getIndexOfActiveLayer returns the index of athe active Layer.

+
Returns
return the index of the active Layer.
+ +

Definition at line 465 of file PaintingArea.cpp.

+ +
+
+ +

◆ getLayerBundle()

+ +
+
+ + + + + + + +
std::vector< LayerObject > * PaintingArea::getLayerBundle ()
+
+ +

getLayerBundle returns the real active layerbundle (care!)

+
Returns
the reference of the currentLayerBundle
+ +

Definition at line 491 of file PaintingArea.cpp.

+ +
+
+ +

◆ getMaxHeight()

+ +
+
+ + + + + + + +
int PaintingArea::getMaxHeight ()
+
+ +

getMaxHeight gets the max height of the Canvas.

+
Returns
return the height of the Canvas.
+ +

Definition at line 294 of file PaintingArea.cpp.

+ +
+
+ +

◆ getMaxWidth()

+ +
+
+ + + + + + + +
int PaintingArea::getMaxWidth ()
+
+ +

getMaxWidth gets the max width of the Canvas.

+
Returns
return the width of the Canvas.
+ +

Definition at line 290 of file PaintingArea.cpp.

+ +
+
+ +

◆ getPolygonDataOfActiveLayer()

+ +
+
+ + + + + + + +
std::vector< QPoint > PaintingArea::getPolygonDataOfActiveLayer ()
+
+ +

getPolygonDataOfActiveLayer get the polygon data of the active Layer.

+
Returns
return the polygon data of the active Layer.
+ +

Definition at line 302 of file PaintingArea.cpp.

+ +
+
+ +

◆ getRenderSettings()

+ +
+
+ + + + + + + +
bool PaintingArea::getRenderSettings ()
+
+ +

getRenderSettings updates all Images to the new Rendersetting.

+
Parameters
+ + +
isFastRenderingOnis the new given flag for the FastRenderer.
+
+
+ +

Definition at line 68 of file PaintingArea.cpp.

+ +
+
+ +

◆ getTypeOfImageActiveLayer()

+ +
+
+ + + + + + + +
ImageType PaintingArea::getTypeOfImageActiveLayer ()
+
+ +

getTypeOfImageActiveLayer get the type of the active Layer.

+
Returns
returns the image type of the active layer.
+ +

Definition at line 298 of file PaintingArea.cpp.

+ +
+
+ +

◆ getWidthOfActive()

+ +
+
+ + + + + + + +
int PaintingArea::getWidthOfActive ()
+
+ +

The getWidthOfActive gets the horizontal dimensions of the active layer.

+
Returns
Returns the horizontal pixle count of the active layer.
+ +

Definition at line 282 of file PaintingArea.cpp.

+ +
+
+ +

◆ historyadd()

+ +
+
+ + + + + + + +
void PaintingArea::historyadd ()
+
+ +

historyadd adds an hisotry step

+ +

Definition at line 510 of file PaintingArea.cpp.

+ +
+
+ +

◆ historyGoBack()

+ +
+
+ + + + + + + +
void PaintingArea::historyGoBack ()
+
+ +

historyGoBack go back in hisotry

+ +

Definition at line 517 of file PaintingArea.cpp.

+ +
+
+ +

◆ historyGoForward()

+ +
+
+ + + + + + + +
void PaintingArea::historyGoForward ()
+
+ +

historyGoForward a function to undo the return of the previous state of the project.

+ +

Definition at line 526 of file PaintingArea.cpp.

+ +
+
+ +

◆ mouseMoveEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
void PaintingArea::mouseMoveEvent (QMouseEvent * event)
+
+overrideprotected
+
+ +

mouseMoveEvent handles a mouse moved event

+
Parameters
+ + +
event- the specific mouse event.
+
+
+ +

Definition at line 328 of file PaintingArea.cpp.

+ +
+
+ +

◆ mousePressEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
void PaintingArea::mousePressEvent (QMouseEvent * event)
+
+overrideprotected
+
+ +

mousePressEvent handles a mouse pressed event.

+
Parameters
+ + +
event- the specific mouse event.
+
+
+ +

Definition at line 309 of file PaintingArea.cpp.

+ +
+
+ +

◆ mouseReleaseEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
void PaintingArea::mouseReleaseEvent (QMouseEvent * event)
+
+overrideprotected
+
+ +

mouseReleaseEvent handles a mouse released event

+
Parameters
+ + +
event- the specific mouse event.
+
+
+ +

Definition at line 341 of file PaintingArea.cpp.

+ +
+
+ +

◆ moveActiveLayer()

+ +
+
+ + + + + + + + +
void PaintingArea::moveActiveLayer (int idx)
+
+ +

The moveActiveLayer moves the active layer to a specific position in the layer stack.

+
Parameters
+ + +
idx- The index of the new position the layer should be in
+
+
+ +

Definition at line 211 of file PaintingArea.cpp.

+ +
+
+ +

◆ movePositionActive()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PaintingArea::movePositionActive (int x,
int y 
)
+
+ +

The movePositionActive method moves the active layer to certain position.

+
Parameters
+ + + +
x- The x value the new center of the layer should be at
y- The y value the new center of the layer should be at
+
+
+ +

Definition at line 204 of file PaintingArea.cpp.

+ +
+
+ +

◆ open()

+ +
+
+ + + + + + + + +
bool PaintingArea::open (const QString & filePath)
+
+ +

The open method is used for loading a picture into the current layer.

+
Parameters
+ + +
filePath- Path and Name which are used to determine where the to-be-opened file is stored.
+
+
+
Returns
Returns a boolean variable whether the file was successfully opened or not.
+ +

Definition at line 162 of file PaintingArea.cpp.

+ +
+
+ +

◆ paintEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
void PaintingArea::paintEvent (QPaintEvent * event)
+
+overrideprotected
+
+ +

paintEvent handles a painting event

+
Parameters
+ + +
event- the specific paint event.
+
+
+ +

Definition at line 371 of file PaintingArea.cpp.

+ +
+
+ +

◆ save()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool PaintingArea::save (const QString & filePath,
const char * fileFormat 
)
+
+ +

The save method is used for exporting the current project as one picture.

+
Parameters
+ + + +
filePath- Specifies the path and name of the file to create.
fileFormat- Specifies the format of the file to create.
+
+
+
Returns
Returns a boolean variable, true if the file was saved successfully, false if not
+ +

Definition at line 181 of file PaintingArea.cpp.

+ +
+
+ +

◆ setCanvasDimensions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PaintingArea::setCanvasDimensions (int maxWidth,
int maxHeight 
)
+
+ +

setCanvasDimensions sets the dimension of the Canvas

+
Parameters
+ + + +
maxWidth- the width of the Canvas.
maxHeight- the height of the Canvas.
+
+
+ +

Definition at line 72 of file PaintingArea.cpp.

+ +
+
+ +

◆ setLayerActive()

+ +
+
+ + + + + + + + +
void PaintingArea::setLayerActive (int idx)
+
+ +

The setLayerToActive method marks a specific layer as active.

+
Parameters
+ + +
idx- The index of the layer to be active
+
+
+ +

Definition at line 136 of file PaintingArea.cpp.

+ +
+
+ +

◆ setLayerAlpha()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PaintingArea::setLayerAlpha (int idx,
int alpha 
)
+
+ +

The setAlphaOfLayer method sets the alpha value of a specific layer.

+
Parameters
+ + + +
idx- The index of the layer where the change should be applied
alpha- New alpha value of the layer
+
+
+ +

Definition at line 143 of file PaintingArea.cpp.

+ +
+
+ +

◆ setPolygon()

+ +
+
+ + + + + + + + +
void PaintingArea::setPolygon (int idx)
+
+ +

setPolygon is used for setting polygondata, it only works on RASTER images

+
Parameters
+ + +
idx- represents the number of the layer with should be transformed
+
+
+ +

Definition at line 150 of file PaintingArea.cpp.

+ +
+
+ +

◆ setPolygonDataToActive()

+ +
+
+ + + + + + + + +
void PaintingArea::setPolygonDataToActive (std::vector< QPoint > points)
+
+ +

setPolygonDataToActive sets polygondata to the active Layer.

+
Parameters
+ + +
points- the points of the polygon data.
+
+
+ +

Definition at line 90 of file PaintingArea.cpp.

+ +
+
+ +

◆ setRenderSettings()

+ +
+
+ + + + + + + + +
void PaintingArea::setRenderSettings (bool isFastRenderingOn)
+
+ +

setRenderSettings updates all Images to the new Rendersetting.

+
Parameters
+ + +
isFastRenderingOnis the new given flag for the FastRenderer.
+
+
+ +

Definition at line 51 of file PaintingArea.cpp.

+ +
+
+ +

◆ slotActivateLayer

+ +
+
+ + + + + +
+ + + + + + + + +
void PaintingArea::slotActivateLayer (int a)
+
+slot
+
+ +

The slotActivateLayer method handles the event of selecting one layer as active.

+
Parameters
+ + +
a- idx of the layer to be active
+
+
+ +

Definition at line 222 of file PaintingArea.cpp.

+ +
+
+ +

◆ slotDeleteActiveLayer

+ +
+
+ + + + + +
+ + + + + + + +
void PaintingArea::slotDeleteActiveLayer ()
+
+slot
+
+ +

The slotDeleteActiveLayer method handles the deletion of the active layer.

+ +

Definition at line 128 of file PaintingArea.cpp.

+ +
+
+ +

◆ wheelEvent()

+ +
+
+ + + + + +
+ + + + + + + + +
void PaintingArea::wheelEvent (QWheelEvent * event)
+
+overrideprotected
+
+ +

wheelEvent handles a mouse wheel event

+
Parameters
+ + +
event- the specific mouse event.
+
+
+ +

Definition at line 356 of file PaintingArea.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ colorPicker

+ +
+
+ + + + +
IntelliColorPicker PaintingArea::colorPicker
+
+ +

colorPicker a class to manage Tool color.

+ +

Definition at line 286 of file PaintingArea.h.

+ +
+
+ +

◆ Toolsettings

+ +
+
+ + + + +
IntelliToolsettings PaintingArea::Toolsettings
+
+ +

Toolsettings - a class to manage Tool settings.

+ +

Definition at line 281 of file PaintingArea.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_painting_area.js b/docs-src/html/class_painting_area.js new file mode 100644 index 0000000..f53644f --- /dev/null +++ b/docs-src/html/class_painting_area.js @@ -0,0 +1,54 @@ +var class_painting_area = +[ + [ "PaintingArea", "class_painting_area.html#a4fa0ec23e78cc59f28c823584c721460", null ], + [ "~PaintingArea", "class_painting_area.html#aa32adc113f77031945f73e33051931e8", null ], + [ "addLayer", "class_painting_area.html#abd5e3e4d3f2f026383d0a275dc55cbbd", null ], + [ "addLayerAt", "class_painting_area.html#a1274e60a912d2f1dfabcdd1b767fb029", null ], + [ "colorPickerSetFirstColor", "class_painting_area.html#a4735d4cf1dc58a9096d904e74c39c4df", null ], + [ "colorPickerSetSecondColor", "class_painting_area.html#ae261acaaa346610dfed489dbac17e789", null ], + [ "colorPickerSwapColors", "class_painting_area.html#acff4563d006fda491469bd41778d07eb", null ], + [ "createCircleTool", "class_painting_area.html#a2d9f4b3585f7dd1acb11f432ca503466", null ], + [ "createFloodFillTool", "class_painting_area.html#a0b22e18069b524f3e75857d203baf256", null ], + [ "createGradientTool", "class_painting_area.html#ad8636e986fdcdd3146f9f72d3cdb1831", null ], + [ "createLineTool", "class_painting_area.html#a240c33a7875addac86080cdfb0db036a", null ], + [ "createPenTool", "class_painting_area.html#a96c6248e343e44b61cf2625cb6d21353", null ], + [ "createPlainTool", "class_painting_area.html#a3de83443d2d5cf460ff48d0602070938", null ], + [ "createPolygonTool", "class_painting_area.html#a13c2f94644bea9c2d3123d0b7898f34b", null ], + [ "createRectangleTool", "class_painting_area.html#a5b04ce62ce024e307f54e0281f7ae4bd", null ], + [ "deleteAllLayers", "class_painting_area.html#af4701dee7ce672d91ed1e80cdd1e7491", null ], + [ "deleteLayer", "class_painting_area.html#a9b7dc8b8dc0b301ce58206aa76fb1630", null ], + [ "drawPixelOntoActive", "class_painting_area.html#af1b7be20235139e4909086696ea74cf7", null ], + [ "getHeightOfActive", "class_painting_area.html#ac576f58aad03b4dcd47611b6a4b9abb4", null ], + [ "getImageDataOfActiveLayer", "class_painting_area.html#a4f484ff3ca7ae202ab57a00f52551423", null ], + [ "getImageOfActiveLayer", "class_painting_area.html#acab11ad35d07e9081203d8217d2c0855", null ], + [ "getIndexOfActiveLayer", "class_painting_area.html#a2ea1108ae4e4be995c4df0d378c536e7", null ], + [ "getLayerBundle", "class_painting_area.html#a1452c4bf2ebf188d8af019a862f3d8ba", null ], + [ "getMaxHeight", "class_painting_area.html#aa811d142df9239ae248679bd70ad6da7", null ], + [ "getMaxWidth", "class_painting_area.html#aeb082c1cda3edb6b68d8ee45cf4822f8", null ], + [ "getPolygonDataOfActiveLayer", "class_painting_area.html#ae6eb9b269cdee993dbabd066e4679576", null ], + [ "getRenderSettings", "class_painting_area.html#ad631e87a1e7fe2b60f546b0f34995097", null ], + [ "getTypeOfImageActiveLayer", "class_painting_area.html#a63cfff9cd4bc04e0b62d4c76cbf87395", null ], + [ "getWidthOfActive", "class_painting_area.html#a675ee91b26b1c58be6d833f279d81597", null ], + [ "historyadd", "class_painting_area.html#acf20e3f5f74a239e6f9b7e2e1200295f", null ], + [ "historyGoBack", "class_painting_area.html#a6a6083ca9fece2b185b592f941a91aa4", null ], + [ "historyGoForward", "class_painting_area.html#aecc72f0f5971244205194934ff721546", null ], + [ "mouseMoveEvent", "class_painting_area.html#aa22e274b6094a9619f196cd7b49526b5", null ], + [ "mousePressEvent", "class_painting_area.html#abfe445f8d9b70ae42bfeda874127dd15", null ], + [ "mouseReleaseEvent", "class_painting_area.html#a35b5df914acb608cc29717659793359c", null ], + [ "moveActiveLayer", "class_painting_area.html#ae05f6893fb44bfcb34018573a609cd1a", null ], + [ "movePositionActive", "class_painting_area.html#ac6d089f4357b22d9a9906fd4771de3e7", null ], + [ "open", "class_painting_area.html#a88c7e759aa8375a56129791645f46ea5", null ], + [ "paintEvent", "class_painting_area.html#a4a8138b9508ee4ec87a7fca9160368a7", null ], + [ "save", "class_painting_area.html#aa2463d4f403224086acab02903ae407e", null ], + [ "setCanvasDimensions", "class_painting_area.html#a3bfc63de27c54f3edf9feb3af538343c", null ], + [ "setLayerActive", "class_painting_area.html#a79eb059829f27e8cdb3a54c5cd3d12c9", null ], + [ "setLayerAlpha", "class_painting_area.html#a6c7e0865e684ae1089ee283b4399d055", null ], + [ "setPolygon", "class_painting_area.html#aa409492ac26483d618bb33616f2e3f81", null ], + [ "setPolygonDataToActive", "class_painting_area.html#aac7d7bca37e0d7c7d077b65224795577", null ], + [ "setRenderSettings", "class_painting_area.html#a63be0831e5b6ceb8cc622d83aa28f0bd", null ], + [ "slotActivateLayer", "class_painting_area.html#a71ac281e0de263208d4a3b9de74258ec", null ], + [ "slotDeleteActiveLayer", "class_painting_area.html#a1ff0b9c1227531943c9cec2c546fae5e", null ], + [ "wheelEvent", "class_painting_area.html#a632848d99f44d33d7da2618fbc6775a4", null ], + [ "colorPicker", "class_painting_area.html#a132535c4e16052c1472cf1b9f3e096ed", null ], + [ "Toolsettings", "class_painting_area.html#abc2f798744f1dc805a651731eb1692ea", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_painting_area.png b/docs-src/html/class_painting_area.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c163f8a4f18e91ebfbf6e796b5fafd2437521c GIT binary patch literal 430 zcmV;f0a5;mP)`fsTuIb0wB3|3GlQ&Z{OxO-|Xd~3$2uco%s@Ar76Cd<3S?I~Zr z6l`Icnex)h@~*6Op;lyKHiA4OXB<)t);QNn0AbB%8r264s{ew2rxp)BFkctyfd#_a zscZUtn_5m1AP%~t=At{04_tI8S?%1-0DyjVBs`?LT>`)>J@tC{tO1~@_$T}_DoKvk Y54qto^v3Vyn*aa+07*qoM6N<$g6ojKS^xk5 literal 0 HcmV?d00001 diff --git a/docs-src/html/class_painting_area__coll__graph.dot b/docs-src/html/class_painting_area__coll__graph.dot new file mode 100644 index 0000000..28d8ca9 --- /dev/null +++ b/docs-src/html/class_painting_area__coll__graph.dot @@ -0,0 +1,13 @@ +digraph "PaintingArea" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node3 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" colorPicker" ,fontname="Helvetica"]; + Node3 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; + Node4 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" Toolsettings" ,fontname="Helvetica"]; + Node4 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; +} diff --git a/docs-src/html/class_painting_area__inherit__graph.dot b/docs-src/html/class_painting_area__inherit__graph.dot new file mode 100644 index 0000000..17b1cda --- /dev/null +++ b/docs-src/html/class_painting_area__inherit__graph.dot @@ -0,0 +1,9 @@ +digraph "PaintingArea" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; + Node2 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/class_painting_area_a1511a534e206089fff1d325e7ec7a8eb_icgraph.dot b/docs-src/html/class_painting_area_a1511a534e206089fff1d325e7ec7a8eb_icgraph.dot new file mode 100644 index 0000000..786a371 --- /dev/null +++ b/docs-src/html/class_painting_area_a1511a534e206089fff1d325e7ec7a8eb_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getHeightActiveLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getHeightActive\lLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; +} diff --git a/docs-src/html/class_painting_area_a1d6d86c25efdce9fe9031a9cd01c74c8_icgraph.dot b/docs-src/html/class_painting_area_a1d6d86c25efdce9fe9031a9cd01c74c8_icgraph.dot new file mode 100644 index 0000000..3f0d948 --- /dev/null +++ b/docs-src/html/class_painting_area_a1d6d86c25efdce9fe9031a9cd01c74c8_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::setLayerToActive" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::setLayerTo\lActive",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The setLayerToActive method marks a specific layer as active."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::slotActivate\lLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a71ac281e0de263208d4a3b9de74258ec",tooltip="The slotActivateLayer method handles the event of selecting one layer as active."]; +} diff --git a/docs-src/html/class_painting_area_a1f597740b4d7b4bc2e24c51f8cb0b6eb_cgraph.dot b/docs-src/html/class_painting_area_a1f597740b4d7b4bc2e24c51f8cb0b6eb_cgraph.dot new file mode 100644 index 0000000..9be7a8f --- /dev/null +++ b/docs-src/html/class_painting_area_a1f597740b4d7b4bc2e24c51f8cb0b6eb_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::open" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::open",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The open method is used for loading a picture into the current layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::loadImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aec0e9c8184d89dee33fd9adefbd2f8aa",tooltip="A function that loads and sclaes an image to the fitting dimensions."]; +} diff --git a/docs-src/html/class_painting_area_a24280454ebb80db7feba2fd621513353_icgraph.dot b/docs-src/html/class_painting_area_a24280454ebb80db7feba2fd621513353_icgraph.dot new file mode 100644 index 0000000..1dcbf8a --- /dev/null +++ b/docs-src/html/class_painting_area_a24280454ebb80db7feba2fd621513353_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getNumberOfActiveLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getNumberOf\lActiveLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliPhotoGui::UpdateGui",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4",tooltip=" "]; +} diff --git a/docs-src/html/class_painting_area_a35b5df914acb608cc29717659793359c_cgraph.dot b/docs-src/html/class_painting_area_a35b5df914acb608cc29717659793359c_cgraph.dot new file mode 100644 index 0000000..38440e6 --- /dev/null +++ b/docs-src/html/class_painting_area_a35b5df914acb608cc29717659793359c_cgraph.dot @@ -0,0 +1,14 @@ +digraph "PaintingArea::mouseReleaseEvent" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::mouseRelease\lEvent",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b",tooltip="A function managing the left click Released of a Mouse. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliTool::onMouseRight\lReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0",tooltip="A function managing the right click Released of a Mouse. Merging the Canvas to Active...."]; +} diff --git a/docs-src/html/class_painting_area_a39ad76e1319659bfa38eee88ef33d395_icgraph.dot b/docs-src/html/class_painting_area_a39ad76e1319659bfa38eee88ef33d395_icgraph.dot new file mode 100644 index 0000000..5bc9f21 --- /dev/null +++ b/docs-src/html/class_painting_area_a39ad76e1319659bfa38eee88ef33d395_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::addLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::addLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The addLayer adds a layer to the current project/ painting area."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a4fa0ec23e78cc59f28c823584c721460",tooltip="PaintingArea is the constructor of the PaintingArea class, which initiates the working environment."]; +} diff --git a/docs-src/html/class_painting_area_a427c5fc26480c7ae80b3480e85510bda_icgraph.dot b/docs-src/html/class_painting_area_a427c5fc26480c7ae80b3480e85510bda_icgraph.dot new file mode 100644 index 0000000..1add7b7 --- /dev/null +++ b/docs-src/html/class_painting_area_a427c5fc26480c7ae80b3480e85510bda_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getWidthActiveLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getWidthActive\lLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; +} diff --git a/docs-src/html/class_painting_area_a4735d4cf1dc58a9096d904e74c39c4df_cgraph.dot b/docs-src/html/class_painting_area_a4735d4cf1dc58a9096d904e74c39c4df_cgraph.dot new file mode 100644 index 0000000..5f9be65 --- /dev/null +++ b/docs-src/html/class_painting_area_a4735d4cf1dc58a9096d904e74c39c4df_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::colorPickerSetFirstColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::colorPicker\lSetFirstColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker\l::getFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aae2eb27b928fe9388b9398b0556303b7",tooltip="A function to read the primary selected color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliColorPicker\l::setFirstColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#a7e2ddbbbfbed383f06b24e5bf6b27ae8",tooltip="A function to set the primary color."]; +} diff --git a/docs-src/html/class_painting_area_a4fa0ec23e78cc59f28c823584c721460_cgraph.dot b/docs-src/html/class_painting_area_a4fa0ec23e78cc59f28c823584c721460_cgraph.dot new file mode 100644 index 0000000..c255ea7 --- /dev/null +++ b/docs-src/html/class_painting_area_a4fa0ec23e78cc59f28c823584c721460_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::PaintingArea" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::PaintingArea",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="PaintingArea is the constructor of the PaintingArea class, which initiates the working environment."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::addLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a6e9207612cef104d39013564696fe989",tooltip="The addLayer adds a layer to the current project/ painting area."]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliRenderSettings\l::getFastRenderer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_render_settings.html#a5a74e7d7ed3a2e944883dddbe8bbf5e8",tooltip="The getfastRenderer gets the value of the flag for the fastRenderer setting."]; +} diff --git a/docs-src/html/class_painting_area_a632848d99f44d33d7da2618fbc6775a4_cgraph.dot b/docs-src/html/class_painting_area_a632848d99f44d33d7da2618fbc6775a4_cgraph.dot new file mode 100644 index 0000000..abb7a14 --- /dev/null +++ b/docs-src/html/class_painting_area_a632848d99f44d33d7da2618fbc6775a4_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::wheelEvent" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::wheelEvent",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onWheelScrolled",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574",tooltip="A function managing the scroll event. A positive value means scrolling outwards. Call this in child c..."]; +} diff --git a/docs-src/html/class_painting_area_a66115307ff4a99cd7ca16423c5c8ecfb_cgraph.dot b/docs-src/html/class_painting_area_a66115307ff4a99cd7ca16423c5c8ecfb_cgraph.dot new file mode 100644 index 0000000..8d4eb30 --- /dev/null +++ b/docs-src/html/class_painting_area_a66115307ff4a99cd7ca16423c5c8ecfb_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::colorPickerSwitchColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::colorPicker\lSwitchColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The colorPickerSwitchColor swaps the primary color with the secondary drawing color."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker\l::switchColors",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#a437a6f20bf2fc0a4cbaf4c030c2a26d9",tooltip="A function switching primary and secondary color."]; +} diff --git a/docs-src/html/class_painting_area_a675ee91b26b1c58be6d833f279d81597_icgraph.dot b/docs-src/html/class_painting_area_a675ee91b26b1c58be6d833f279d81597_icgraph.dot new file mode 100644 index 0000000..c5ccaaa --- /dev/null +++ b/docs-src/html/class_painting_area_a675ee91b26b1c58be6d833f279d81597_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getWidthOfActive" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getWidthOf\lActive",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The getWidthOfActive gets the horizontal dimensions of the active layer."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; +} diff --git a/docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_cgraph.dot b/docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_cgraph.dot new file mode 100644 index 0000000..bfa4706 --- /dev/null +++ b/docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::addLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::addLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The addLayer adds a layer to the current project/ painting area."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliRenderSettings\l::getFastRenderer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_render_settings.html#a5a74e7d7ed3a2e944883dddbe8bbf5e8",tooltip="The getfastRenderer gets the value of the flag for the fastRenderer setting."]; +} diff --git a/docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_icgraph.dot b/docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_icgraph.dot new file mode 100644 index 0000000..5bc9f21 --- /dev/null +++ b/docs-src/html/class_painting_area_a6e9207612cef104d39013564696fe989_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::addLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::addLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The addLayer adds a layer to the current project/ painting area."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a4fa0ec23e78cc59f28c823584c721460",tooltip="PaintingArea is the constructor of the PaintingArea class, which initiates the working environment."]; +} diff --git a/docs-src/html/class_painting_area_a71ac281e0de263208d4a3b9de74258ec_cgraph.dot b/docs-src/html/class_painting_area_a71ac281e0de263208d4a3b9de74258ec_cgraph.dot new file mode 100644 index 0000000..09a5ca7 --- /dev/null +++ b/docs-src/html/class_painting_area_a71ac281e0de263208d4a3b9de74258ec_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::slotActivateLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::slotActivate\lLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The slotActivateLayer method handles the event of selecting one layer as active."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::getIsDrawing",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a0020fad2e26315d5c4d96dbc95d1dceb",tooltip=" "]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="PaintingArea::setLayerActive",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a79eb059829f27e8cdb3a54c5cd3d12c9",tooltip="The setLayerToActive method marks a specific layer as active."]; +} diff --git a/docs-src/html/class_painting_area_a79eb059829f27e8cdb3a54c5cd3d12c9_icgraph.dot b/docs-src/html/class_painting_area_a79eb059829f27e8cdb3a54c5cd3d12c9_icgraph.dot new file mode 100644 index 0000000..26280ee --- /dev/null +++ b/docs-src/html/class_painting_area_a79eb059829f27e8cdb3a54c5cd3d12c9_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::setLayerActive" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::setLayerActive",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The setLayerToActive method marks a specific layer as active."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="PaintingArea::slotActivate\lLayer",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html#a71ac281e0de263208d4a3b9de74258ec",tooltip="The slotActivateLayer method handles the event of selecting one layer as active."]; +} diff --git a/docs-src/html/class_painting_area_a7ae21fd031ee1c04f92e042e86be0a90_icgraph.dot b/docs-src/html/class_painting_area_a7ae21fd031ee1c04f92e042e86be0a90_icgraph.dot new file mode 100644 index 0000000..267b794 --- /dev/null +++ b/docs-src/html/class_painting_area_a7ae21fd031ee1c04f92e042e86be0a90_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getPolygonDataOfRealLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getPolygon\lDataOfRealLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; +} diff --git a/docs-src/html/class_painting_area_a88c7e759aa8375a56129791645f46ea5_cgraph.dot b/docs-src/html/class_painting_area_a88c7e759aa8375a56129791645f46ea5_cgraph.dot new file mode 100644 index 0000000..4323961 --- /dev/null +++ b/docs-src/html/class_painting_area_a88c7e759aa8375a56129791645f46ea5_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::open" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::open",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The open method is used for loading a picture into the current layer."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::loadImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#ae231800aba38c96074bbe9bb6e341d4e",tooltip="A function that loads and sclaes an image to the fitting dimensions."]; +} diff --git a/docs-src/html/class_painting_area_aa22e274b6094a9619f196cd7b49526b5_cgraph.dot b/docs-src/html/class_painting_area_aa22e274b6094a9619f196cd7b49526b5_cgraph.dot new file mode 100644 index 0000000..343ab56 --- /dev/null +++ b/docs-src/html/class_painting_area_aa22e274b6094a9619f196cd7b49526b5_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::mouseMoveEvent" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::mouseMoveEvent",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseMoved",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639",tooltip="A function managing the mouse moved event. Call this in child classes!"]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; +} diff --git a/docs-src/html/class_painting_area_abfe445f8d9b70ae42bfeda874127dd15_cgraph.dot b/docs-src/html/class_painting_area_abfe445f8d9b70ae42bfeda874127dd15_cgraph.dot new file mode 100644 index 0000000..a9f63bd --- /dev/null +++ b/docs-src/html/class_painting_area_abfe445f8d9b70ae42bfeda874127dd15_cgraph.dot @@ -0,0 +1,14 @@ +digraph "PaintingArea::mousePressEvent" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::mousePress\lEvent",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::onMouseLeft\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c",tooltip="A function managing the left click Pressed of a Mouse. Resetting the current draw...."]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliImage::calculateVisiblity",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2",tooltip="An abstract function that calculates the visiblity of the Image data if needed."]; + Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliTool::onMouseRight\lPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966",tooltip="A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on...."]; +} diff --git a/docs-src/html/class_painting_area_ac576f58aad03b4dcd47611b6a4b9abb4_icgraph.dot b/docs-src/html/class_painting_area_ac576f58aad03b4dcd47611b6a4b9abb4_icgraph.dot new file mode 100644 index 0000000..36587d6 --- /dev/null +++ b/docs-src/html/class_painting_area_ac576f58aad03b4dcd47611b6a4b9abb4_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getHeightOfActive" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getHeightOf\lActive",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The getHeightOfActive gets the vertical dimensions of the active layer."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; +} diff --git a/docs-src/html/class_painting_area_ac6d089f4357b22d9a9906fd4771de3e7_cgraph.dot b/docs-src/html/class_painting_area_ac6d089f4357b22d9a9906fd4771de3e7_cgraph.dot new file mode 100644 index 0000000..45a831c --- /dev/null +++ b/docs-src/html/class_painting_area_ac6d089f4357b22d9a9906fd4771de3e7_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::movePositionActive" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::movePosition\lActive",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The movePositionActive method moves the active layer to certain position."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::getIsDrawing",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a0020fad2e26315d5c4d96dbc95d1dceb",tooltip=" "]; +} diff --git a/docs-src/html/class_painting_area_acab11ad35d07e9081203d8217d2c0855_icgraph.dot b/docs-src/html/class_painting_area_acab11ad35d07e9081203d8217d2c0855_icgraph.dot new file mode 100644 index 0000000..bfcef17 --- /dev/null +++ b/docs-src/html/class_painting_area_acab11ad35d07e9081203d8217d2c0855_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getImageOfActiveLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getImageOf\lActiveLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliPhotoGui::UpdateGui",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4",tooltip=" "]; +} diff --git a/docs-src/html/class_painting_area_acff4563d006fda491469bd41778d07eb_cgraph.dot b/docs-src/html/class_painting_area_acff4563d006fda491469bd41778d07eb_cgraph.dot new file mode 100644 index 0000000..90a05ac --- /dev/null +++ b/docs-src/html/class_painting_area_acff4563d006fda491469bd41778d07eb_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::colorPickerSwapColors" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::colorPicker\lSwapColors",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The colorPickerSwitchColor swaps the primary color with the secondary drawing color."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker\l::swapColors",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#aec499265ae28ce1b54be88222e74292e",tooltip="A function switching primary and secondary color."]; +} diff --git a/docs-src/html/class_painting_area_ae05f6893fb44bfcb34018573a609cd1a_cgraph.dot b/docs-src/html/class_painting_area_ae05f6893fb44bfcb34018573a609cd1a_cgraph.dot new file mode 100644 index 0000000..d874bcc --- /dev/null +++ b/docs-src/html/class_painting_area_ae05f6893fb44bfcb34018573a609cd1a_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::moveActiveLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::moveActive\lLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The moveActiveLayer moves the active layer to a specific position in the layer stack."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTool::getIsDrawing",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html#a0020fad2e26315d5c4d96dbc95d1dceb",tooltip=" "]; +} diff --git a/docs-src/html/class_painting_area_ae261acaaa346610dfed489dbac17e789_cgraph.dot b/docs-src/html/class_painting_area_ae261acaaa346610dfed489dbac17e789_cgraph.dot new file mode 100644 index 0000000..1325336 --- /dev/null +++ b/docs-src/html/class_painting_area_ae261acaaa346610dfed489dbac17e789_cgraph.dot @@ -0,0 +1,12 @@ +digraph "PaintingArea::colorPickerSetSecondColor" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::colorPicker\lSetSecondColor",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliColorPicker\l::getSecondColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#a55568fbf5dc783f06284b7031ffe9415",tooltip="A function to read the secondary selected color."]; + Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliColorPicker\l::setSecondColor",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html#a86bf4a940e4a0e465e30cbdf28748931",tooltip="A function to set the secondary color."]; +} diff --git a/docs-src/html/class_painting_area_ae92b27dfd09573c224d2ae1958d3bead_icgraph.dot b/docs-src/html/class_painting_area_ae92b27dfd09573c224d2ae1958d3bead_icgraph.dot new file mode 100644 index 0000000..affd678 --- /dev/null +++ b/docs-src/html/class_painting_area_ae92b27dfd09573c224d2ae1958d3bead_icgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::getTypeOfImageRealLayer" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="PaintingArea::getTypeOfImage\lRealLayer",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; +} diff --git a/docs-src/html/class_painting_area_aeb5eb394b979ea90f2be9849fdda1774_cgraph.dot b/docs-src/html/class_painting_area_aeb5eb394b979ea90f2be9849fdda1774_cgraph.dot new file mode 100644 index 0000000..862e21e --- /dev/null +++ b/docs-src/html/class_painting_area_aeb5eb394b979ea90f2be9849fdda1774_cgraph.dot @@ -0,0 +1,10 @@ +digraph "PaintingArea::floodFill" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="PaintingArea::floodFill",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The floodFill method fills a the active layer with a given color."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliImage::drawPlain",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html#a6be622810dc2bc756054bb5769becb06",tooltip="A function that clears the whole image in a given Color."]; +} diff --git a/docs-src/html/class_unit_test-members.html b/docs-src/html/class_unit_test-members.html new file mode 100644 index 0000000..664b905 --- /dev/null +++ b/docs-src/html/class_unit_test-members.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
UnitTest Member List
+
+
+ +

This is the complete list of members for UnitTest, including all inherited members.

+ + + + + +
UnitTest()UnitTest
UnitTest()UnitTest
~UnitTest()UnitTest
~UnitTest()UnitTest
+
+ + + + diff --git a/docs-src/html/class_unit_test.html b/docs-src/html/class_unit_test.html new file mode 100644 index 0000000..74614ea --- /dev/null +++ b/docs-src/html/class_unit_test.html @@ -0,0 +1,202 @@ + + + + + + + +IntelliPhoto: UnitTest Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
UnitTest Class Reference
+
+
+
+Inheritance diagram for UnitTest:
+
+
+ +
+ + + + + + + + + + +

+Public Member Functions

 UnitTest ()
 
 ~UnitTest ()
 
 UnitTest ()
 
 ~UnitTest ()
 
+

Detailed Description

+
+

Definition at line 8 of file mainUnitTest.cpp.

+

Constructor & Destructor Documentation

+ +

◆ UnitTest() [1/2]

+ +
+
+ + + + + + + +
UnitTest::UnitTest ()
+
+ +

Definition at line 95 of file mainUnitTest.cpp.

+ +
+
+ +

◆ ~UnitTest() [1/2]

+ +
+
+ + + + + + + +
UnitTest::~UnitTest ()
+
+ +

Definition at line 108 of file mainUnitTest.cpp.

+ +
+
+ +

◆ UnitTest() [2/2]

+ +
+
+ + + + + + + +
UnitTest::UnitTest ()
+
+ +
+
+ +

◆ ~UnitTest() [2/2]

+ +
+
+ + + + + + + +
UnitTest::~UnitTest ()
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/docs-src/html/class_unit_test.js b/docs-src/html/class_unit_test.js new file mode 100644 index 0000000..0a29f02 --- /dev/null +++ b/docs-src/html/class_unit_test.js @@ -0,0 +1,7 @@ +var class_unit_test = +[ + [ "UnitTest", "class_unit_test.html#a67ddaff817b55a624741d32550052f4b", null ], + [ "~UnitTest", "class_unit_test.html#afa0bdd3e2ac33cd52e697406339a2edf", null ], + [ "UnitTest", "class_unit_test.html#a67ddaff817b55a624741d32550052f4b", null ], + [ "~UnitTest", "class_unit_test.html#afa0bdd3e2ac33cd52e697406339a2edf", null ] +]; \ No newline at end of file diff --git a/docs-src/html/class_unit_test.png b/docs-src/html/class_unit_test.png new file mode 100644 index 0000000000000000000000000000000000000000..452282e27bfcbbb13725921762e30e7c493b73e5 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^)<7Jcge?*lw@f`KCH?ajp8BvIBMZ#2=rpm9xpOT7C0ujN9qwJFLpq z?^^$Jb58l;Ki|%tIksifq$k1-@!So;<~LG59yY%rT6(zr#`>Q&kqwT%VhKKzStTx~ zFdqBDAL&`t)m@+8&^PaNTSQ%k?Ar5_<~wBm-g4S3eBBM*=$Z*hyI2h095$2wafL5- z@14`t$KtNuNtm469=vDj_k{hMpP5N>t^RIW+jn>Ke%6NXU)&=-KfPq{;!!fH**EJS QFo+mDUHx3vIVCg!055T^6951J literal 0 HcmV?d00001 diff --git a/docs-src/html/classes.html b/docs-src/html/classes.html new file mode 100644 index 0000000..3aa5a33 --- /dev/null +++ b/docs-src/html/classes.html @@ -0,0 +1,145 @@ + + + + + + + +IntelliPhoto: Class Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
i | l | p | t | u
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  i  
+
IntelliRenderSettings   IntelliToolPen   
  p  
+
IntelliShapedImage   IntelliToolPlainTool   
IntelliColorPicker   IntelliTool   IntelliToolPolygon   PaintingArea   
IntelliImage   IntelliToolCircle   IntelliToolRectangle   
  t  
+
IntelliInputDialog   IntelliToolFloodFill   IntelliToolsettings   
IntelliPhotoGui   IntelliToolGradient   
  l  
+
Triangle   
IntelliRasterImage   IntelliToolLine   
  u  
+
LayerObject   
UnitTest   
+
i | l | p | t | u
+
+
+ + + + diff --git a/docs-src/html/closed.png b/docs-src/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..b3364d8341ade9bf34851a07b58bda4a1d8179bb GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{Vo}Mm_Ar*{o@1EvuFyLXi$bPn{ zq3D6bRu=`=Lw-}HY$*QpLphwGG1p$MWzB?>kD4azFNl90{@(8tuk*^T;FqzMQNgQu&X%Q~loCIHHSEYSb} literal 0 HcmV?d00001 diff --git a/docs-src/html/dir_000000_000001.html b/docs-src/html/dir_000000_000001.html new file mode 100644 index 0000000..a7f0093 --- /dev/null +++ b/docs-src/html/dir_000000_000001.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src -> GUI Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

src → GUI Relation

File in srcIncludes file in src/GUI
main.cppIntelliPhotoGui.h
+
+ + + + diff --git a/docs-src/html/dir_000001_000002.html b/docs-src/html/dir_000001_000002.html new file mode 100644 index 0000000..db127b7 --- /dev/null +++ b/docs-src/html/dir_000001_000002.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src -> GUI Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

src → GUI Relation

File in intelliphoto/srcIncludes file in intelliphoto/src/GUI
main.cppIntelliPhotoGui.h
+
+ + + + diff --git a/docs-src/html/dir_000001_000005.html b/docs-src/html/dir_000001_000005.html new file mode 100644 index 0000000..ca025a1 --- /dev/null +++ b/docs-src/html/dir_000001_000005.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src/GUI -> Layer Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

GUI → Layer Relation

File in src/GUIIncludes file in src/Layer
IntelliPhotoGui.cppPaintingArea.h
+
+ + + + diff --git a/docs-src/html/dir_000002_000003.html b/docs-src/html/dir_000002_000003.html new file mode 100644 index 0000000..a5fe18e --- /dev/null +++ b/docs-src/html/dir_000002_000003.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src/Image -> IntelliHelper Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Image → IntelliHelper Relation

File in src/ImageIncludes file in src/IntelliHelper
IntelliShapedImage.cppIntelliHelper.h
+
+ + + + diff --git a/docs-src/html/dir_000002_000006.html b/docs-src/html/dir_000002_000006.html new file mode 100644 index 0000000..1d9a22f --- /dev/null +++ b/docs-src/html/dir_000002_000006.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/GUI -> Layer Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

GUI → Layer Relation

File in intelliphoto/src/GUIIncludes file in intelliphoto/src/Layer
IntelliPhotoGui.cppPaintingArea.h
+
+ + + + diff --git a/docs-src/html/dir_000003_000004.html b/docs-src/html/dir_000003_000004.html new file mode 100644 index 0000000..5e8a2ec --- /dev/null +++ b/docs-src/html/dir_000003_000004.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Image -> IntelliHelper Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Image → IntelliHelper Relation

File in intelliphoto/src/ImageIncludes file in intelliphoto/src/IntelliHelper
IntelliImage.hIntelliRenderSettings.h
IntelliImage.hIntelliTriangulation.h
IntelliShapedImage.cppIntelliTriangulation.h
+
+ + + + diff --git a/docs-src/html/dir_000004_000003.html b/docs-src/html/dir_000004_000003.html new file mode 100644 index 0000000..d810518 --- /dev/null +++ b/docs-src/html/dir_000004_000003.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src/Tool -> IntelliHelper Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Tool → IntelliHelper Relation

File in src/ToolIncludes file in src/IntelliHelper
IntelliColorPicker.cppIntelliColorPicker.h
IntelliTool.hIntelliColorPicker.h
+
+ + + + diff --git a/docs-src/html/dir_000004_000005.html b/docs-src/html/dir_000004_000005.html new file mode 100644 index 0000000..eeb3369 --- /dev/null +++ b/docs-src/html/dir_000004_000005.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src/Tool -> Layer Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/docs-src/html/dir_000005_000002.html b/docs-src/html/dir_000005_000002.html new file mode 100644 index 0000000..47fa0a6 --- /dev/null +++ b/docs-src/html/dir_000005_000002.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src/Layer -> Image Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs-src/html/dir_000005_000003.html b/docs-src/html/dir_000005_000003.html new file mode 100644 index 0000000..69be38a --- /dev/null +++ b/docs-src/html/dir_000005_000003.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: src/Layer -> IntelliHelper Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.4 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Layer → IntelliHelper Relation

File in src/LayerIncludes file in src/IntelliHelper
PaintingArea.hIntelliColorPicker.h
+
+ + + + diff --git a/docs-src/html/dir_000005_000004.html b/docs-src/html/dir_000005_000004.html new file mode 100644 index 0000000..91c6690 --- /dev/null +++ b/docs-src/html/dir_000005_000004.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Tool -> IntelliHelper Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Tool → IntelliHelper Relation

File in intelliphoto/src/ToolIncludes file in intelliphoto/src/IntelliHelper
IntelliColorPicker.cppIntelliColorPicker.h
IntelliTool.hIntelliColorPicker.h
IntelliTool.hIntelliToolsettings.h
IntelliToolPolygon.hIntelliTriangulation.h
+
+ + + + diff --git a/docs-src/html/dir_000005_000006.html b/docs-src/html/dir_000005_000006.html new file mode 100644 index 0000000..787fe4e --- /dev/null +++ b/docs-src/html/dir_000005_000006.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Tool -> Layer Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs-src/html/dir_000006_000002.html b/docs-src/html/dir_000006_000002.html new file mode 100644 index 0000000..faf776d --- /dev/null +++ b/docs-src/html/dir_000006_000002.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Layer -> GUI Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Layer → GUI Relation

File in intelliphoto/src/LayerIncludes file in intelliphoto/src/GUI
PaintingArea.hIntelliPhotoGui.h
+
+ + + + diff --git a/docs-src/html/dir_000006_000003.html b/docs-src/html/dir_000006_000003.html new file mode 100644 index 0000000..3614e26 --- /dev/null +++ b/docs-src/html/dir_000006_000003.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Layer -> Image Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/docs-src/html/dir_000006_000004.html b/docs-src/html/dir_000006_000004.html new file mode 100644 index 0000000..ce51023 --- /dev/null +++ b/docs-src/html/dir_000006_000004.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Layer -> IntelliHelper Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+

Layer → IntelliHelper Relation

File in intelliphoto/src/LayerIncludes file in intelliphoto/src/IntelliHelper
PaintingArea.hIntelliColorPicker.h
+
+ + + + diff --git a/docs-src/html/dir_000006_000005.html b/docs-src/html/dir_000006_000005.html new file mode 100644 index 0000000..ab452cc --- /dev/null +++ b/docs-src/html/dir_000006_000005.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Layer -> Tool Relation + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.html b/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.html new file mode 100644 index 0000000..38ab335 --- /dev/null +++ b/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: src/Layer Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Layer Directory Reference
+
+
+ + + + + + +

+Files

file  PaintingArea.cpp [code]
 
file  PaintingArea.h [code]
 
+
+
+ + + + diff --git a/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.js b/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.js new file mode 100644 index 0000000..d438ee7 --- /dev/null +++ b/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f.js @@ -0,0 +1,8 @@ +var dir_13830bfc3dd6736fe878600c9081919f = +[ + [ "PaintingArea.cpp", "_painting_area_8cpp.html", null ], + [ "PaintingArea.h", "_painting_area_8h.html", [ + [ "LayerObject", "struct_layer_object.html", "struct_layer_object" ], + [ "PaintingArea", "class_painting_area.html", "class_painting_area" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f_dep.dot b/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f_dep.dot new file mode 100644 index 0000000..1ae7e6b --- /dev/null +++ b/docs-src/html/dir_13830bfc3dd6736fe878600c9081919f_dep.dot @@ -0,0 +1,18 @@ +digraph "src/Layer" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_68267d1309a1af8e8297ef4c3efbcdba { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_68267d1309a1af8e8297ef4c3efbcdba.html"] + dir_13830bfc3dd6736fe878600c9081919f [shape=box, label="Layer", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_13830bfc3dd6736fe878600c9081919f.html"]; + } + dir_fdbdd9841f9a730f284bb666ff3d8cfe [shape=box label="Image" URL="dir_fdbdd9841f9a730f284bb666ff3d8cfe.html"]; + dir_858355f3357c73763e566ff49d1e6a7a [shape=box label="Tool" URL="dir_858355f3357c73763e566ff49d1e6a7a.html"]; + dir_8de6078cba2a961961818cf80b28fd4f [shape=box label="IntelliHelper" URL="dir_8de6078cba2a961961818cf80b28fd4f.html"]; + dir_fdbdd9841f9a730f284bb666ff3d8cfe->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="1", labeldistance=1.5 headhref="dir_000002_000003.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_fdbdd9841f9a730f284bb666ff3d8cfe [headlabel="5", labeldistance=1.5 headhref="dir_000005_000002.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_858355f3357c73763e566ff49d1e6a7a [headlabel="4", labeldistance=1.5 headhref="dir_000005_000004.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="1", labeldistance=1.5 headhref="dir_000005_000003.html"]; + dir_858355f3357c73763e566ff49d1e6a7a->dir_13830bfc3dd6736fe878600c9081919f [headlabel="4", labeldistance=1.5 headhref="dir_000004_000005.html"]; + dir_858355f3357c73763e566ff49d1e6a7a->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="2", labeldistance=1.5 headhref="dir_000004_000003.html"]; +} diff --git a/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.html b/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.html new file mode 100644 index 0000000..29473ac --- /dev/null +++ b/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.html @@ -0,0 +1,113 @@ + + + + + + + +IntelliPhoto: src/GUI Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
GUI Directory Reference
+
+
+ + + + + + + + + + +

+Files

file  IntelliInputDialog.cpp [code]
 
file  IntelliInputDialog.h [code]
 
file  IntelliPhotoGui.cpp [code]
 
file  IntelliPhotoGui.h [code]
 
+
+
+ + + + diff --git a/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.js b/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.js new file mode 100644 index 0000000..f2f26b7 --- /dev/null +++ b/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5.js @@ -0,0 +1,11 @@ +var dir_4e4e2e75df7fa6971448b424c011c8b5 = +[ + [ "IntelliInputDialog.cpp", "_intelli_input_dialog_8cpp.html", null ], + [ "IntelliInputDialog.h", "_intelli_input_dialog_8h.html", [ + [ "IntelliInputDialog", "class_intelli_input_dialog.html", "class_intelli_input_dialog" ] + ] ], + [ "IntelliPhotoGui.cpp", "_intelli_photo_gui_8cpp.html", null ], + [ "IntelliPhotoGui.h", "_intelli_photo_gui_8h.html", [ + [ "IntelliPhotoGui", "class_intelli_photo_gui.html", "class_intelli_photo_gui" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5_dep.dot b/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5_dep.dot new file mode 100644 index 0000000..ba0fbf9 --- /dev/null +++ b/docs-src/html/dir_4e4e2e75df7fa6971448b424c011c8b5_dep.dot @@ -0,0 +1,11 @@ +digraph "src/GUI" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_68267d1309a1af8e8297ef4c3efbcdba { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_68267d1309a1af8e8297ef4c3efbcdba.html"] + dir_4e4e2e75df7fa6971448b424c011c8b5 [shape=box, label="GUI", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_4e4e2e75df7fa6971448b424c011c8b5.html"]; + } + dir_13830bfc3dd6736fe878600c9081919f [shape=box label="Layer" URL="dir_13830bfc3dd6736fe878600c9081919f.html"]; + dir_4e4e2e75df7fa6971448b424c011c8b5->dir_13830bfc3dd6736fe878600c9081919f [headlabel="1", labeldistance=1.5 headhref="dir_000001_000005.html"]; +} diff --git a/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.html b/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.html new file mode 100644 index 0000000..2047ef9 --- /dev/null +++ b/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.html @@ -0,0 +1,121 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Image Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Image Directory Reference
+
+ +
+ + + + diff --git a/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.js b/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.js new file mode 100644 index 0000000..ee724b4 --- /dev/null +++ b/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2.js @@ -0,0 +1,15 @@ +var dir_544f9dcb748f922e4bb3be2540380bf2 = +[ + [ "IntelliImage.cpp", "_intelli_image_8cpp.html", null ], + [ "IntelliImage.h", "_intelli_image_8h.html", [ + [ "IntelliImage", "class_intelli_image.html", "class_intelli_image" ] + ] ], + [ "IntelliRasterImage.cpp", "_intelli_raster_image_8cpp.html", null ], + [ "IntelliRasterImage.h", "_intelli_raster_image_8h.html", [ + [ "IntelliRasterImage", "class_intelli_raster_image.html", "class_intelli_raster_image" ] + ] ], + [ "IntelliShapedImage.cpp", "_intelli_shaped_image_8cpp.html", null ], + [ "IntelliShapedImage.h", "_intelli_shaped_image_8h.html", [ + [ "IntelliShapedImage", "class_intelli_shaped_image.html", "class_intelli_shaped_image" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2_dep.dot b/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2_dep.dot new file mode 100644 index 0000000..0a903f5 --- /dev/null +++ b/docs-src/html/dir_544f9dcb748f922e4bb3be2540380bf2_dep.dot @@ -0,0 +1,11 @@ +digraph "intelliphoto/src/Image" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_83a4347d11f2ba6343d546ab133722d2 { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_83a4347d11f2ba6343d546ab133722d2.html"] + dir_544f9dcb748f922e4bb3be2540380bf2 [shape=box, label="Image", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_544f9dcb748f922e4bb3be2540380bf2.html"]; + } + dir_f50aa5156fe016a259583c412dbf440c [shape=box label="IntelliHelper" URL="dir_f50aa5156fe016a259583c412dbf440c.html"]; + dir_544f9dcb748f922e4bb3be2540380bf2->dir_f50aa5156fe016a259583c412dbf440c [headlabel="3", labeldistance=1.5 headhref="dir_000003_000004.html"]; +} diff --git a/docs-src/html/dir_5dabb14988a75c922e285f444641a133.html b/docs-src/html/dir_5dabb14988a75c922e285f444641a133.html new file mode 100644 index 0000000..84c5623 --- /dev/null +++ b/docs-src/html/dir_5dabb14988a75c922e285f444641a133.html @@ -0,0 +1,113 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/GUI Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
GUI Directory Reference
+
+
+ + + + + + +

+Files

file  IntelliPhotoGui.cpp [code]
 
file  IntelliPhotoGui.h [code]
 
+
+
+ + + + diff --git a/docs-src/html/dir_5dabb14988a75c922e285f444641a133.js b/docs-src/html/dir_5dabb14988a75c922e285f444641a133.js new file mode 100644 index 0000000..95b2021 --- /dev/null +++ b/docs-src/html/dir_5dabb14988a75c922e285f444641a133.js @@ -0,0 +1,7 @@ +var dir_5dabb14988a75c922e285f444641a133 = +[ + [ "IntelliPhotoGui.cpp", "_intelli_photo_gui_8cpp.html", null ], + [ "IntelliPhotoGui.h", "_intelli_photo_gui_8h.html", [ + [ "IntelliPhotoGui", "class_intelli_photo_gui.html", "class_intelli_photo_gui" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_5dabb14988a75c922e285f444641a133_dep.dot b/docs-src/html/dir_5dabb14988a75c922e285f444641a133_dep.dot new file mode 100644 index 0000000..0ccb450 --- /dev/null +++ b/docs-src/html/dir_5dabb14988a75c922e285f444641a133_dep.dot @@ -0,0 +1,12 @@ +digraph "intelliphoto/src/GUI" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_83a4347d11f2ba6343d546ab133722d2 { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_83a4347d11f2ba6343d546ab133722d2.html"] + dir_5dabb14988a75c922e285f444641a133 [shape=box, label="GUI", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_5dabb14988a75c922e285f444641a133.html"]; + } + dir_e6d96184223881d115efa44ca0dfa844 [shape=box label="Layer" URL="dir_e6d96184223881d115efa44ca0dfa844.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_5dabb14988a75c922e285f444641a133 [headlabel="1", labeldistance=1.5 headhref="dir_000006_000002.html"]; + dir_5dabb14988a75c922e285f444641a133->dir_e6d96184223881d115efa44ca0dfa844 [headlabel="1", labeldistance=1.5 headhref="dir_000002_000006.html"]; +} diff --git a/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..1df2630 --- /dev/null +++ b/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,124 @@ + + + + + + + +IntelliPhoto: src Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + +

+Directories

directory  GUI
 
directory  Image
 
directory  IntelliHelper
 
directory  Layer
 
directory  Tool
 
+ + + + + + + +

+Files

file  main.cpp [code]
 
file  mainUnitTest.cpp [code]
 
file  tst_unittest.cpp [code]
 
+
+
+ + + + diff --git a/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..64c14e9 --- /dev/null +++ b/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,15 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "GUI", "dir_4e4e2e75df7fa6971448b424c011c8b5.html", "dir_4e4e2e75df7fa6971448b424c011c8b5" ], + [ "Image", "dir_fdbdd9841f9a730f284bb666ff3d8cfe.html", "dir_fdbdd9841f9a730f284bb666ff3d8cfe" ], + [ "IntelliHelper", "dir_8de6078cba2a961961818cf80b28fd4f.html", "dir_8de6078cba2a961961818cf80b28fd4f" ], + [ "Layer", "dir_13830bfc3dd6736fe878600c9081919f.html", "dir_13830bfc3dd6736fe878600c9081919f" ], + [ "Tool", "dir_858355f3357c73763e566ff49d1e6a7a.html", "dir_858355f3357c73763e566ff49d1e6a7a" ], + [ "main.cpp", "main_8cpp.html", "main_8cpp" ], + [ "mainUnitTest.cpp", "main_unit_test_8cpp.html", [ + [ "UnitTest", "class_unit_test.html", "class_unit_test" ] + ] ], + [ "tst_unittest.cpp", "tst__unittest_8cpp.html", [ + [ "UnitTest", "class_unit_test.html", "class_unit_test" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.dot b/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.dot new file mode 100644 index 0000000..7a39786 --- /dev/null +++ b/docs-src/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.dot @@ -0,0 +1,22 @@ +digraph "src" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_68267d1309a1af8e8297ef4c3efbcdba { + graph [ bgcolor="#eeeeff", pencolor="black", label="" URL="dir_68267d1309a1af8e8297ef4c3efbcdba.html"]; + dir_68267d1309a1af8e8297ef4c3efbcdba [shape=plaintext label="src"]; + dir_4e4e2e75df7fa6971448b424c011c8b5 [shape=box label="GUI" color="black" fillcolor="white" style="filled" URL="dir_4e4e2e75df7fa6971448b424c011c8b5.html"]; + dir_fdbdd9841f9a730f284bb666ff3d8cfe [shape=box label="Image" color="black" fillcolor="white" style="filled" URL="dir_fdbdd9841f9a730f284bb666ff3d8cfe.html"]; + dir_8de6078cba2a961961818cf80b28fd4f [shape=box label="IntelliHelper" color="black" fillcolor="white" style="filled" URL="dir_8de6078cba2a961961818cf80b28fd4f.html"]; + dir_13830bfc3dd6736fe878600c9081919f [shape=box label="Layer" color="black" fillcolor="white" style="filled" URL="dir_13830bfc3dd6736fe878600c9081919f.html"]; + dir_858355f3357c73763e566ff49d1e6a7a [shape=box label="Tool" color="black" fillcolor="white" style="filled" URL="dir_858355f3357c73763e566ff49d1e6a7a.html"]; + } + dir_68267d1309a1af8e8297ef4c3efbcdba->dir_4e4e2e75df7fa6971448b424c011c8b5 [headlabel="1", labeldistance=1.5 headhref="dir_000000_000001.html"]; + dir_fdbdd9841f9a730f284bb666ff3d8cfe->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="1", labeldistance=1.5 headhref="dir_000002_000003.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_fdbdd9841f9a730f284bb666ff3d8cfe [headlabel="5", labeldistance=1.5 headhref="dir_000005_000002.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_858355f3357c73763e566ff49d1e6a7a [headlabel="4", labeldistance=1.5 headhref="dir_000005_000004.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="1", labeldistance=1.5 headhref="dir_000005_000003.html"]; + dir_858355f3357c73763e566ff49d1e6a7a->dir_13830bfc3dd6736fe878600c9081919f [headlabel="4", labeldistance=1.5 headhref="dir_000004_000005.html"]; + dir_858355f3357c73763e566ff49d1e6a7a->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="2", labeldistance=1.5 headhref="dir_000004_000003.html"]; + dir_4e4e2e75df7fa6971448b424c011c8b5->dir_13830bfc3dd6736fe878600c9081919f [headlabel="1", labeldistance=1.5 headhref="dir_000001_000005.html"]; +} diff --git a/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.html b/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.html new file mode 100644 index 0000000..eaac0f5 --- /dev/null +++ b/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.html @@ -0,0 +1,124 @@ + + + + + + + +IntelliPhoto: intelliphoto/src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + +

+Directories

directory  GUI
 
directory  Image
 
directory  IntelliHelper
 
directory  Layer
 
directory  Tool
 
+ + + +

+Files

file  main.cpp [code]
 
+
+
+ + + + diff --git a/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.js b/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.js new file mode 100644 index 0000000..1b4702f --- /dev/null +++ b/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2.js @@ -0,0 +1,9 @@ +var dir_83a4347d11f2ba6343d546ab133722d2 = +[ + [ "GUI", "dir_5dabb14988a75c922e285f444641a133.html", "dir_5dabb14988a75c922e285f444641a133" ], + [ "Image", "dir_544f9dcb748f922e4bb3be2540380bf2.html", "dir_544f9dcb748f922e4bb3be2540380bf2" ], + [ "IntelliHelper", "dir_f50aa5156fe016a259583c412dbf440c.html", "dir_f50aa5156fe016a259583c412dbf440c" ], + [ "Layer", "dir_e6d96184223881d115efa44ca0dfa844.html", "dir_e6d96184223881d115efa44ca0dfa844" ], + [ "Tool", "dir_941490de56ac122cf77df9922cbcc750.html", "dir_941490de56ac122cf77df9922cbcc750" ], + [ "main.cpp", "main_8cpp.html", "main_8cpp" ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2_dep.dot b/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2_dep.dot new file mode 100644 index 0000000..86cdd37 --- /dev/null +++ b/docs-src/html/dir_83a4347d11f2ba6343d546ab133722d2_dep.dot @@ -0,0 +1,25 @@ +digraph "intelliphoto/src" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_8db5f55022e7670536cbc9a6a1d6f01c { + graph [ bgcolor="#ddddee", pencolor="black", label="intelliphoto" fontname="Helvetica", fontsize="10", URL="dir_8db5f55022e7670536cbc9a6a1d6f01c.html"] + subgraph clusterdir_83a4347d11f2ba6343d546ab133722d2 { + graph [ bgcolor="#eeeeff", pencolor="black", label="" URL="dir_83a4347d11f2ba6343d546ab133722d2.html"]; + dir_83a4347d11f2ba6343d546ab133722d2 [shape=plaintext label="src"]; + dir_5dabb14988a75c922e285f444641a133 [shape=box label="GUI" color="black" fillcolor="white" style="filled" URL="dir_5dabb14988a75c922e285f444641a133.html"]; + dir_544f9dcb748f922e4bb3be2540380bf2 [shape=box label="Image" color="black" fillcolor="white" style="filled" URL="dir_544f9dcb748f922e4bb3be2540380bf2.html"]; + dir_f50aa5156fe016a259583c412dbf440c [shape=box label="IntelliHelper" color="black" fillcolor="white" style="filled" URL="dir_f50aa5156fe016a259583c412dbf440c.html"]; + dir_e6d96184223881d115efa44ca0dfa844 [shape=box label="Layer" color="black" fillcolor="white" style="filled" URL="dir_e6d96184223881d115efa44ca0dfa844.html"]; + dir_941490de56ac122cf77df9922cbcc750 [shape=box label="Tool" color="black" fillcolor="white" style="filled" URL="dir_941490de56ac122cf77df9922cbcc750.html"]; + } + } + dir_544f9dcb748f922e4bb3be2540380bf2->dir_f50aa5156fe016a259583c412dbf440c [headlabel="3", labeldistance=1.5 headhref="dir_000003_000004.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_544f9dcb748f922e4bb3be2540380bf2 [headlabel="5", labeldistance=1.5 headhref="dir_000006_000003.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_f50aa5156fe016a259583c412dbf440c [headlabel="1", labeldistance=1.5 headhref="dir_000006_000004.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_5dabb14988a75c922e285f444641a133 [headlabel="1", labeldistance=1.5 headhref="dir_000006_000002.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_941490de56ac122cf77df9922cbcc750 [headlabel="8", labeldistance=1.5 headhref="dir_000006_000005.html"]; + dir_5dabb14988a75c922e285f444641a133->dir_e6d96184223881d115efa44ca0dfa844 [headlabel="1", labeldistance=1.5 headhref="dir_000002_000006.html"]; + dir_941490de56ac122cf77df9922cbcc750->dir_e6d96184223881d115efa44ca0dfa844 [headlabel="8", labeldistance=1.5 headhref="dir_000005_000006.html"]; + dir_941490de56ac122cf77df9922cbcc750->dir_f50aa5156fe016a259583c412dbf440c [headlabel="4", labeldistance=1.5 headhref="dir_000005_000004.html"]; +} diff --git a/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.html b/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.html new file mode 100644 index 0000000..a5f22bb --- /dev/null +++ b/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.html @@ -0,0 +1,141 @@ + + + + + + + +IntelliPhoto: src/Tool Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tool Directory Reference
+
+ +
+ + + + diff --git a/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.js b/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.js new file mode 100644 index 0000000..73f5795 --- /dev/null +++ b/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a.js @@ -0,0 +1,39 @@ +var dir_858355f3357c73763e566ff49d1e6a7a = +[ + [ "IntelliTool.cpp", "_intelli_tool_8cpp.html", null ], + [ "IntelliTool.h", "_intelli_tool_8h.html", [ + [ "IntelliTool", "class_intelli_tool.html", "class_intelli_tool" ] + ] ], + [ "IntelliToolCircle.cpp", "_intelli_tool_circle_8cpp.html", null ], + [ "IntelliToolCircle.h", "_intelli_tool_circle_8h.html", [ + [ "IntelliToolCircle", "class_intelli_tool_circle.html", "class_intelli_tool_circle" ] + ] ], + [ "IntelliToolFloodFill.cpp", "_intelli_tool_flood_fill_8cpp.html", null ], + [ "IntelliToolFloodFill.h", "_intelli_tool_flood_fill_8h.html", [ + [ "IntelliToolFloodFill", "class_intelli_tool_flood_fill.html", "class_intelli_tool_flood_fill" ] + ] ], + [ "IntelliToolGradient.cpp", "_intelli_tool_gradient_8cpp.html", null ], + [ "IntelliToolGradient.h", "_intelli_tool_gradient_8h.html", [ + [ "IntelliToolGradient", "class_intelli_tool_gradient.html", "class_intelli_tool_gradient" ] + ] ], + [ "IntelliToolLine.cpp", "_intelli_tool_line_8cpp.html", null ], + [ "IntelliToolLine.h", "_intelli_tool_line_8h.html", [ + [ "IntelliToolLine", "class_intelli_tool_line.html", "class_intelli_tool_line" ] + ] ], + [ "IntelliToolPen.cpp", "_intelli_tool_pen_8cpp.html", null ], + [ "IntelliToolPen.h", "_intelli_tool_pen_8h.html", [ + [ "IntelliToolPen", "class_intelli_tool_pen.html", "class_intelli_tool_pen" ] + ] ], + [ "IntelliToolPlain.cpp", "_intelli_tool_plain_8cpp.html", null ], + [ "IntelliToolPlain.h", "_intelli_tool_plain_8h.html", [ + [ "IntelliToolPlainTool", "class_intelli_tool_plain_tool.html", "class_intelli_tool_plain_tool" ] + ] ], + [ "IntelliToolPolygon.cpp", "_intelli_tool_polygon_8cpp.html", null ], + [ "IntelliToolPolygon.h", "_intelli_tool_polygon_8h.html", [ + [ "IntelliToolPolygon", "class_intelli_tool_polygon.html", "class_intelli_tool_polygon" ] + ] ], + [ "IntelliToolRectangle.cpp", "_intelli_tool_rectangle_8cpp.html", null ], + [ "IntelliToolRectangle.h", "_intelli_tool_rectangle_8h.html", [ + [ "IntelliToolRectangle", "class_intelli_tool_rectangle.html", "class_intelli_tool_rectangle" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a_dep.dot b/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a_dep.dot new file mode 100644 index 0000000..7b3fd36 --- /dev/null +++ b/docs-src/html/dir_858355f3357c73763e566ff49d1e6a7a_dep.dot @@ -0,0 +1,15 @@ +digraph "src/Tool" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_68267d1309a1af8e8297ef4c3efbcdba { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_68267d1309a1af8e8297ef4c3efbcdba.html"] + dir_858355f3357c73763e566ff49d1e6a7a [shape=box, label="Tool", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_858355f3357c73763e566ff49d1e6a7a.html"]; + } + dir_13830bfc3dd6736fe878600c9081919f [shape=box label="Layer" URL="dir_13830bfc3dd6736fe878600c9081919f.html"]; + dir_8de6078cba2a961961818cf80b28fd4f [shape=box label="IntelliHelper" URL="dir_8de6078cba2a961961818cf80b28fd4f.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_858355f3357c73763e566ff49d1e6a7a [headlabel="4", labeldistance=1.5 headhref="dir_000005_000004.html"]; + dir_13830bfc3dd6736fe878600c9081919f->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="1", labeldistance=1.5 headhref="dir_000005_000003.html"]; + dir_858355f3357c73763e566ff49d1e6a7a->dir_13830bfc3dd6736fe878600c9081919f [headlabel="4", labeldistance=1.5 headhref="dir_000004_000005.html"]; + dir_858355f3357c73763e566ff49d1e6a7a->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="2", labeldistance=1.5 headhref="dir_000004_000003.html"]; +} diff --git a/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.html b/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.html new file mode 100644 index 0000000..feccf2d --- /dev/null +++ b/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.html @@ -0,0 +1,111 @@ + + + + + + + +IntelliPhoto: intelliphoto Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
intelliphoto Directory Reference
+
+
+ + + + +

+Directories

directory  src
 
+
+
+ + + + diff --git a/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.js b/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.js new file mode 100644 index 0000000..ba36692 --- /dev/null +++ b/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c.js @@ -0,0 +1,4 @@ +var dir_8db5f55022e7670536cbc9a6a1d6f01c = +[ + [ "src", "dir_83a4347d11f2ba6343d546ab133722d2.html", "dir_83a4347d11f2ba6343d546ab133722d2" ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c_dep.dot b/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c_dep.dot new file mode 100644 index 0000000..35e43de --- /dev/null +++ b/docs-src/html/dir_8db5f55022e7670536cbc9a6a1d6f01c_dep.dot @@ -0,0 +1,10 @@ +digraph "intelliphoto" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_8db5f55022e7670536cbc9a6a1d6f01c { + graph [ bgcolor="#eeeeff", pencolor="black", label="" URL="dir_8db5f55022e7670536cbc9a6a1d6f01c.html"]; + dir_8db5f55022e7670536cbc9a6a1d6f01c [shape=plaintext label="intelliphoto"]; + dir_83a4347d11f2ba6343d546ab133722d2 [shape=box label="src" color="red" fillcolor="white" style="filled" URL="dir_83a4347d11f2ba6343d546ab133722d2.html"]; + } +} diff --git a/docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.html b/docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.html new file mode 100644 index 0000000..603b627 --- /dev/null +++ b/docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.html @@ -0,0 +1,125 @@ + + + + + + + +IntelliPhoto: src/IntelliHelper Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliHelper Directory Reference
+
+ +
+ + + + diff --git a/docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.js b/docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.js new file mode 100644 index 0000000..f9f1ee4 --- /dev/null +++ b/docs-src/html/dir_8de6078cba2a961961818cf80b28fd4f.js @@ -0,0 +1,19 @@ +var dir_8de6078cba2a961961818cf80b28fd4f = +[ + [ "IntelliColorPicker.cpp", "_intelli_color_picker_8cpp.html", null ], + [ "IntelliColorPicker.h", "_intelli_color_picker_8h.html", [ + [ "IntelliColorPicker", "class_intelli_color_picker.html", "class_intelli_color_picker" ] + ] ], + [ "IntelliDatamanager.cpp", "_intelli_datamanager_8cpp.html", null ], + [ "IntelliDatamanager.h", "_intelli_datamanager_8h.html", "_intelli_datamanager_8h" ], + [ "IntelliRenderSettings.cpp", "_intelli_render_settings_8cpp.html", null ], + [ "IntelliRenderSettings.h", "_intelli_render_settings_8h.html", [ + [ "IntelliRenderSettings", "class_intelli_render_settings.html", "class_intelli_render_settings" ] + ] ], + [ "IntelliToolsettings.cpp", "_intelli_toolsettings_8cpp.html", null ], + [ "IntelliToolsettings.h", "_intelli_toolsettings_8h.html", [ + [ "IntelliToolsettings", "class_intelli_toolsettings.html", "class_intelli_toolsettings" ] + ] ], + [ "IntelliTriangulation.cpp", "_intelli_triangulation_8cpp.html", "_intelli_triangulation_8cpp" ], + [ "IntelliTriangulation.h", "_intelli_triangulation_8h.html", "_intelli_triangulation_8h" ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_941490de56ac122cf77df9922cbcc750.html b/docs-src/html/dir_941490de56ac122cf77df9922cbcc750.html new file mode 100644 index 0000000..5ea229b --- /dev/null +++ b/docs-src/html/dir_941490de56ac122cf77df9922cbcc750.html @@ -0,0 +1,143 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Tool Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tool Directory Reference
+
+ +
+ + + + diff --git a/docs-src/html/dir_941490de56ac122cf77df9922cbcc750.js b/docs-src/html/dir_941490de56ac122cf77df9922cbcc750.js new file mode 100644 index 0000000..763beb5 --- /dev/null +++ b/docs-src/html/dir_941490de56ac122cf77df9922cbcc750.js @@ -0,0 +1,36 @@ +var dir_941490de56ac122cf77df9922cbcc750 = +[ + [ "IntelliColorPicker.cpp", "_tool_2_intelli_color_picker_8cpp.html", null ], + [ "IntelliTool.cpp", "_intelli_tool_8cpp.html", null ], + [ "IntelliTool.h", "_intelli_tool_8h.html", [ + [ "IntelliTool", "class_intelli_tool.html", "class_intelli_tool" ] + ] ], + [ "IntelliToolCircle.cpp", "_intelli_tool_circle_8cpp.html", null ], + [ "IntelliToolCircle.h", "_intelli_tool_circle_8h.html", [ + [ "IntelliToolCircle", "class_intelli_tool_circle.html", "class_intelli_tool_circle" ] + ] ], + [ "IntelliToolFloodFill.cpp", "_intelli_tool_flood_fill_8cpp.html", null ], + [ "IntelliToolFloodFill.h", "_intelli_tool_flood_fill_8h.html", [ + [ "IntelliToolFloodFill", "class_intelli_tool_flood_fill.html", "class_intelli_tool_flood_fill" ] + ] ], + [ "IntelliToolLine.cpp", "_intelli_tool_line_8cpp.html", null ], + [ "IntelliToolLine.h", "_intelli_tool_line_8h.html", [ + [ "IntelliToolLine", "class_intelli_tool_line.html", "class_intelli_tool_line" ] + ] ], + [ "IntelliToolPen.cpp", "_intelli_tool_pen_8cpp.html", null ], + [ "IntelliToolPen.h", "_intelli_tool_pen_8h.html", [ + [ "IntelliToolPen", "class_intelli_tool_pen.html", "class_intelli_tool_pen" ] + ] ], + [ "IntelliToolPlain.cpp", "_intelli_tool_plain_8cpp.html", null ], + [ "IntelliToolPlain.h", "_intelli_tool_plain_8h.html", [ + [ "IntelliToolPlainTool", "class_intelli_tool_plain_tool.html", "class_intelli_tool_plain_tool" ] + ] ], + [ "IntelliToolPolygon.cpp", "_intelli_tool_polygon_8cpp.html", null ], + [ "IntelliToolPolygon.h", "_intelli_tool_polygon_8h.html", [ + [ "IntelliToolPolygon", "class_intelli_tool_polygon.html", "class_intelli_tool_polygon" ] + ] ], + [ "IntelliToolRectangle.cpp", "_intelli_tool_rectangle_8cpp.html", null ], + [ "IntelliToolRectangle.h", "_intelli_tool_rectangle_8h.html", [ + [ "IntelliToolRectangle", "class_intelli_tool_rectangle.html", "class_intelli_tool_rectangle" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_941490de56ac122cf77df9922cbcc750_dep.dot b/docs-src/html/dir_941490de56ac122cf77df9922cbcc750_dep.dot new file mode 100644 index 0000000..e1afe26 --- /dev/null +++ b/docs-src/html/dir_941490de56ac122cf77df9922cbcc750_dep.dot @@ -0,0 +1,15 @@ +digraph "intelliphoto/src/Tool" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_83a4347d11f2ba6343d546ab133722d2 { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_83a4347d11f2ba6343d546ab133722d2.html"] + dir_941490de56ac122cf77df9922cbcc750 [shape=box, label="Tool", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_941490de56ac122cf77df9922cbcc750.html"]; + } + dir_e6d96184223881d115efa44ca0dfa844 [shape=box label="Layer" URL="dir_e6d96184223881d115efa44ca0dfa844.html"]; + dir_f50aa5156fe016a259583c412dbf440c [shape=box label="IntelliHelper" URL="dir_f50aa5156fe016a259583c412dbf440c.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_f50aa5156fe016a259583c412dbf440c [headlabel="1", labeldistance=1.5 headhref="dir_000006_000004.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_941490de56ac122cf77df9922cbcc750 [headlabel="8", labeldistance=1.5 headhref="dir_000006_000005.html"]; + dir_941490de56ac122cf77df9922cbcc750->dir_e6d96184223881d115efa44ca0dfa844 [headlabel="8", labeldistance=1.5 headhref="dir_000005_000006.html"]; + dir_941490de56ac122cf77df9922cbcc750->dir_f50aa5156fe016a259583c412dbf440c [headlabel="4", labeldistance=1.5 headhref="dir_000005_000004.html"]; +} diff --git a/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.html b/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.html new file mode 100644 index 0000000..67d4961 --- /dev/null +++ b/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.html @@ -0,0 +1,113 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/Layer Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Layer Directory Reference
+
+
+ + + + + + +

+Files

file  PaintingArea.cpp [code]
 
file  PaintingArea.h [code]
 
+
+
+ + + + diff --git a/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.js b/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.js new file mode 100644 index 0000000..c511455 --- /dev/null +++ b/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844.js @@ -0,0 +1,8 @@ +var dir_e6d96184223881d115efa44ca0dfa844 = +[ + [ "PaintingArea.cpp", "_painting_area_8cpp.html", null ], + [ "PaintingArea.h", "_painting_area_8h.html", [ + [ "LayerObject", "struct_layer_object.html", "struct_layer_object" ], + [ "PaintingArea", "class_painting_area.html", "class_painting_area" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844_dep.dot b/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844_dep.dot new file mode 100644 index 0000000..1043121 --- /dev/null +++ b/docs-src/html/dir_e6d96184223881d115efa44ca0dfa844_dep.dot @@ -0,0 +1,21 @@ +digraph "intelliphoto/src/Layer" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_83a4347d11f2ba6343d546ab133722d2 { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_83a4347d11f2ba6343d546ab133722d2.html"] + dir_e6d96184223881d115efa44ca0dfa844 [shape=box, label="Layer", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_e6d96184223881d115efa44ca0dfa844.html"]; + } + dir_544f9dcb748f922e4bb3be2540380bf2 [shape=box label="Image" URL="dir_544f9dcb748f922e4bb3be2540380bf2.html"]; + dir_f50aa5156fe016a259583c412dbf440c [shape=box label="IntelliHelper" URL="dir_f50aa5156fe016a259583c412dbf440c.html"]; + dir_5dabb14988a75c922e285f444641a133 [shape=box label="GUI" URL="dir_5dabb14988a75c922e285f444641a133.html"]; + dir_941490de56ac122cf77df9922cbcc750 [shape=box label="Tool" URL="dir_941490de56ac122cf77df9922cbcc750.html"]; + dir_544f9dcb748f922e4bb3be2540380bf2->dir_f50aa5156fe016a259583c412dbf440c [headlabel="3", labeldistance=1.5 headhref="dir_000003_000004.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_544f9dcb748f922e4bb3be2540380bf2 [headlabel="5", labeldistance=1.5 headhref="dir_000006_000003.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_f50aa5156fe016a259583c412dbf440c [headlabel="1", labeldistance=1.5 headhref="dir_000006_000004.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_5dabb14988a75c922e285f444641a133 [headlabel="1", labeldistance=1.5 headhref="dir_000006_000002.html"]; + dir_e6d96184223881d115efa44ca0dfa844->dir_941490de56ac122cf77df9922cbcc750 [headlabel="8", labeldistance=1.5 headhref="dir_000006_000005.html"]; + dir_5dabb14988a75c922e285f444641a133->dir_e6d96184223881d115efa44ca0dfa844 [headlabel="1", labeldistance=1.5 headhref="dir_000002_000006.html"]; + dir_941490de56ac122cf77df9922cbcc750->dir_e6d96184223881d115efa44ca0dfa844 [headlabel="8", labeldistance=1.5 headhref="dir_000005_000006.html"]; + dir_941490de56ac122cf77df9922cbcc750->dir_f50aa5156fe016a259583c412dbf440c [headlabel="4", labeldistance=1.5 headhref="dir_000005_000004.html"]; +} diff --git a/docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.html b/docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.html new file mode 100644 index 0000000..a4a3593 --- /dev/null +++ b/docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.html @@ -0,0 +1,125 @@ + + + + + + + +IntelliPhoto: intelliphoto/src/IntelliHelper Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliHelper Directory Reference
+
+ +
+ + + + diff --git a/docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.js b/docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.js new file mode 100644 index 0000000..55b1bfe --- /dev/null +++ b/docs-src/html/dir_f50aa5156fe016a259583c412dbf440c.js @@ -0,0 +1,17 @@ +var dir_f50aa5156fe016a259583c412dbf440c = +[ + [ "IntelliColorPicker.cpp", "_intelli_helper_2_intelli_color_picker_8cpp.html", null ], + [ "IntelliColorPicker.h", "_intelli_color_picker_8h.html", [ + [ "IntelliColorPicker", "class_intelli_color_picker.html", "class_intelli_color_picker" ] + ] ], + [ "IntelliRenderSettings.cpp", "_intelli_render_settings_8cpp.html", null ], + [ "IntelliRenderSettings.h", "_intelli_render_settings_8h.html", [ + [ "IntelliRenderSettings", "class_intelli_render_settings.html", "class_intelli_render_settings" ] + ] ], + [ "IntelliToolsettings.cpp", "_intelli_toolsettings_8cpp.html", null ], + [ "IntelliToolsettings.h", "_intelli_toolsettings_8h.html", [ + [ "IntelliToolsettings", "class_intelli_toolsettings.html", "class_intelli_toolsettings" ] + ] ], + [ "IntelliTriangulation.cpp", "_intelli_triangulation_8cpp.html", "_intelli_triangulation_8cpp" ], + [ "IntelliTriangulation.h", "_intelli_triangulation_8h.html", "_intelli_triangulation_8h" ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.html b/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.html new file mode 100644 index 0000000..ae89bf5 --- /dev/null +++ b/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.html @@ -0,0 +1,117 @@ + + + + + + + +IntelliPhoto: src/Image Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Image Directory Reference
+
+ +
+ + + + diff --git a/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.js b/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.js new file mode 100644 index 0000000..fe8f755 --- /dev/null +++ b/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe.js @@ -0,0 +1,13 @@ +var dir_fdbdd9841f9a730f284bb666ff3d8cfe = +[ + [ "IntelliImage.cpp", "_intelli_image_8cpp.html", null ], + [ "IntelliImage.h", "_intelli_image_8h.html", "_intelli_image_8h" ], + [ "IntelliRasterImage.cpp", "_intelli_raster_image_8cpp.html", null ], + [ "IntelliRasterImage.h", "_intelli_raster_image_8h.html", [ + [ "IntelliRasterImage", "class_intelli_raster_image.html", "class_intelli_raster_image" ] + ] ], + [ "IntelliShapedImage.cpp", "_intelli_shaped_image_8cpp.html", null ], + [ "IntelliShapedImage.h", "_intelli_shaped_image_8h.html", [ + [ "IntelliShapedImage", "class_intelli_shaped_image.html", "class_intelli_shaped_image" ] + ] ] +]; \ No newline at end of file diff --git a/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe_dep.dot b/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe_dep.dot new file mode 100644 index 0000000..8331018 --- /dev/null +++ b/docs-src/html/dir_fdbdd9841f9a730f284bb666ff3d8cfe_dep.dot @@ -0,0 +1,11 @@ +digraph "src/Image" { + compound=true + node [ fontsize="10", fontname="Helvetica"]; + edge [ labelfontsize="10", labelfontname="Helvetica"]; + subgraph clusterdir_68267d1309a1af8e8297ef4c3efbcdba { + graph [ bgcolor="#ddddee", pencolor="black", label="src" fontname="Helvetica", fontsize="10", URL="dir_68267d1309a1af8e8297ef4c3efbcdba.html"] + dir_fdbdd9841f9a730f284bb666ff3d8cfe [shape=box, label="Image", style="filled", fillcolor="#eeeeff", pencolor="black", URL="dir_fdbdd9841f9a730f284bb666ff3d8cfe.html"]; + } + dir_8de6078cba2a961961818cf80b28fd4f [shape=box label="IntelliHelper" URL="dir_8de6078cba2a961961818cf80b28fd4f.html"]; + dir_fdbdd9841f9a730f284bb666ff3d8cfe->dir_8de6078cba2a961961818cf80b28fd4f [headlabel="1", labeldistance=1.5 headhref="dir_000002_000003.html"]; +} diff --git a/docs-src/html/doc.png b/docs-src/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3c0291c2cdfc164d9dd7758a7473ae1ba39cb7 GIT binary patch literal 810 zcmV+_1J(SAP)i z42Tt7I&nE2-AC}iIB~{A>P=?cU_%irk?Y1c2);4!q6f)Dujrp zS(O+Vs0?wPJM@eB1I3tE+#j>pyiI z@Y!K%k*r$sV_zR#9UZER`g>0@m`ZWD`+JTaIn2&P0>8h8aA-Sgg#thsrYn#)m*e5Y zB(LV?NG9SeWV5Pev)M&DJ3FcI)v&9*jbgD#!9?Iccd``u;Z!e!XH%T)>0x+iNPHgW z*Re5WSxa*hE|*K~3jiZb1!VtAWCr&iJmk0Wajssw&Vxr2Og?_ht=qR5zj0G#A?*V& z!c?HjZdWU4ZfauxzP+3q806yc1PK38Be}M&Zi7G|px71+Dng+U0dc;ytxXjG ouo=S)e(LYn1OWe=um6?#FBqN3Y#qJ&zyJUM07*qoM6N<$f*{j*!2kdN literal 0 HcmV?d00001 diff --git a/docs-src/html/doxygen.css b/docs-src/html/doxygen.css new file mode 100644 index 0000000..0c19cbf --- /dev/null +++ b/docs-src/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #747878; + color: #222323; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #E5E6E6; + border: 1px solid #909394; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #2B2D2D; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #393B3C; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #888C8D; + color: #FFFEFE; + border: 1px double #737777; +} + +.contents a.qindexHL:visited { + color: #FFFEFE; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #393B3C; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #393B3C; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #B5B7B7; + background-color: #FAFAFA; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FAFAFA; + border: 1px solid #B5B7B7; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFEFE; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #E5E6E6; + font-weight: bold; + border: 1px solid #B5B7B7; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #E5E6E6; + border: 1px solid #B5B7B7; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #E8E9E9; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F4F4F4; + border-left: 2px solid #888C8D; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #888C8D; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #909394; +} + +th.dirtab { + background: #E5E6E6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #3F4141; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F7F7F7; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #D3D5D5; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #393B3C; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #959899; + border-left: 1px solid #959899; + border-right: 1px solid #959899; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #D9DADB; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #393B3C; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #E5E6E6; + border: 1px solid #909394; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #959899; + border-left: 1px solid #959899; + border-right: 1px solid #959899; + padding: 6px 0px 6px 0px; + color: #111112; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #D5D6D6; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #959899; + border-left: 1px solid #959899; + border-right: 1px solid #959899; + padding: 6px 10px 2px 10px; + background-color: #FAFAFA; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFEFE; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #616465; + border-top:1px solid #484B4B; + border-left:1px solid #484B4B; + border-right:1px solid #B5B7B7; + border-bottom:1px solid #B5B7B7; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #888C8D; + border-bottom: 1px solid #888C8D; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F4F4F4; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #2B2D2D; +} + +.arrow { + color: #888C8D; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #616465; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #161717; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #19191A; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #242626; + color: #FFFEFE; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #959899; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #959899; + border-bottom: 1px solid #959899; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #959899; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #D9DADB; + font-size: 90%; + color: #111112; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #959899; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#767A7B; + border:solid 1px #B2B4B5; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#232424; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #141515; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#585C5C; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#232424; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F7F7F7; + margin: 0px; + border-bottom: 1px solid #B5B7B7; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #484B4B; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #7C8081; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#1F2020; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F1F1F1; + border: 1px solid #CCCECE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #393B3C; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFEFE; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFEFE; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFEFE; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFEFE; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #19191A; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #19191A; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #242626; + color: #FFFEFE; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #19191A; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #242626; + color: #FFFEFE; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs-src/html/doxygen.png b/docs-src/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..a83d026c1266b221d96cf7da90104a5b39fede00 GIT binary patch literal 3861 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 XbG!fw0yEIH00000NkvXXu0mjfFi?`4 literal 0 HcmV?d00001 diff --git a/docs-src/html/dynsections.js b/docs-src/html/dynsections.js new file mode 100644 index 0000000..c8e84aa --- /dev/null +++ b/docs-src/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +IntelliPhoto: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs-src/html/files_dup.js b/docs-src/html/files_dup.js new file mode 100644 index 0000000..c3b39c4 --- /dev/null +++ b/docs-src/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/docs-src/html/folderclosed.png b/docs-src/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a50d3da00435410fafa162873d75d9d471fb9e GIT binary patch literal 649 zcmV;40(Sk0P)Et7+?1GHlM7n;$}XNe0~BGRBPF_1 zF5~X>w2Gx-QKE!mp@72eg1oVTR;z_a%gbArO4RLk!DU6NGQp)px{7CK{lN|Tc3k+Eer;aJj4Ij^hl@QXxd%?|Xy*A|v$%uB?iZk-2^% zBJjy*pOS`203Zzslh`5-wzJ(ap!%+mWzkye|*I7Yha3zuJdQEVt$)rDll91NA{Bk%c&1nrlFk~hw06=7< z5}cm?QN8VV2>`@Fnukpu$)u)Ac@Jb2zmAV1+J;HOtsCB_IC^aq03t~IR2W7n*IZg; z_4)(0urSZ8YK_%uRaTvwW0lH%W}2p)SD0nhnCv!nrtz@O78?z@Ut!mCxo;QV;MU~i j8UXw&{Qv)GLnrtPleInRpl=SC00000NkvXXu0mjfulzA; literal 0 HcmV?d00001 diff --git a/docs-src/html/folderopen.png b/docs-src/html/folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..aba59c0854922e82a194d7208a20a3190df3bf73 GIT binary patch literal 651 zcmV;60(AX}P)QYn|D$#~5sfh2mcgEC?(;ovJDq-E1d%in=?|tvRQ&vrI4geU(BAe##T zUDKc&It<;w?VC47IyO4X%K(tTyASU>rfJHLb*X|YClll2aBK&ql8Zt9j;UQXclsho{4f94t&Nf_W+qMn6Sdb>-Uf{f-Ozg6j9)e%WevYh%j_4f7Lq` z9zbj)YH;iBJ>hxhpv%sne1}mHc^Gx5jFhO$B+vPhXZ!m$o;`gMt3g5m5%u@>V5ZE! zQBn#*GExX2Hhe0yLUJ#m;QG>%a9mgQcF^zp`@=b=?x7Thj(2u`;Q8w65eno-zRdGL z{8EvJszN*Q9*Hk(*JIt}DB(fm(Ue5b9O>Ze<|cssL8*xre3VV|SZ)jeVn|#xD{ndN zcAHJNTCCA%uv)DuQDc=06;`R7XP)ONdva=$)u-yL*=(}e*%>z1o|EV6Y_eK?d8mS` l3k!Du;9ueYKN + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+
+ + + + diff --git a/docs-src/html/functions_b.html b/docs-src/html/functions_b.html new file mode 100644 index 0000000..bb9397f --- /dev/null +++ b/docs-src/html/functions_b.html @@ -0,0 +1,103 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+
+
+ + + + diff --git a/docs-src/html/functions_c.html b/docs-src/html/functions_c.html new file mode 100644 index 0000000..21c94f9 --- /dev/null +++ b/docs-src/html/functions_c.html @@ -0,0 +1,150 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+
+ + + + diff --git a/docs-src/html/functions_d.html b/docs-src/html/functions_d.html new file mode 100644 index 0000000..f746a65 --- /dev/null +++ b/docs-src/html/functions_d.html @@ -0,0 +1,121 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+
+ + + + diff --git a/docs-src/html/functions_dup.js b/docs-src/html/functions_dup.js new file mode 100644 index 0000000..9d48199 --- /dev/null +++ b/docs-src/html/functions_dup.js @@ -0,0 +1,21 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "w", "functions_w.html", null ], + [ "~", "functions_~.html", null ] +]; \ No newline at end of file diff --git a/docs-src/html/functions_enum.html b/docs-src/html/functions_enum.html new file mode 100644 index 0000000..a0d6752 --- /dev/null +++ b/docs-src/html/functions_enum.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: Class Members - Enumerations + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs-src/html/functions_f.html b/docs-src/html/functions_f.html new file mode 100644 index 0000000..b4f86bc --- /dev/null +++ b/docs-src/html/functions_f.html @@ -0,0 +1,103 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+
+ + + + diff --git a/docs-src/html/functions_func.html b/docs-src/html/functions_func.html new file mode 100644 index 0000000..2352bd9 --- /dev/null +++ b/docs-src/html/functions_func.html @@ -0,0 +1,595 @@ + + + + + + + +IntelliPhoto: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+
+ + + + diff --git a/docs-src/html/functions_g.html b/docs-src/html/functions_g.html new file mode 100644 index 0000000..bb2925d --- /dev/null +++ b/docs-src/html/functions_g.html @@ -0,0 +1,187 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+
+ + + + diff --git a/docs-src/html/functions_h.html b/docs-src/html/functions_h.html new file mode 100644 index 0000000..42d0369 --- /dev/null +++ b/docs-src/html/functions_h.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+
+ + + + diff --git a/docs-src/html/functions_i.html b/docs-src/html/functions_i.html new file mode 100644 index 0000000..8ec4351 --- /dev/null +++ b/docs-src/html/functions_i.html @@ -0,0 +1,166 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+
+ + + + diff --git a/docs-src/html/functions_l.html b/docs-src/html/functions_l.html new file mode 100644 index 0000000..465a15b --- /dev/null +++ b/docs-src/html/functions_l.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+
+ + + + diff --git a/docs-src/html/functions_m.html b/docs-src/html/functions_m.html new file mode 100644 index 0000000..c9da406 --- /dev/null +++ b/docs-src/html/functions_m.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+
+ + + + diff --git a/docs-src/html/functions_o.html b/docs-src/html/functions_o.html new file mode 100644 index 0000000..5b481da --- /dev/null +++ b/docs-src/html/functions_o.html @@ -0,0 +1,169 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs-src/html/functions_p.html b/docs-src/html/functions_p.html new file mode 100644 index 0000000..cf51c30 --- /dev/null +++ b/docs-src/html/functions_p.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+
+ + + + diff --git a/docs-src/html/functions_r.html b/docs-src/html/functions_r.html new file mode 100644 index 0000000..2bbbb78 --- /dev/null +++ b/docs-src/html/functions_r.html @@ -0,0 +1,103 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+
+ + + + diff --git a/docs-src/html/functions_s.html b/docs-src/html/functions_s.html new file mode 100644 index 0000000..64bf321 --- /dev/null +++ b/docs-src/html/functions_s.html @@ -0,0 +1,160 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+
+ + + + diff --git a/docs-src/html/functions_t.html b/docs-src/html/functions_t.html new file mode 100644 index 0000000..799d955 --- /dev/null +++ b/docs-src/html/functions_t.html @@ -0,0 +1,110 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+
+ + + + diff --git a/docs-src/html/functions_u.html b/docs-src/html/functions_u.html new file mode 100644 index 0000000..694c809 --- /dev/null +++ b/docs-src/html/functions_u.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+
+ + + + diff --git a/docs-src/html/functions_vars.html b/docs-src/html/functions_vars.html new file mode 100644 index 0000000..fe2304f --- /dev/null +++ b/docs-src/html/functions_vars.html @@ -0,0 +1,160 @@ + + + + + + + +IntelliPhoto: Class Members - Variables + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs-src/html/functions_w.html b/docs-src/html/functions_w.html new file mode 100644 index 0000000..fe84aa9 --- /dev/null +++ b/docs-src/html/functions_w.html @@ -0,0 +1,109 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+
+ + + + diff --git a/docs-src/html/functions_~.html b/docs-src/html/functions_~.html new file mode 100644 index 0000000..7ea332d --- /dev/null +++ b/docs-src/html/functions_~.html @@ -0,0 +1,148 @@ + + + + + + + +IntelliPhoto: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+
+ + + + diff --git a/docs-src/html/globals.html b/docs-src/html/globals.html new file mode 100644 index 0000000..b8e0d2d --- /dev/null +++ b/docs-src/html/globals.html @@ -0,0 +1,107 @@ + + + + + + + +IntelliPhoto: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+
+ + + + diff --git a/docs-src/html/globals_defs.html b/docs-src/html/globals_defs.html new file mode 100644 index 0000000..8e4d353 --- /dev/null +++ b/docs-src/html/globals_defs.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs-src/html/globals_enum.html b/docs-src/html/globals_enum.html new file mode 100644 index 0000000..55e7481 --- /dev/null +++ b/docs-src/html/globals_enum.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs-src/html/globals_func.html b/docs-src/html/globals_func.html new file mode 100644 index 0000000..78a76ec --- /dev/null +++ b/docs-src/html/globals_func.html @@ -0,0 +1,101 @@ + + + + + + + +IntelliPhoto: File Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/docs-src/html/graph_legend.dot b/docs-src/html/graph_legend.dot new file mode 100644 index 0000000..3b0e746 --- /dev/null +++ b/docs-src/html/graph_legend.dot @@ -0,0 +1,23 @@ +digraph "Graph Legend" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node9 [shape="box",label="Inherited",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",fillcolor="grey75",style="filled" fontcolor="black"]; + Node10 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [shape="box",label="PublicBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"]; + Node11 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [shape="box",label="Truncated",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"]; + Node13 -> Node9 [dir="back",color="darkgreen",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [shape="box",label="ProtectedBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"]; + Node14 -> Node9 [dir="back",color="firebrick4",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [shape="box",label="PrivateBase",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"]; + Node15 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node15 [shape="box",label="Undocumented",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; + Node16 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node16 [shape="box",label="Templ< int >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node17 -> Node16 [dir="back",color="orange",fontsize="10",style="dashed",label="< int >",fontname="Helvetica"]; + Node17 [shape="box",label="Templ< T >",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node18 -> Node9 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label="m_usedClass",fontname="Helvetica"]; + Node18 [shape="box",label="Used",fontsize="10",height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"]; +} diff --git a/docs-src/html/graph_legend.html b/docs-src/html/graph_legend.html new file mode 100644 index 0000000..c07e6b7 --- /dev/null +++ b/docs-src/html/graph_legend.html @@ -0,0 +1,164 @@ + + + + + + + +IntelliPhoto: Graph Legend + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/docs-src/html/hierarchy.html b/docs-src/html/hierarchy.html new file mode 100644 index 0000000..ed43c38 --- /dev/null +++ b/docs-src/html/hierarchy.html @@ -0,0 +1,129 @@ + + + + + + + +IntelliPhoto: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 CIntelliColorPickerThe IntelliColorPicker manages the selected colors for one whole project
 CIntelliImageAn abstract class which manages the basic IntelliImage operations
 CIntelliRasterImageThe IntelliRasterImage manages a RASTERIMAGE
 CIntelliShapedImageThe IntelliShapedImage manages a Shapedimage
 CIntelliRenderSettingsWhich manages the render Settings
 CIntelliToolAn abstract class that manages the basic events, like mouse clicks or scrolls events
 CIntelliToolCircleTool to draw a circle
 CIntelliToolFloodFillTool to flood FIll a certian area
 CIntelliToolGradientThat represents a gradient call
 CIntelliToolLineThe IntelliToolFloodFill class represents a tool to draw a line
 CIntelliToolPenTool to draw a line
 CIntelliToolPlainToolTool to fill the whole canvas with one color
 CIntelliToolPolygonThe IntelliToolPolygon managed the Drawing of Polygonforms
 CIntelliToolRectangleTool to draw a rectangle
 CIntelliToolsettingsManaging the settings of the tools, independent of an existing tool
 CLayerObjectThe LayerObject struct holds all the information needed to construct a layer
 CQDialog
 CIntelliInputDialogCustomized Input Dialog to get Integers
 CQLabel
 CPaintingAreaManages the methods and stores information about the current painting area, which is the currently opened project
 CQMainWindow
 CIntelliPhotoGuiThe IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto program
 CQObject
 CUnitTest
 CTriangleThe Triangle struct holds the 3 vertices of a triangle
+
+
+
+ + + + diff --git a/docs-src/html/hierarchy.js b/docs-src/html/hierarchy.js new file mode 100644 index 0000000..3abff8f --- /dev/null +++ b/docs-src/html/hierarchy.js @@ -0,0 +1,35 @@ +var hierarchy = +[ + [ "IntelliColorPicker", "class_intelli_color_picker.html", null ], + [ "IntelliImage", "class_intelli_image.html", [ + [ "IntelliRasterImage", "class_intelli_raster_image.html", [ + [ "IntelliShapedImage", "class_intelli_shaped_image.html", null ] + ] ] + ] ], + [ "IntelliRenderSettings", "class_intelli_render_settings.html", null ], + [ "IntelliTool", "class_intelli_tool.html", [ + [ "IntelliToolCircle", "class_intelli_tool_circle.html", null ], + [ "IntelliToolFloodFill", "class_intelli_tool_flood_fill.html", null ], + [ "IntelliToolGradient", "class_intelli_tool_gradient.html", null ], + [ "IntelliToolLine", "class_intelli_tool_line.html", null ], + [ "IntelliToolPen", "class_intelli_tool_pen.html", null ], + [ "IntelliToolPlainTool", "class_intelli_tool_plain_tool.html", null ], + [ "IntelliToolPolygon", "class_intelli_tool_polygon.html", null ], + [ "IntelliToolRectangle", "class_intelli_tool_rectangle.html", null ] + ] ], + [ "IntelliToolsettings", "class_intelli_toolsettings.html", null ], + [ "LayerObject", "struct_layer_object.html", null ], + [ "QDialog", null, [ + [ "IntelliInputDialog", "class_intelli_input_dialog.html", null ] + ] ], + [ "QLabel", null, [ + [ "PaintingArea", "class_painting_area.html", null ] + ] ], + [ "QMainWindow", null, [ + [ "IntelliPhotoGui", "class_intelli_photo_gui.html", null ] + ] ], + [ "QObject", null, [ + [ "UnitTest", "class_unit_test.html", null ] + ] ], + [ "Triangle", "struct_triangle.html", null ] +]; \ No newline at end of file diff --git a/docs-src/html/index.html b/docs-src/html/index.html new file mode 100644 index 0000000..62ad9e6 --- /dev/null +++ b/docs-src/html/index.html @@ -0,0 +1,100 @@ + + + + + + + +IntelliPhoto: Main Page + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
IntelliPhoto Documentation
+
+
+
+
+ + + + diff --git a/docs-src/html/inherit_graph_0.dot b/docs-src/html/inherit_graph_0.dot new file mode 100644 index 0000000..d4d9922 --- /dev/null +++ b/docs-src/html/inherit_graph_0.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="IntelliColorPicker",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_color_picker.html",tooltip="The IntelliColorPicker manages the selected colors for one whole project."]; +} diff --git a/docs-src/html/inherit_graph_1.dot b/docs-src/html/inherit_graph_1.dot new file mode 100644 index 0000000..6670cd8 --- /dev/null +++ b/docs-src/html/inherit_graph_1.dot @@ -0,0 +1,12 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IntelliRasterImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_raster_image.html",tooltip="The IntelliRasterImage manages a RASTERIMAGE."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliShapedImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html",tooltip="The IntelliShapedImage manages a Shapedimage."]; +} diff --git a/docs-src/html/inherit_graph_2.dot b/docs-src/html/inherit_graph_2.dot new file mode 100644 index 0000000..5cd3f36 --- /dev/null +++ b/docs-src/html/inherit_graph_2.dot @@ -0,0 +1,10 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node4 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node4 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node0 [label="IntelliPhotoGui",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_photo_gui.html",tooltip="The IntelliPhotoGui class handles the graphical user interface for the intelliPhoto program."]; +} diff --git a/docs-src/html/inherit_graph_3.dot b/docs-src/html/inherit_graph_3.dot new file mode 100644 index 0000000..407b5bc --- /dev/null +++ b/docs-src/html/inherit_graph_3.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="IntelliRenderSettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_render_settings.html",tooltip=" "]; +} diff --git a/docs-src/html/inherit_graph_4.dot b/docs-src/html/inherit_graph_4.dot new file mode 100644 index 0000000..ec45d17 --- /dev/null +++ b/docs-src/html/inherit_graph_4.dot @@ -0,0 +1,22 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="IntelliTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool.html",tooltip="An abstract class that manages the basic events, like mouse clicks or scrolls events."]; + Node0 -> Node1 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node1 [label="IntelliToolCircle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_circle.html",tooltip="The IntelliToolCircle class represents a tool to draw a circle."]; + Node0 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolFloodFill",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_flood_fill.html",tooltip="The IntelliToolFloodFill class represents a tool to flood FIll a certian area."]; + Node0 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolLine",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_line.html",tooltip="The IntelliToolFloodFill class represents a tool to draw a line."]; + Node0 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPen",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_pen.html",tooltip="The IntelliToolPen class represents a tool to draw a line."]; + Node0 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPlainTool",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_plain_tool.html",tooltip="The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color."]; + Node0 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="IntelliToolPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html",tooltip="The IntelliToolPolygon managed the Drawing of Polygonforms."]; + Node0 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="IntelliToolRectangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_rectangle.html",tooltip="The IntelliToolRectangle class represents a tool to draw a rectangle."]; +} diff --git a/docs-src/html/inherit_graph_5.dot b/docs-src/html/inherit_graph_5.dot new file mode 100644 index 0000000..5dc8cc6 --- /dev/null +++ b/docs-src/html/inherit_graph_5.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="IntelliToolsettings",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_toolsettings.html",tooltip=" "]; +} diff --git a/docs-src/html/inherit_graph_6.dot b/docs-src/html/inherit_graph_6.dot new file mode 100644 index 0000000..cb85543 --- /dev/null +++ b/docs-src/html/inherit_graph_6.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_layer_object.html",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; +} diff --git a/docs-src/html/inherit_graph_7.dot b/docs-src/html/inherit_graph_7.dot new file mode 100644 index 0000000..88ed036 --- /dev/null +++ b/docs-src/html/inherit_graph_7.dot @@ -0,0 +1,10 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node2 [label="QWidget",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node0 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node0 [label="PaintingArea",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_painting_area.html",tooltip="The PaintingArea class manages the methods and stores information about the current painting area,..."]; +} diff --git a/docs-src/html/inherit_graph_8.dot b/docs-src/html/inherit_graph_8.dot new file mode 100644 index 0000000..98844bc --- /dev/null +++ b/docs-src/html/inherit_graph_8.dot @@ -0,0 +1,8 @@ +digraph "Graphical Class Hierarchy" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node0 [label="Triangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$struct_triangle.html",tooltip="The Triangle struct holds the 3 vertices of a triangle."]; +} diff --git a/docs-src/html/inherits.html b/docs-src/html/inherits.html new file mode 100644 index 0000000..2b1da7e --- /dev/null +++ b/docs-src/html/inherits.html @@ -0,0 +1,126 @@ + + + + + + + +IntelliPhoto: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  0.5 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/docs-src/html/jquery.js b/docs-src/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/docs-src/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs-src/html/main_8cpp.html b/docs-src/html/main_8cpp.html new file mode 100644 index 0000000..67c28a4 --- /dev/null +++ b/docs-src/html/main_8cpp.html @@ -0,0 +1,147 @@ + + + + + + + +IntelliPhoto: src/main.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
main.cpp File Reference
+
+
+
#include "GUI/IntelliPhotoGui.h"
+#include <QApplication>
+#include <QDebug>
+#include <vector>
+#include <fstream>
+
+

Go to the source code of this file.

+ + + + +

+Functions

int main (int argc, char *argv[])
 
+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+ +

Definition at line 7 of file main.cpp.

+ +
+
+
+
+ + + + diff --git a/docs-src/html/main_8cpp.js b/docs-src/html/main_8cpp.js new file mode 100644 index 0000000..783c492 --- /dev/null +++ b/docs-src/html/main_8cpp.js @@ -0,0 +1,4 @@ +var main_8cpp = +[ + [ "main", "main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97", null ] +]; \ No newline at end of file diff --git a/docs-src/html/main_8cpp__incl.dot b/docs-src/html/main_8cpp__incl.dot new file mode 100644 index 0000000..18ed033 --- /dev/null +++ b/docs-src/html/main_8cpp__incl.dot @@ -0,0 +1,33 @@ +digraph "intelliphoto/src/main.cpp" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="intelliphoto/src/main.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip=" "]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="GUI/IntelliPhotoGui.h",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$_intelli_photo_gui_8h.html",tooltip=" "]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="QtWidgets",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="QPixmap",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="QList",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node6 [label="QMainWindow",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node7 [label="QGridLayout",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node8 [label="QPushButton",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node9 [label="QTextEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node10 [label="QLabel",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node2 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node11 [label="QLineEdit",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node12 [label="QApplication",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node13 [label="QDebug",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; + Node1 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node14 [label="vector",height=0.2,width=0.4,color="grey75", fillcolor="white", style="filled",tooltip=" "]; +} diff --git a/docs-src/html/main_8cpp_source.html b/docs-src/html/main_8cpp_source.html new file mode 100644 index 0000000..4955140 --- /dev/null +++ b/docs-src/html/main_8cpp_source.html @@ -0,0 +1,119 @@ + + + + + + + +IntelliPhoto: src/main.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
main.cpp
+
+
+Go to the documentation of this file.
1 #include "GUI/IntelliPhotoGui.h"
+
2 #include <QApplication>
+
3 #include <QDebug>
+
4 #include <vector>
+
5 #include <fstream>
+
6 
+
7 int main(int argc, char*argv[]){
+
8  // The main application
+
9  QApplication app(argc, argv);
+
10  // Create and open the main window
+
11  IntelliPhotoGui window;
+
12  window.show();
+
13 
+
14  return app.exec();
+
15 }
+
+
+
The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto p...
+ +
int main(int argc, char *argv[])
Definition: main.cpp:7
+ + + + diff --git a/docs-src/html/main_unit_test_8cpp.html b/docs-src/html/main_unit_test_8cpp.html new file mode 100644 index 0000000..9cb0494 --- /dev/null +++ b/docs-src/html/main_unit_test_8cpp.html @@ -0,0 +1,115 @@ + + + + + + + +IntelliPhoto: src/mainUnitTest.cpp File Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
mainUnitTest.cpp File Reference
+
+
+
#include <QtTest>
+#include <string>
+#include "GUI/IntelliPhotoGui.h"
+#include "tst_unittest.moc"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  UnitTest
 
+
+
+ + + + diff --git a/docs-src/html/main_unit_test_8cpp_source.html b/docs-src/html/main_unit_test_8cpp_source.html new file mode 100644 index 0000000..c7f7951 --- /dev/null +++ b/docs-src/html/main_unit_test_8cpp_source.html @@ -0,0 +1,359 @@ + + + + + + + +IntelliPhoto: src/mainUnitTest.cpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
IntelliPhoto +  1 +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
mainUnitTest.cpp
+
+
+Go to the documentation of this file.
1 #include <QtTest>
+
2 // add necessary includes here
+
3 #include <string>
+
4 
+
5 #include "GUI/IntelliPhotoGui.h"
+
6 
+
7 
+
8 class UnitTest : public QObject
+
9 {
+
10 Q_OBJECT
+
11 private:
+
12 IntelliPhotoGui* gui;
+
13 PaintingArea* area;
+
14 QApplication* app;
+
15 
+
16 public:
+
17 UnitTest();
+
18 ~UnitTest();
+
19 
+
20 private slots:
+
21 void initTestCase();
+
22 void cleanupTestCase();
+
23 //void test_case1();
+
24 
+
25 //test painting area
+
26 void test_addLayer();
+
27 void test_deleteLayer();
+
28 void test_setActive();
+
29 void test_setAlpha();
+
30 void test_floodFill();
+
31 void test_moveActive();
+
32 void test_setPolygon();
+
33 void test_setLayerUp();
+
34 void test_setLayerDown();
+
35 
+
36 void test_createTools();
+
37 
+
38 //test Raster-Image operations
+
39 void test_RasterImage_drawPixel();
+
40 void test_RasterImage_drawLine();
+
41 void test_RasterImage_drawPoint();
+
42 void test_RasterImage_getDisplayable();
+
43 void test_RasterImage_setPolygon();
+
44 void test_RasterImage_loadImage();
+
45 void test_RasterImage_getPixelColor();
+
46 void test_RasterImage_getImageData();
+
47 void test_RasterImage_setImageData();
+
48 
+
49 //test Shaped-Image operations
+
50 void test_ShapedImage_drawPixel();
+
51 void test_ShapedImage_drawLine();
+
52 void test_ShapedImage_drawPoint();
+
53 void test_ShapedImage_getDisplayable();
+
54 void test_ShapedImage_setPolygon();
+
55 void test_ShapedImage_loadImage();
+
56 void test_ShapedImage_getPixelColor();
+
57 void test_ShapedImage_getImageData();
+
58 void test_ShapedImage_setImageData();
+
59 
+
60 //test painting-area tools
+
61 void test_createTool_Circle();
+
62 void test_createTool_FloodFill();
+
63 void test_createTool_Line();
+
64 void test_createTool_Pen();
+
65 void test_createTool_Plain();
+
66 void test_createTool_Polygon();
+
67 void test_createTool_Rectangle();
+
68 
+
69 //test tools
+
70 void test_Circle_fullDraw();
+
71 void test_Circle_interruptedDraw();
+
72 
+
73 void test_FloodFill_fullDraw();
+
74 void test_FloodFill_interruptedDraw();
+
75 
+
76 void test_Line_fullDraw();
+
77 void test_Line_interruptedDraw();
+
78 
+
79 void test_Pen_fullDraw();
+
80 void test_Pen_interruptedDraw();
+
81 
+
82 void test_Plain_fullDraw();
+
83 void test_Plain_interruptedDraw();
+
84 
+
85 void test_Polygon_fullDraw();
+
86 void test_Polygon_interruptedDraw();
+
87 
+
88 void test_Rectangle_fullDraw();
+
89 void test_Rectangle_interruptedDraw();
+
90 
+
91 //test Triangulation
+
92 void test_Triangulation_Coverage();
+
93 };
+
94 
+ +
96 {
+
97  char arg0[] = "programName";
+
98  char arg1[] = "arg1";
+
99  char arg2[] = "arg2";
+
100  char*argv[] = {arg0, arg1, arg2, nullptr};
+
101  int argc = sizeof(argv) / sizeof(char*) - 1;
+
102 
+
103  app = new QApplication(argc,argv);
+
104  gui = new IntelliPhotoGui();
+
105  area = gui->paintingArea;
+
106 }
+
107 
+ +
109 {
+
110 
+
111 }
+
112 
+
113 void UnitTest::initTestCase()
+
114 {
+
115 
+
116 }
+
117 
+
118 void UnitTest::cleanupTestCase()
+
119 {
+
120  delete gui;
+
121  delete app;
+
122 }
+
123 
+
124 //void UnitTest::test_case1()
+
125 //{
+
126 // QBENCHMARK {
+
127 // QVERIFY(1 == 1);
+
128 // }
+
129 //}
+
130 
+
131 //test painting area
+
132 void UnitTest::test_addLayer(){
+
133 }
+
134 void UnitTest::test_deleteLayer(){
+
135 }
+
136 void UnitTest::test_setActive(){
+
137 }
+
138 void UnitTest::test_setAlpha(){
+
139 }
+
140 void UnitTest::test_floodFill(){
+
141 }
+
142 void UnitTest::test_moveActive(){
+
143 }
+
144 void UnitTest::test_setPolygon(){
+
145 }
+
146 void UnitTest::test_setLayerUp(){
+
147 }
+
148 void UnitTest::test_setLayerDown(){
+
149 }
+
150 
+
151 void UnitTest::test_createTools(){
+
152 }
+
153 
+
154 //test Raster-Image operations
+
155 void UnitTest::test_RasterImage_drawPixel(){
+
156 }
+
157 void UnitTest::test_RasterImage_drawLine(){
+
158 }
+
159 void UnitTest::test_RasterImage_drawPoint(){
+
160 }
+
161 void UnitTest::test_RasterImage_getDisplayable(){
+
162 }
+
163 void UnitTest::test_RasterImage_setPolygon(){
+
164 }
+
165 void UnitTest::test_RasterImage_loadImage(){
+
166 }
+
167 void UnitTest::test_RasterImage_getPixelColor(){
+
168 }
+
169 void UnitTest::test_RasterImage_getImageData(){
+
170 }
+
171 void UnitTest::test_RasterImage_setImageData(){
+
172 }
+
173 
+
174 //test Shaped-Image operations
+
175 void UnitTest::test_ShapedImage_drawPixel(){
+
176 }
+
177 void UnitTest::test_ShapedImage_drawLine(){
+
178 }
+
179 void UnitTest::test_ShapedImage_drawPoint(){
+
180 }
+
181 void UnitTest::test_ShapedImage_getDisplayable(){
+
182 }
+
183 void UnitTest::test_ShapedImage_setPolygon(){
+
184 }
+
185 void UnitTest::test_ShapedImage_loadImage(){
+
186 }
+
187 void UnitTest::test_ShapedImage_getPixelColor(){
+
188 }
+
189 void UnitTest::test_ShapedImage_getImageData(){
+
190 }
+
191 void UnitTest::test_ShapedImage_setImageData(){
+
192 }
+
193 
+
194 //test painting-area tools
+
195 void UnitTest::test_createTool_Circle(){
+
196 }
+
197 void UnitTest::test_createTool_FloodFill(){
+
198 }
+
199 void UnitTest::test_createTool_Line(){
+
200 }
+
201 void UnitTest::test_createTool_Pen(){
+
202 }
+
203 void UnitTest::test_createTool_Plain(){
+
204 }
+
205 void UnitTest::test_createTool_Polygon(){
+
206 }
+
207 void UnitTest::test_createTool_Rectangle(){
+
208 }
+
209 
+
210 //test tools
+
211 void UnitTest::test_Circle_fullDraw(){
+
212 }
+
213 void UnitTest::test_Circle_interruptedDraw(){
+
214 }
+
215 
+
216 void UnitTest::test_FloodFill_fullDraw(){
+
217 }
+
218 void UnitTest::test_FloodFill_interruptedDraw(){
+
219 }
+
220 
+
221 void UnitTest::test_Line_fullDraw(){
+
222 }
+
223 void UnitTest::test_Line_interruptedDraw(){
+
224 }
+
225 
+
226 void UnitTest::test_Pen_fullDraw(){
+
227 }
+
228 void UnitTest::test_Pen_interruptedDraw(){
+
229 }
+
230 
+
231 void UnitTest::test_Plain_fullDraw(){
+
232 }
+
233 void UnitTest::test_Plain_interruptedDraw(){
+
234 }
+
235 
+
236 void UnitTest::test_Polygon_fullDraw(){
+
237 }
+
238 void UnitTest::test_Polygon_interruptedDraw(){
+
239 }
+
240 
+
241 void UnitTest::test_Rectangle_fullDraw(){
+
242 }
+
243 void UnitTest::test_Rectangle_interruptedDraw(){
+
244 }
+
245 
+
246 //test Triangulation
+
247 void UnitTest::test_Triangulation_Coverage(){
+
248 }
+
249 
+
250 QTEST_APPLESS_MAIN(UnitTest)
+
251 
+
252 #include "tst_unittest.moc"
+
+
+ +
The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto p...
+ +
The PaintingArea class manages the methods and stores information about the current painting area,...
Definition: PaintingArea.h:57
+ + + + + + diff --git a/docs-src/html/menu.js b/docs-src/html/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/docs-src/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs-src/html/menudata.js b/docs-src/html/menudata.js new file mode 100644 index 0000000..1675c58 --- /dev/null +++ b/docs-src/html/menudata.js @@ -0,0 +1,78 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions",url:"namespacemembers_func.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"w",url:"functions_func.html#index_w"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Enumerations",url:"functions_enum.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/docs-src/html/namespace_intelli_datamanager.html b/docs-src/html/namespace_intelli_datamanager.html new file mode 100644 index 0000000..43783e0 --- /dev/null +++ b/docs-src/html/namespace_intelli_datamanager.html @@ -0,0 +1,194 @@ + + + + + + + +IntelliPhoto: IntelliDatamanager Namespace Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    IntelliDatamanager Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    bool loadProject (PaintingArea *Canvas, QString filePath="unnamed.idf")
     loadProject loads a project from a file, closes current project. More...
     
    bool saveProject (PaintingArea *Canvas, QString filePath="unnamed.idf")
     saveProject saves the current project to a file. More...
     
    +

    Function Documentation

    + +

    ◆ loadProject()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool IntelliDatamanager::loadProject (PaintingAreaCanvas,
    QString filePath = "unnamed.idf" 
    )
    +
    + +

    loadProject loads a project from a file, closes current project.

    +
    Parameters
    + + + +
    Canvas- Reference to the used Canvas.
    filePath- Filepath to the project which should be opened.
    +
    +
    +
    Returns
    True if everything worked, false otherwise.
    + +

    Definition at line 50 of file IntelliDatamanager.cpp.

    + +
    +
    + +

    ◆ saveProject()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool IntelliDatamanager::saveProject (PaintingAreaCanvas,
    QString filePath = "unnamed.idf" 
    )
    +
    + +

    saveProject saves the current project to a file.

    +
    Parameters
    + + + +
    Canvas- Reference to the used Canvas.
    filePath- Filepath to the project which should be saved.
    +
    +
    +
    Returns
    True if everything worked, false otherwise.
    + +

    Definition at line 4 of file IntelliDatamanager.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/docs-src/html/namespace_intelli_helper.html b/docs-src/html/namespace_intelli_helper.html new file mode 100644 index 0000000..fb35f79 --- /dev/null +++ b/docs-src/html/namespace_intelli_helper.html @@ -0,0 +1,326 @@ + + + + + + + +IntelliPhoto: IntelliHelper Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  0.5 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    IntelliHelper Namespace Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Functions

    float sign (QPoint &p1, QPoint &p2, QPoint &p3)
     A function to get the 2*area of a traingle, using its determinat. More...
     
    bool isInTriangle (Triangle &tri, QPoint &P)
     A function to check if a given point is in a triangle. More...
     
    std::vector< TrianglecalculateTriangles (std::vector< QPoint > polyPoints)
     A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by clipping ears of a planar graph. More...
     
    bool isInPolygon (std::vector< Triangle > &triangles, QPoint &point)
     A function to check if a point lies in a polygon by checking its spanning triangles. More...
     
    +

    Function Documentation

    + +

    ◆ calculateTriangles()

    + +
    +
    + + + + + + + + +
    std::vector< Triangle > IntelliHelper::calculateTriangles (std::vector< QPoint > polyPoints)
    +
    + +

    A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by clipping ears of a planar graph.

    +
    Parameters
    + + +
    polyPoints- The Vertices of the polygon.
    +
    +
    +
    Returns
    Returns a Container of disjoint Triangles, which desribe the polygon area.
    + +

    Definition at line 7 of file IntelliHelper.cpp.

    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ isInPolygon()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool IntelliHelper::isInPolygon (std::vector< Triangle > & triangles,
    QPoint & point 
    )
    +
    + +

    A function to check if a point lies in a polygon by checking its spanning triangles.

    +
    Parameters
    + + + +
    triangles- The spanning triangles of the planar polygon.
    point- The point to checl, if it lies in the polygon.
    +
    +
    +
    Returns
    Returns true if the point lies in the üpolygon, otherwise false.
    + +

    Definition at line 116 of file IntelliHelper.cpp.

    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ isInTriangle()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool IntelliHelper::isInTriangle (Triangletri,
    QPoint & P 
    )
    +
    +inline
    +
    + +

    A function to check if a given point is in a triangle.

    +
    Parameters
    + + + +
    tri- The triangle to check, if it contains the point.
    P- The point to check if it is in the triangle.
    +
    +
    +
    Returns
    Returns true if the point is in the triangle, false otheriwse
    + +

    Definition at line 33 of file IntelliHelper.h.

    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    float IntelliHelper::sign (QPoint & p1,
    QPoint & p2,
    QPoint & p3 
    )
    +
    +inline
    +
    + +

    A function to get the 2*area of a traingle, using its determinat.

    +
    Parameters
    + + + + +
    p1- The Point to check its side.
    p2- The first Point of the spanning Line
    p3- The second Point of the spanning line.
    +
    +
    +
    Returns
    Returns the area of the traingle*2
    + +

    Definition at line 23 of file IntelliHelper.h.

    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs-src/html/namespace_intelli_helper_a214dc3624ba4562a03dc922e3dd7b617_icgraph.dot b/docs-src/html/namespace_intelli_helper_a214dc3624ba4562a03dc922e3dd7b617_icgraph.dot new file mode 100644 index 0000000..b7b7796 --- /dev/null +++ b/docs-src/html/namespace_intelli_helper_a214dc3624ba4562a03dc922e3dd7b617_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliHelper::calculateTriangles" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliHelper::calculate\lTriangles",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ..."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e",tooltip="A function that sets the data of the visible Polygon."]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_cgraph.dot b/docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_cgraph.dot new file mode 100644 index 0000000..fb4afa6 --- /dev/null +++ b/docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliHelper::isInPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliHelper::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_helper.html#a9fcfe72f00e870be4a8ab9f2e17483c9",tooltip="A function to check if a given point is in a triangle."]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_helper.html#afdd9fe78cc5d21b59642910220768149",tooltip="A function to get the 2*area of a traingle, using its determinat."]; +} diff --git a/docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_icgraph.dot b/docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_icgraph.dot new file mode 100644 index 0000000..90d49af --- /dev/null +++ b/docs-src/html/namespace_intelli_helper_a44d516b3e619e2a743e9c98dd75cf901_icgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliHelper::isInPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliHelper::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_cgraph.dot b/docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_cgraph.dot new file mode 100644 index 0000000..ac9a70d --- /dev/null +++ b/docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliHelper::isInTriangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a given point is in a triangle."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_helper.html#afdd9fe78cc5d21b59642910220768149",tooltip="A function to get the 2*area of a traingle, using its determinat."]; +} diff --git a/docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_icgraph.dot b/docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_icgraph.dot new file mode 100644 index 0000000..91522d0 --- /dev/null +++ b/docs-src/html/namespace_intelli_helper_a9fcfe72f00e870be4a8ab9f2e17483c9_icgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliHelper::isInTriangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a given point is in a triangle."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_helper.html#a44d516b3e619e2a743e9c98dd75cf901",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/namespace_intelli_helper_afdd9fe78cc5d21b59642910220768149_icgraph.dot b/docs-src/html/namespace_intelli_helper_afdd9fe78cc5d21b59642910220768149_icgraph.dot new file mode 100644 index 0000000..cee7661 --- /dev/null +++ b/docs-src/html/namespace_intelli_helper_afdd9fe78cc5d21b59642910220768149_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliHelper::sign" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliHelper::sign",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to get the 2*area of a traingle, using its determinat."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliHelper::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_helper.html#a9fcfe72f00e870be4a8ab9f2e17483c9",tooltip="A function to check if a given point is in a triangle."]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliHelper::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_helper.html#a44d516b3e619e2a743e9c98dd75cf901",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/namespace_intelli_triangulation.html b/docs-src/html/namespace_intelli_triangulation.html new file mode 100644 index 0000000..3b22990 --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation.html @@ -0,0 +1,292 @@ + + + + + + + +IntelliPhoto: IntelliTriangulation Namespace Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    IntelliTriangulation Namespace Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Functions

    float sign (QPoint &p1, QPoint &p2, QPoint &p3)
     A function to get the 2*area of a traingle, using its determinat. More...
     
    bool isInTriangle (Triangle &tri, QPoint &P)
     A function to check if a given point is in a triangle. More...
     
    std::vector< TrianglecalculateTriangles (std::vector< QPoint > polyPoints)
     A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by clipping ears of a planar graph. More...
     
    bool isInPolygon (const std::vector< Triangle > &triangles, QPoint &point)
     A function to check if a point lies in a polygon by checking its spanning triangles. More...
     
    +

    Function Documentation

    + +

    ◆ calculateTriangles()

    + +
    +
    + + + + + + + + +
    std::vector< Triangle > IntelliTriangulation::calculateTriangles (std::vector< QPoint > polyPoints)
    +
    + +

    A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by clipping ears of a planar graph.

    +
    Parameters
    + + +
    polyPoints- The Vertices of the polygon.
    +
    +
    +
    Returns
    Returns a Container of disjoint Triangles, which desribe the polygon area.
    + +

    Definition at line 7 of file IntelliTriangulation.cpp.

    + +
    +
    + +

    ◆ isInPolygon()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool IntelliTriangulation::isInPolygon (const std::vector< Triangle > & triangles,
    QPoint & point 
    )
    +
    + +

    A function to check if a point lies in a polygon by checking its spanning triangles.

    +
    Parameters
    + + + +
    triangles- The spanning triangles of the planar polygon.
    point- The point to checl, if it lies in the polygon.
    +
    +
    +
    Returns
    Returns true if the point lies in the üpolygon, otherwise false.
    + +

    Definition at line 116 of file IntelliTriangulation.cpp.

    + +
    +
    + +

    ◆ isInTriangle()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool IntelliTriangulation::isInTriangle (Triangletri,
    QPoint & P 
    )
    +
    +inline
    +
    + +

    A function to check if a given point is in a triangle.

    +
    Parameters
    + + + +
    tri- The triangle to check, if it contains the point.
    P- The point to check if it is in the triangle.
    +
    +
    +
    Returns
    Returns true if the point is in the triangle, false otheriwse
    + +

    Definition at line 36 of file IntelliTriangulation.h.

    + +
    +
    + +

    ◆ sign()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    float IntelliTriangulation::sign (QPoint & p1,
    QPoint & p2,
    QPoint & p3 
    )
    +
    +inline
    +
    + +

    A function to get the 2*area of a traingle, using its determinat.

    +
    Parameters
    + + + + +
    p1- The Point to check its side.
    p2- The first Point of the spanning Line
    p3- The second Point of the spanning line.
    +
    +
    +
    Returns
    Returns the area of the traingle*2
    + +

    Definition at line 26 of file IntelliTriangulation.h.

    + +
    +
    +
    +
    + + + + diff --git a/docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_cgraph.dot b/docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_cgraph.dot new file mode 100644 index 0000000..7357584 --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_cgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliTriangulation::isInPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliTriangulation\l::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#ac150fee67fd41a451bd2592f10e00197",tooltip="A function to check if a given point is in a triangle."]; + Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTriangulation\l::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#af9af549a7faff35a74c1265b290ea0ca",tooltip="A function to get the 2*area of a traingle, using its determinat."]; +} diff --git a/docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_icgraph.dot b/docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_icgraph.dot new file mode 100644 index 0000000..a370cee --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation_a00621e2d8708fe2e8966d7d79b64e186_icgraph.dot @@ -0,0 +1,12 @@ +digraph "IntelliTriangulation::isInPolygon" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTriangulation\l::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_cgraph.dot b/docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_cgraph.dot new file mode 100644 index 0000000..3e9af02 --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_cgraph.dot @@ -0,0 +1,10 @@ +digraph "IntelliTriangulation::isInTriangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="LR"; + Node1 [label="IntelliTriangulation\l::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a given point is in a triangle."]; + Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::sign",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#af9af549a7faff35a74c1265b290ea0ca",tooltip="A function to get the 2*area of a traingle, using its determinat."]; +} diff --git a/docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_icgraph.dot b/docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_icgraph.dot new file mode 100644 index 0000000..924c5dd --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation_ac150fee67fd41a451bd2592f10e00197_icgraph.dot @@ -0,0 +1,14 @@ +digraph "IntelliTriangulation::isInTriangle" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTriangulation\l::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to check if a given point is in a triangle."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#a00621e2d8708fe2e8966d7d79b64e186",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/namespace_intelli_triangulation_acdaf1ed598e868b25e9e06d580da32e5_icgraph.dot b/docs-src/html/namespace_intelli_triangulation_acdaf1ed598e868b25e9e06d580da32e5_icgraph.dot new file mode 100644 index 0000000..75cced6 --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation_acdaf1ed598e868b25e9e06d580da32e5_icgraph.dot @@ -0,0 +1,16 @@ +digraph "IntelliTriangulation::calculateTriangles" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTriangulation\l::calculateTriangles",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ..."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; + Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliShapedImage\l::setPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e",tooltip="A function that sets the data of the visible Polygon."]; + Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliShapedImage\l::getDeepCopy",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337",tooltip="A function that copys all that returns a [allocated] Image."]; +} diff --git a/docs-src/html/namespace_intelli_triangulation_af9af549a7faff35a74c1265b290ea0ca_icgraph.dot b/docs-src/html/namespace_intelli_triangulation_af9af549a7faff35a74c1265b290ea0ca_icgraph.dot new file mode 100644 index 0000000..2f096d7 --- /dev/null +++ b/docs-src/html/namespace_intelli_triangulation_af9af549a7faff35a74c1265b290ea0ca_icgraph.dot @@ -0,0 +1,16 @@ +digraph "IntelliTriangulation::sign" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + rankdir="RL"; + Node1 [label="IntelliTriangulation\l::sign",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="A function to get the 2*area of a traingle, using its determinat."]; + Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node2 [label="IntelliTriangulation\l::isInTriangle",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#ac150fee67fd41a451bd2592f10e00197",tooltip="A function to check if a given point is in a triangle."]; + Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node3 [label="IntelliTriangulation\l::isInPolygon",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$namespace_intelli_triangulation.html#a00621e2d8708fe2e8966d7d79b64e186",tooltip="A function to check if a point lies in a polygon by checking its spanning triangles."]; + Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node4 [label="IntelliToolPolygon\l::onMouseLeftPressed",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d",tooltip="A function managing the left click pressed of a mouse. Setting polygon points."]; + Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="Helvetica"]; + Node5 [label="IntelliToolPolygon\l::onMouseLeftReleased",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21",tooltip="A function managing the left click released of a mouse. Merging the fill to the active layer."]; +} diff --git a/docs-src/html/namespacemembers.html b/docs-src/html/namespacemembers.html new file mode 100644 index 0000000..c5b4326 --- /dev/null +++ b/docs-src/html/namespacemembers.html @@ -0,0 +1,116 @@ + + + + + + + +IntelliPhoto: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    +
    +
    + + + + diff --git a/docs-src/html/namespacemembers_func.html b/docs-src/html/namespacemembers_func.html new file mode 100644 index 0000000..a9c4bcb --- /dev/null +++ b/docs-src/html/namespacemembers_func.html @@ -0,0 +1,116 @@ + + + + + + + +IntelliPhoto: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/docs-src/html/namespaces.html b/docs-src/html/namespaces.html new file mode 100644 index 0000000..df49aab --- /dev/null +++ b/docs-src/html/namespaces.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: Namespace List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    +
    + + + + diff --git a/docs-src/html/namespaces_dup.js b/docs-src/html/namespaces_dup.js new file mode 100644 index 0000000..b471afc --- /dev/null +++ b/docs-src/html/namespaces_dup.js @@ -0,0 +1,5 @@ +var namespaces_dup = +[ + [ "IntelliDatamanager", "namespace_intelli_datamanager.html", null ], + [ "IntelliTriangulation", "namespace_intelli_triangulation.html", null ] +]; \ No newline at end of file diff --git a/docs-src/html/nav_f.png b/docs-src/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..f470f9852024d69d9411e89e6545ab451e7199e4 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQc<2Rjv*C{Z}0BpZ7>jUxo8`8 zl=D*~f6v|R+zF9_2}~}W`VwdLnT|=^sd|1*N`87&<^HKbA*Ujb&Tx6++afUKb6n)> wmZzaQ#{?MuICWfhQ(|i1w41g5-``GQ$3OD13#NL=18rgOboFyt=akR{0F9$Eu>b%7 literal 0 HcmV?d00001 diff --git a/docs-src/html/nav_g.png b/docs-src/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KbP0l+XkKr=}hT literal 0 HcmV?d00001 diff --git a/docs-src/html/navtree.css b/docs-src/html/navtree.css new file mode 100644 index 0000000..afef5e2 --- /dev/null +++ b/docs-src/html/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F7F7F7; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs-src/html/navtree.js b/docs-src/html/navtree.js new file mode 100644 index 0000000..edc31ef --- /dev/null +++ b/docs-src/html/navtree.js @@ -0,0 +1,544 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2019 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VHl8kyAr*{o=WgU=P~c(F*UMh` zIOE}#Q@1&if^I(*`e$jxd>}tUuawDUMwm+9y&Ug(8jj|7Tcq#R- literal 0 HcmV?d00001 diff --git a/docs-src/html/resize.js b/docs-src/html/resize.js new file mode 100644 index 0000000..a0bb5f4 --- /dev/null +++ b/docs-src/html/resize.js @@ -0,0 +1,137 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs-src/html/search/all_0.html b/docs-src/html/search/all_0.html new file mode 100644 index 0000000..26dd244 --- /dev/null +++ b/docs-src/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_0.js b/docs-src/html/search/all_0.js new file mode 100644 index 0000000..e5c6bd3 --- /dev/null +++ b/docs-src/html/search/all_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['a_0',['A',['../struct_triangle.html#a4fe8b39e0144ebff908b7718c2f2751b',1,'Triangle']]], + ['activelayer_1',['activeLayer',['../class_intelli_tool.html#aedccdad01b2bc6ec84fad3582251ff5d',1,'IntelliTool']]], + ['activetype_2',['ActiveType',['../class_intelli_tool.html#a631388999f36013628e13b9de87a6f7b',1,'IntelliTool']]], + ['addlayer_3',['addLayer',['../class_painting_area.html#abd5e3e4d3f2f026383d0a275dc55cbbd',1,'PaintingArea']]], + ['addlayerat_4',['addLayerAt',['../class_painting_area.html#a1274e60a912d2f1dfabcdd1b767fb029',1,'PaintingArea']]], + ['alpha_5',['alpha',['../struct_layer_object.html#a402cb1d9f20436032fe080681b80eb56',1,'LayerObject']]], + ['area_6',['Area',['../class_intelli_tool.html#ab4c2698a0f9f25fb6639ec760d2d0289',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/all_1.html b/docs-src/html/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/docs-src/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_1.js b/docs-src/html/search/all_1.js new file mode 100644 index 0000000..c2ec1a0 --- /dev/null +++ b/docs-src/html/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['b_7',['B',['../struct_triangle.html#a64fa6a90a6131f12a1a3054bf86647d7',1,'Triangle']]] +]; diff --git a/docs-src/html/search/all_10.html b/docs-src/html/search/all_10.html new file mode 100644 index 0000000..6fd3a4a --- /dev/null +++ b/docs-src/html/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_10.js b/docs-src/html/search/all_10.js new file mode 100644 index 0000000..8c58e8b --- /dev/null +++ b/docs-src/html/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['unittest_192',['UnitTest',['../class_unit_test.html',1,'UnitTest'],['../class_unit_test.html#a67ddaff817b55a624741d32550052f4b',1,'UnitTest::UnitTest()'],['../class_unit_test.html#a67ddaff817b55a624741d32550052f4b',1,'UnitTest::UnitTest()']]], + ['updategui_193',['UpdateGui',['../class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4',1,'IntelliPhotoGui']]], + ['updaterenderersetting_194',['updateRendererSetting',['../class_intelli_image.html#ae4dbaefabce4ec5bec37f5b95e2f62e2',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/all_11.html b/docs-src/html/search/all_11.html new file mode 100644 index 0000000..f78343b --- /dev/null +++ b/docs-src/html/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_11.js b/docs-src/html/search/all_11.js new file mode 100644 index 0000000..8a72192 --- /dev/null +++ b/docs-src/html/search/all_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['wheelevent_195',['wheelEvent',['../class_painting_area.html#a632848d99f44d33d7da2618fbc6775a4',1,'PaintingArea']]], + ['width_196',['width',['../struct_layer_object.html#af261813df52ff0b0c82bfa57efeb9897',1,'LayerObject']]], + ['widthoffset_197',['widthOffset',['../struct_layer_object.html#a72b44d27c7bbb60dde14f04ec240ab96',1,'LayerObject']]] +]; diff --git a/docs-src/html/search/all_12.html b/docs-src/html/search/all_12.html new file mode 100644 index 0000000..dd9ff1d --- /dev/null +++ b/docs-src/html/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_12.js b/docs-src/html/search/all_12.js new file mode 100644 index 0000000..003ff51 --- /dev/null +++ b/docs-src/html/search/all_12.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['_7eintellicolorpicker_198',['~IntelliColorPicker',['../class_intelli_color_picker.html#a40b975268a1f05249e8a49dde9a862ff',1,'IntelliColorPicker']]], + ['_7eintelliimage_199',['~IntelliImage',['../class_intelli_image.html#ac398bfa9ddd3185508a1e36ee15d80cc',1,'IntelliImage']]], + ['_7eintellirasterimage_200',['~IntelliRasterImage',['../class_intelli_raster_image.html#a844a2b58c43f7e01f2ca116286371bc8',1,'IntelliRasterImage']]], + ['_7eintellishapedimage_201',['~IntelliShapedImage',['../class_intelli_shaped_image.html#a43d63d8a814852d377ee2030658fbab9',1,'IntelliShapedImage']]], + ['_7eintellitool_202',['~IntelliTool',['../class_intelli_tool.html#a57fb1b27d364c9e3696eb928b75fa9f2',1,'IntelliTool']]], + ['_7eintellitoolcircle_203',['~IntelliToolCircle',['../class_intelli_tool_circle.html#a7a03b65b95d7b5d72e6a92c95f068954',1,'IntelliToolCircle']]], + ['_7eintellitoolfloodfill_204',['~IntelliToolFloodFill',['../class_intelli_tool_flood_fill.html#a83b1bd8be0cbb32cdf61a9597ec849ba',1,'IntelliToolFloodFill']]], + ['_7eintellitoolgradient_205',['~IntelliToolGradient',['../class_intelli_tool_gradient.html#a7d5c812815872b7e394e36362358b539',1,'IntelliToolGradient']]], + ['_7eintellitoolline_206',['~IntelliToolLine',['../class_intelli_tool_line.html#acb600b0f4e9225ebce2937c2b7abb4c2',1,'IntelliToolLine']]], + ['_7eintellitoolpen_207',['~IntelliToolPen',['../class_intelli_tool_pen.html#ac77a025515d0fed6954556fe2b444818',1,'IntelliToolPen']]], + ['_7eintellitoolplaintool_208',['~IntelliToolPlainTool',['../class_intelli_tool_plain_tool.html#a91fe568be05c075814d67440472bb658',1,'IntelliToolPlainTool']]], + ['_7eintellitoolpolygon_209',['~IntelliToolPolygon',['../class_intelli_tool_polygon.html#a087cbf2254010989df6106a357471499',1,'IntelliToolPolygon']]], + ['_7eintellitoolrectangle_210',['~IntelliToolRectangle',['../class_intelli_tool_rectangle.html#a7dc1463e726a21255e6297241dc71fb1',1,'IntelliToolRectangle']]], + ['_7eintellitoolsettings_211',['~IntelliToolsettings',['../class_intelli_toolsettings.html#a927e50594a459c952d06acd34c0eff56',1,'IntelliToolsettings']]], + ['_7epaintingarea_212',['~PaintingArea',['../class_painting_area.html#aa32adc113f77031945f73e33051931e8',1,'PaintingArea']]], + ['_7eunittest_213',['~UnitTest',['../class_unit_test.html#afa0bdd3e2ac33cd52e697406339a2edf',1,'UnitTest::~UnitTest()'],['../class_unit_test.html#afa0bdd3e2ac33cd52e697406339a2edf',1,'UnitTest::~UnitTest()']]] +]; diff --git a/docs-src/html/search/all_2.html b/docs-src/html/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/docs-src/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_2.js b/docs-src/html/search/all_2.js new file mode 100644 index 0000000..1c3936c --- /dev/null +++ b/docs-src/html/search/all_2.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['c_8',['C',['../struct_triangle.html#addb8aaab314d79f3617acca01e12872a',1,'Triangle']]], + ['calculatetriangles_9',['calculateTriangles',['../namespace_intelli_triangulation.html#acdaf1ed598e868b25e9e06d580da32e5',1,'IntelliTriangulation']]], + ['calculatevisiblity_10',['calculateVisiblity',['../class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2',1,'IntelliImage::calculateVisiblity()'],['../class_intelli_raster_image.html#a87cf2d360c129d64a5db0db85818eb60',1,'IntelliRasterImage::calculateVisiblity()']]], + ['canvas_11',['Canvas',['../class_intelli_tool.html#a144d469cc03584f501194529a1b53c77',1,'IntelliTool']]], + ['circle_12',['CIRCLE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa0af50777920c1401ab975cab64c4d491',1,'IntelliTool']]], + ['closeevent_13',['closeEvent',['../class_intelli_photo_gui.html#a2cf48070236ae8b35245e7f30482ef13',1,'IntelliPhotoGui']]], + ['colorpicker_14',['colorPicker',['../class_painting_area.html#a132535c4e16052c1472cf1b9f3e096ed',1,'PaintingArea::colorPicker()'],['../class_intelli_tool.html#ae2e0ac394611a361ab4ef2fe55c03fef',1,'IntelliTool::colorPicker()']]], + ['colorpickersetfirstcolor_15',['colorPickerSetFirstColor',['../class_painting_area.html#a4735d4cf1dc58a9096d904e74c39c4df',1,'PaintingArea']]], + ['colorpickersetsecondcolor_16',['colorPickerSetSecondColor',['../class_painting_area.html#ae261acaaa346610dfed489dbac17e789',1,'PaintingArea']]], + ['colorpickerswapcolors_17',['colorPickerSwapColors',['../class_painting_area.html#acff4563d006fda491469bd41778d07eb',1,'PaintingArea']]], + ['createcircletool_18',['createCircleTool',['../class_painting_area.html#a2d9f4b3585f7dd1acb11f432ca503466',1,'PaintingArea']]], + ['createfloodfilltool_19',['createFloodFillTool',['../class_painting_area.html#a0b22e18069b524f3e75857d203baf256',1,'PaintingArea']]], + ['creategradienttool_20',['createGradientTool',['../class_painting_area.html#ad8636e986fdcdd3146f9f72d3cdb1831',1,'PaintingArea']]], + ['createlinetool_21',['createLineTool',['../class_painting_area.html#a240c33a7875addac86080cdfb0db036a',1,'PaintingArea']]], + ['createpentool_22',['createPenTool',['../class_painting_area.html#a96c6248e343e44b61cf2625cb6d21353',1,'PaintingArea']]], + ['createplaintool_23',['createPlainTool',['../class_painting_area.html#a3de83443d2d5cf460ff48d0602070938',1,'PaintingArea']]], + ['createpolygontool_24',['createPolygonTool',['../class_painting_area.html#a13c2f94644bea9c2d3123d0b7898f34b',1,'PaintingArea']]], + ['createrectangletool_25',['createRectangleTool',['../class_painting_area.html#a5b04ce62ce024e307f54e0281f7ae4bd',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/all_3.html b/docs-src/html/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/docs-src/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_3.js b/docs-src/html/search/all_3.js new file mode 100644 index 0000000..e77b791 --- /dev/null +++ b/docs-src/html/search/all_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['deletealllayers_26',['deleteAllLayers',['../class_painting_area.html#af4701dee7ce672d91ed1e80cdd1e7491',1,'PaintingArea']]], + ['deletelayer_27',['deleteLayer',['../class_painting_area.html#a9b7dc8b8dc0b301ce58206aa76fb1630',1,'PaintingArea']]], + ['drawline_28',['drawLine',['../class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31',1,'IntelliImage']]], + ['drawpixel_29',['drawPixel',['../class_intelli_image.html#af3c859f5c409e37051edfd9e9fbca056',1,'IntelliImage']]], + ['drawpixelontoactive_30',['drawPixelOntoActive',['../class_painting_area.html#af1b7be20235139e4909086696ea74cf7',1,'PaintingArea']]], + ['drawplain_31',['drawPlain',['../class_intelli_image.html#a6be622810dc2bc756054bb5769becb06',1,'IntelliImage']]], + ['drawpoint_32',['drawPoint',['../class_intelli_image.html#a2e787f1b333b59401643936ebb3dcfe1',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/all_4.html b/docs-src/html/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/docs-src/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_4.js b/docs-src/html/search/all_4.js new file mode 100644 index 0000000..d9b9318 --- /dev/null +++ b/docs-src/html/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fastrenderering_33',['fastRenderering',['../class_intelli_image.html#aa63d34c7932113d021653980ee018671',1,'IntelliImage']]], + ['floodfill_34',['FLOODFILL',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa526904ea67131c56718f9882518b5d93',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/all_5.html b/docs-src/html/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/docs-src/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_5.js b/docs-src/html/search/all_5.js new file mode 100644 index 0000000..793f78f --- /dev/null +++ b/docs-src/html/search/all_5.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['getdeepcopy_35',['getDeepCopy',['../class_intelli_image.html#af6381067bdf565669f856bb589008ae9',1,'IntelliImage::getDeepCopy()'],['../class_intelli_raster_image.html#a8f901301b106504de3c27308ade897dc',1,'IntelliRasterImage::getDeepCopy()'],['../class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337',1,'IntelliShapedImage::getDeepCopy()']]], + ['getdisplayable_36',['getDisplayable',['../class_intelli_image.html#a21c7e65b59a26db45aac3880133ef21d',1,'IntelliImage::getDisplayable(const QSize &displaySize, int alpha)=0'],['../class_intelli_image.html#a9d4daf3c48c64695105689f61c21bae0',1,'IntelliImage::getDisplayable(int alpha=255)=0'],['../class_intelli_raster_image.html#ae43393397b0141a8033fe34d3a1b1884',1,'IntelliRasterImage::getDisplayable(const QSize &displaySize, int alpha) override'],['../class_intelli_raster_image.html#a612d79124f0e2c158a4f0abbe4b5f97f',1,'IntelliRasterImage::getDisplayable(int alpha=255) override'],['../class_intelli_shaped_image.html#a68cf374247c16f07fd84d50e4cd05630',1,'IntelliShapedImage::getDisplayable(const QSize &displaySize, int alpha=255) override'],['../class_intelli_shaped_image.html#ac6a99e1a96134073bceea252b37636cc',1,'IntelliShapedImage::getDisplayable(int alpha=255) override']]], + ['getfirstcolor_37',['getFirstColor',['../class_intelli_color_picker.html#aeb08029a0c946ed0402c9c11a91965b1',1,'IntelliColorPicker']]], + ['getheight_38',['getHeight',['../class_intelli_image.html#a895bbe107ad2958aca6eebf9af3eb7f1',1,'IntelliImage']]], + ['getheightofactive_39',['getHeightOfActive',['../class_painting_area.html#ac576f58aad03b4dcd47611b6a4b9abb4',1,'PaintingArea']]], + ['getimagedata_40',['getImageData',['../class_intelli_image.html#ad66fbe380ffe0e073a8cd760f8285fe3',1,'IntelliImage']]], + ['getimagedataofactivelayer_41',['getImageDataOfActiveLayer',['../class_painting_area.html#a4f484ff3ca7ae202ab57a00f52551423',1,'PaintingArea']]], + ['getimageofactivelayer_42',['getImageOfActiveLayer',['../class_painting_area.html#acab11ad35d07e9081203d8217d2c0855',1,'PaintingArea']]], + ['getindexofactivelayer_43',['getIndexOfActiveLayer',['../class_painting_area.html#a2ea1108ae4e4be995c4df0d378c536e7',1,'PaintingArea']]], + ['getinneralpha_44',['getInnerAlpha',['../class_intelli_toolsettings.html#a96d267baa782a32784dbeb1b7cd68cc4',1,'IntelliToolsettings']]], + ['getint_45',['getInt',['../class_intelli_input_dialog.html#a480ac2f5b8f7b9bc1cd7b30df84c2a62',1,'IntelliInputDialog']]], + ['getisdrawing_46',['getIsDrawing',['../class_intelli_tool.html#af90f0965efbc5c25126691e998f39ca3',1,'IntelliTool']]], + ['getlayerbundle_47',['getLayerBundle',['../class_painting_area.html#a1452c4bf2ebf188d8af019a862f3d8ba',1,'PaintingArea']]], + ['getlinewidth_48',['getLineWidth',['../class_intelli_toolsettings.html#abb3ee5a9c8a379167060799d275e65c3',1,'IntelliToolsettings']]], + ['getmaxheight_49',['getMaxHeight',['../class_painting_area.html#aa811d142df9239ae248679bd70ad6da7',1,'PaintingArea']]], + ['getmaxwidth_50',['getMaxWidth',['../class_painting_area.html#aeb082c1cda3edb6b68d8ee45cf4822f8',1,'PaintingArea']]], + ['getpixelcolor_51',['getPixelColor',['../class_intelli_image.html#a4576ebb6d863321c816293d7b7f9fd3f',1,'IntelliImage']]], + ['getpolygon_52',['getPolygon',['../class_intelli_raster_image.html#af19828176178cc1dece5160d726d946e',1,'IntelliRasterImage::getPolygon()'],['../class_intelli_shaped_image.html#aeff4b2331f4244f170c70526d8ca819b',1,'IntelliShapedImage::getPolygon()']]], + ['getpolygondata_53',['getPolygonData',['../class_intelli_image.html#aaf9f3e8db8666850024bee9aad9966ba',1,'IntelliImage::getPolygonData()'],['../class_intelli_shaped_image.html#ae4518c7f5a105cc4f33fabb60c794a93',1,'IntelliShapedImage::getPolygonData()']]], + ['getpolygondataofactivelayer_54',['getPolygonDataOfActiveLayer',['../class_painting_area.html#ae6eb9b269cdee993dbabd066e4679576',1,'PaintingArea']]], + ['getrendersettings_55',['getRenderSettings',['../class_painting_area.html#ad631e87a1e7fe2b60f546b0f34995097',1,'PaintingArea']]], + ['getsecondcolor_56',['getSecondColor',['../class_intelli_color_picker.html#ab41abe8fb7e184db2c33e792f09792e0',1,'IntelliColorPicker']]], + ['gettooltype_57',['getTooltype',['../class_intelli_tool.html#adf5c06ad2b2c0d745fb68cf80e7e5694',1,'IntelliTool']]], + ['gettypeofimage_58',['getTypeOfImage',['../class_intelli_image.html#af6b09c8d1d6b54a7e8a4e7286f3e503f',1,'IntelliImage']]], + ['gettypeofimageactivelayer_59',['getTypeOfImageActiveLayer',['../class_painting_area.html#a63cfff9cd4bc04e0b62d4c76cbf87395',1,'PaintingArea']]], + ['getwidth_60',['getWidth',['../class_intelli_image.html#aea7b5f173968b330ef034bedb9426520',1,'IntelliImage']]], + ['getwidthofactive_61',['getWidthOfActive',['../class_painting_area.html#a675ee91b26b1c58be6d833f279d81597',1,'PaintingArea']]], + ['gradient_62',['GRADIENT',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa90f70ea2675c36bd9b0b44a79f37a41f',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/all_6.html b/docs-src/html/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/docs-src/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_6.js b/docs-src/html/search/all_6.js new file mode 100644 index 0000000..99a6c0a --- /dev/null +++ b/docs-src/html/search/all_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['height_63',['height',['../struct_layer_object.html#ae0003fb815e50ed587a9897988befc90',1,'LayerObject']]], + ['heightoffset_64',['heightOffset',['../struct_layer_object.html#a08bacdcd64a0ae0eb5376f55329954bc',1,'LayerObject']]], + ['historyadd_65',['historyadd',['../class_painting_area.html#acf20e3f5f74a239e6f9b7e2e1200295f',1,'PaintingArea']]], + ['historygoback_66',['historyGoBack',['../class_painting_area.html#a6a6083ca9fece2b185b592f941a91aa4',1,'PaintingArea']]], + ['historygoforward_67',['historyGoForward',['../class_painting_area.html#aecc72f0f5971244205194934ff721546',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/all_7.html b/docs-src/html/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/docs-src/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_7.js b/docs-src/html/search/all_7.js new file mode 100644 index 0000000..1ae5b00 --- /dev/null +++ b/docs-src/html/search/all_7.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['image_68',['image',['../struct_layer_object.html#af01a139bc8edfdbb338393874e89bd83',1,'LayerObject']]], + ['imagedata_69',['imageData',['../class_intelli_image.html#a2431be82e9e85dd34b62a7f7cba053c2',1,'IntelliImage']]], + ['imagetype_70',['ImageType',['../_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0',1,'IntelliImage.h']]], + ['intellicolorpicker_71',['IntelliColorPicker',['../class_intelli_color_picker.html',1,'IntelliColorPicker'],['../class_intelli_color_picker.html#a0d1247bdd87add1396ea5d9acaad79ae',1,'IntelliColorPicker::IntelliColorPicker()']]], + ['intellicolorpicker_2ecpp_72',['IntelliColorPicker.cpp',['../_intelli_color_picker_8cpp.html',1,'']]], + ['intellicolorpicker_2eh_73',['IntelliColorPicker.h',['../_intelli_color_picker_8h.html',1,'']]], + ['intellidatamanager_74',['IntelliDatamanager',['../namespace_intelli_datamanager.html',1,'']]], + ['intellidatamanager_2ecpp_75',['IntelliDatamanager.cpp',['../_intelli_datamanager_8cpp.html',1,'']]], + ['intellidatamanager_2eh_76',['IntelliDatamanager.h',['../_intelli_datamanager_8h.html',1,'']]], + ['intelliimage_77',['IntelliImage',['../class_intelli_image.html',1,'IntelliImage'],['../class_intelli_image.html#a2c6632ff35ee0a7094a8a289eb3a8652',1,'IntelliImage::IntelliImage()']]], + ['intelliimage_2ecpp_78',['IntelliImage.cpp',['../_intelli_image_8cpp.html',1,'']]], + ['intelliimage_2eh_79',['IntelliImage.h',['../_intelli_image_8h.html',1,'']]], + ['intelliinputdialog_80',['IntelliInputDialog',['../class_intelli_input_dialog.html',1,'IntelliInputDialog'],['../class_intelli_input_dialog.html#aa276ec605b08b19d70c54654cc606cc5',1,'IntelliInputDialog::IntelliInputDialog()']]], + ['intelliinputdialog_2ecpp_81',['IntelliInputDialog.cpp',['../_intelli_input_dialog_8cpp.html',1,'']]], + ['intelliinputdialog_2eh_82',['IntelliInputDialog.h',['../_intelli_input_dialog_8h.html',1,'']]], + ['intelliphotogui_83',['IntelliPhotoGui',['../class_intelli_photo_gui.html',1,'IntelliPhotoGui'],['../class_intelli_photo_gui.html#ad2aaec3c1517a9aaa461b54e341b97e0',1,'IntelliPhotoGui::IntelliPhotoGui()']]], + ['intelliphotogui_2ecpp_84',['IntelliPhotoGui.cpp',['../_intelli_photo_gui_8cpp.html',1,'']]], + ['intelliphotogui_2eh_85',['IntelliPhotoGui.h',['../_intelli_photo_gui_8h.html',1,'']]], + ['intellirasterimage_86',['IntelliRasterImage',['../class_intelli_raster_image.html',1,'IntelliRasterImage'],['../class_intelli_raster_image.html#ae779b571372296f1922af818ba003413',1,'IntelliRasterImage::IntelliRasterImage()']]], + ['intellirasterimage_2ecpp_87',['IntelliRasterImage.cpp',['../_intelli_raster_image_8cpp.html',1,'']]], + ['intellirasterimage_2eh_88',['IntelliRasterImage.h',['../_intelli_raster_image_8h.html',1,'']]], + ['intellirendersettings_89',['IntelliRenderSettings',['../class_intelli_render_settings.html',1,'IntelliRenderSettings'],['../class_intelli_render_settings.html#a4a01de6e5e8e516a7eae51d6f1f66529',1,'IntelliRenderSettings::IntelliRenderSettings()']]], + ['intellirendersettings_2ecpp_90',['IntelliRenderSettings.cpp',['../_intelli_render_settings_8cpp.html',1,'']]], + ['intellirendersettings_2eh_91',['IntelliRenderSettings.h',['../_intelli_render_settings_8h.html',1,'']]], + ['intellishapedimage_92',['IntelliShapedImage',['../class_intelli_shaped_image.html',1,'IntelliShapedImage'],['../class_intelli_shaped_image.html#ae2e612a1fa52d7f878b34a7a7022d8e9',1,'IntelliShapedImage::IntelliShapedImage()']]], + ['intellishapedimage_2ecpp_93',['IntelliShapedImage.cpp',['../_intelli_shaped_image_8cpp.html',1,'']]], + ['intellishapedimage_2eh_94',['IntelliShapedImage.h',['../_intelli_shaped_image_8h.html',1,'']]], + ['intellitool_95',['IntelliTool',['../class_intelli_tool.html',1,'IntelliTool'],['../class_intelli_tool.html#a08ef094271ce6248b42f888472463526',1,'IntelliTool::IntelliTool()']]], + ['intellitool_2ecpp_96',['IntelliTool.cpp',['../_intelli_tool_8cpp.html',1,'']]], + ['intellitool_2eh_97',['IntelliTool.h',['../_intelli_tool_8h.html',1,'']]], + ['intellitoolcircle_98',['IntelliToolCircle',['../class_intelli_tool_circle.html',1,'IntelliToolCircle'],['../class_intelli_tool_circle.html#a835327842fb71cb6a505e260ac5b69c8',1,'IntelliToolCircle::IntelliToolCircle()']]], + ['intellitoolcircle_2ecpp_99',['IntelliToolCircle.cpp',['../_intelli_tool_circle_8cpp.html',1,'']]], + ['intellitoolcircle_2eh_100',['IntelliToolCircle.h',['../_intelli_tool_circle_8h.html',1,'']]], + ['intellitoolfloodfill_101',['IntelliToolFloodFill',['../class_intelli_tool_flood_fill.html',1,'IntelliToolFloodFill'],['../class_intelli_tool_flood_fill.html#a0b283b1b0135ff909a7199be9da9c076',1,'IntelliToolFloodFill::IntelliToolFloodFill()']]], + ['intellitoolfloodfill_2ecpp_102',['IntelliToolFloodFill.cpp',['../_intelli_tool_flood_fill_8cpp.html',1,'']]], + ['intellitoolfloodfill_2eh_103',['IntelliToolFloodFill.h',['../_intelli_tool_flood_fill_8h.html',1,'']]], + ['intellitoolgradient_104',['IntelliToolGradient',['../class_intelli_tool_gradient.html',1,'IntelliToolGradient'],['../class_intelli_tool_gradient.html#ad29617596a4dcf09aa8bcc633d627203',1,'IntelliToolGradient::IntelliToolGradient()']]], + ['intellitoolgradient_2ecpp_105',['IntelliToolGradient.cpp',['../_intelli_tool_gradient_8cpp.html',1,'']]], + ['intellitoolgradient_2eh_106',['IntelliToolGradient.h',['../_intelli_tool_gradient_8h.html',1,'']]], + ['intellitoolline_107',['IntelliToolLine',['../class_intelli_tool_line.html',1,'IntelliToolLine'],['../class_intelli_tool_line.html#a111e83e0f0fec7d4ff773ba9f235e4dc',1,'IntelliToolLine::IntelliToolLine()']]], + ['intellitoolline_2ecpp_108',['IntelliToolLine.cpp',['../_intelli_tool_line_8cpp.html',1,'']]], + ['intellitoolline_2eh_109',['IntelliToolLine.h',['../_intelli_tool_line_8h.html',1,'']]], + ['intellitoolpen_110',['IntelliToolPen',['../class_intelli_tool_pen.html',1,'IntelliToolPen'],['../class_intelli_tool_pen.html#a9f885143d6bb7adda3dcd3707d59e14d',1,'IntelliToolPen::IntelliToolPen()']]], + ['intellitoolpen_2ecpp_111',['IntelliToolPen.cpp',['../_intelli_tool_pen_8cpp.html',1,'']]], + ['intellitoolpen_2eh_112',['IntelliToolPen.h',['../_intelli_tool_pen_8h.html',1,'']]], + ['intellitoolplain_2ecpp_113',['IntelliToolPlain.cpp',['../_intelli_tool_plain_8cpp.html',1,'']]], + ['intellitoolplain_2eh_114',['IntelliToolPlain.h',['../_intelli_tool_plain_8h.html',1,'']]], + ['intellitoolplaintool_115',['IntelliToolPlainTool',['../class_intelli_tool_plain_tool.html',1,'IntelliToolPlainTool'],['../class_intelli_tool_plain_tool.html#a816bcd6aea046994420969bed8b139d2',1,'IntelliToolPlainTool::IntelliToolPlainTool()']]], + ['intellitoolpolygon_116',['IntelliToolPolygon',['../class_intelli_tool_polygon.html',1,'IntelliToolPolygon'],['../class_intelli_tool_polygon.html#a63b8c7514a87d4608533fbb557ee0db5',1,'IntelliToolPolygon::IntelliToolPolygon()']]], + ['intellitoolpolygon_2ecpp_117',['IntelliToolPolygon.cpp',['../_intelli_tool_polygon_8cpp.html',1,'']]], + ['intellitoolpolygon_2eh_118',['IntelliToolPolygon.h',['../_intelli_tool_polygon_8h.html',1,'']]], + ['intellitoolrectangle_119',['IntelliToolRectangle',['../class_intelli_tool_rectangle.html',1,'IntelliToolRectangle'],['../class_intelli_tool_rectangle.html#ada06457247d5b173888a9a520b31ec5c',1,'IntelliToolRectangle::IntelliToolRectangle()']]], + ['intellitoolrectangle_2ecpp_120',['IntelliToolRectangle.cpp',['../_intelli_tool_rectangle_8cpp.html',1,'']]], + ['intellitoolrectangle_2eh_121',['IntelliToolRectangle.h',['../_intelli_tool_rectangle_8h.html',1,'']]], + ['intellitoolsettings_122',['IntelliToolsettings',['../class_intelli_toolsettings.html',1,'IntelliToolsettings'],['../class_intelli_toolsettings.html#a5560602964ab95380967d63ab7ec6e69',1,'IntelliToolsettings::IntelliToolsettings()']]], + ['intellitoolsettings_2ecpp_123',['IntelliToolsettings.cpp',['../_intelli_toolsettings_8cpp.html',1,'']]], + ['intellitoolsettings_2eh_124',['IntelliToolsettings.h',['../_intelli_toolsettings_8h.html',1,'']]], + ['intellitriangulation_125',['IntelliTriangulation',['../namespace_intelli_triangulation.html',1,'']]], + ['intellitriangulation_2ecpp_126',['IntelliTriangulation.cpp',['../_intelli_triangulation_8cpp.html',1,'']]], + ['intellitriangulation_2eh_127',['IntelliTriangulation.h',['../_intelli_triangulation_8h.html',1,'']]], + ['isdrawing_128',['isDrawing',['../class_intelli_tool.html#a555aa8a74992327f740dd69b3bb0ccca',1,'IntelliTool']]], + ['isfastrenderering_129',['isFastRenderering',['../class_intelli_render_settings.html#a38fd592c4948d2e47b95bb6fabc34073',1,'IntelliRenderSettings']]], + ['isfastrendering_130',['isFastRendering',['../class_intelli_image.html#a47941bed3060d8df5f2edce8c7f046cb',1,'IntelliImage']]], + ['isinpolygon_131',['isInPolygon',['../namespace_intelli_triangulation.html#ac276696f29d141ed34614c1c3b1c040f',1,'IntelliTriangulation']]], + ['isintriangle_132',['isInTriangle',['../namespace_intelli_triangulation.html#ac150fee67fd41a451bd2592f10e00197',1,'IntelliTriangulation']]] +]; diff --git a/docs-src/html/search/all_8.html b/docs-src/html/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/docs-src/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_8.js b/docs-src/html/search/all_8.js new file mode 100644 index 0000000..2d2951e --- /dev/null +++ b/docs-src/html/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['layerobject_133',['LayerObject',['../struct_layer_object.html',1,'LayerObject'],['../struct_layer_object.html#a0c4519287423c097acb2a0764913f7d0',1,'LayerObject::LayerObject()'],['../struct_layer_object.html#a2b8ffdba5ec6fb69eb6f59e97aced98a',1,'LayerObject::LayerObject(const LayerObject &layer)']]], + ['line_134',['LINE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa17b8ef2c330f1430e00c9de5469fc7e7',1,'IntelliTool']]], + ['loadimage_135',['loadImage',['../class_intelli_image.html#ae231800aba38c96074bbe9bb6e341d4e',1,'IntelliImage']]], + ['loadproject_136',['loadProject',['../namespace_intelli_datamanager.html#a41920e07aa9e0b2756323779f7fe8de2',1,'IntelliDatamanager']]] +]; diff --git a/docs-src/html/search/all_9.html b/docs-src/html/search/all_9.html new file mode 100644 index 0000000..690785a --- /dev/null +++ b/docs-src/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_9.js b/docs-src/html/search/all_9.js new file mode 100644 index 0000000..bb41402 --- /dev/null +++ b/docs-src/html/search/all_9.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['main_137',['main',['../main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main.cpp']]], + ['main_2ecpp_138',['main.cpp',['../main_8cpp.html',1,'']]], + ['mainunittest_2ecpp_139',['mainUnitTest.cpp',['../main_unit_test_8cpp.html',1,'']]], + ['mousemoveevent_140',['mouseMoveEvent',['../class_painting_area.html#aa22e274b6094a9619f196cd7b49526b5',1,'PaintingArea']]], + ['mousepressevent_141',['mousePressEvent',['../class_painting_area.html#abfe445f8d9b70ae42bfeda874127dd15',1,'PaintingArea']]], + ['mousereleaseevent_142',['mouseReleaseEvent',['../class_painting_area.html#a35b5df914acb608cc29717659793359c',1,'PaintingArea']]], + ['moveactivelayer_143',['moveActiveLayer',['../class_painting_area.html#ae05f6893fb44bfcb34018573a609cd1a',1,'PaintingArea']]], + ['movepositionactive_144',['movePositionActive',['../class_painting_area.html#ac6d089f4357b22d9a9906fd4771de3e7',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/all_a.html b/docs-src/html/search/all_a.html new file mode 100644 index 0000000..f2f3d3a --- /dev/null +++ b/docs-src/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_a.js b/docs-src/html/search/all_a.js new file mode 100644 index 0000000..4b782ea --- /dev/null +++ b/docs-src/html/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_145',['NONE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fab50339a10e1de285ac99d4c3990b8693',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/all_b.html b/docs-src/html/search/all_b.html new file mode 100644 index 0000000..14f3403 --- /dev/null +++ b/docs-src/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_b.js b/docs-src/html/search/all_b.js new file mode 100644 index 0000000..ecee29e --- /dev/null +++ b/docs-src/html/search/all_b.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['onmouseleftpressed_146',['onMouseLeftPressed',['../class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c',1,'IntelliTool::onMouseLeftPressed()'],['../class_intelli_tool_circle.html#ae883b8ae833c78a8867e626c600f9639',1,'IntelliToolCircle::onMouseLeftPressed()'],['../class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961',1,'IntelliToolFloodFill::onMouseLeftPressed()'],['../class_intelli_tool_gradient.html#a47700908dab413203d06d64175a12cc1',1,'IntelliToolGradient::onMouseLeftPressed()'],['../class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846',1,'IntelliToolLine::onMouseLeftPressed()'],['../class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205',1,'IntelliToolPen::onMouseLeftPressed()'],['../class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9',1,'IntelliToolPlainTool::onMouseLeftPressed()'],['../class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d',1,'IntelliToolPolygon::onMouseLeftPressed()'],['../class_intelli_tool_rectangle.html#ae03c307ccf66cbe3fd59e3657712368d',1,'IntelliToolRectangle::onMouseLeftPressed()']]], + ['onmouseleftreleased_147',['onMouseLeftReleased',['../class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b',1,'IntelliTool::onMouseLeftReleased()'],['../class_intelli_tool_circle.html#ad8e438ec997c57262b5efc2db4cee1a3',1,'IntelliToolCircle::onMouseLeftReleased()'],['../class_intelli_tool_flood_fill.html#a7438ef96c6c36068bce76e2364e8594c',1,'IntelliToolFloodFill::onMouseLeftReleased()'],['../class_intelli_tool_gradient.html#a6bbe09b64d8cd69e5ff64a3344725b11',1,'IntelliToolGradient::onMouseLeftReleased()'],['../class_intelli_tool_line.html#ac93f76ff20a1c111a403b298bab02482',1,'IntelliToolLine::onMouseLeftReleased()'],['../class_intelli_tool_pen.html#abda7a22b9766fa4ad254324a53cab94d',1,'IntelliToolPen::onMouseLeftReleased()'],['../class_intelli_tool_plain_tool.html#ac23f5d0f07e42fd7c2ea3fc1347da400',1,'IntelliToolPlainTool::onMouseLeftReleased()'],['../class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21',1,'IntelliToolPolygon::onMouseLeftReleased()'],['../class_intelli_tool_rectangle.html#a94460e3ff1c19e80bde922c55f53cc43',1,'IntelliToolRectangle::onMouseLeftReleased()']]], + ['onmousemoved_148',['onMouseMoved',['../class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639',1,'IntelliTool::onMouseMoved()'],['../class_intelli_tool_circle.html#a90ee58c5390a86afc75c14ca79b91d7b',1,'IntelliToolCircle::onMouseMoved()'],['../class_intelli_tool_flood_fill.html#a3cd42cea99bc7583875abcc0c274c668',1,'IntelliToolFloodFill::onMouseMoved()'],['../class_intelli_tool_gradient.html#aff3ccbecb7a33514765fdb44c7ce9e4e',1,'IntelliToolGradient::onMouseMoved()'],['../class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b',1,'IntelliToolLine::onMouseMoved()'],['../class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2',1,'IntelliToolPen::onMouseMoved()'],['../class_intelli_tool_plain_tool.html#ad7546a6335bb3bb4cbf0e1883788d41c',1,'IntelliToolPlainTool::onMouseMoved()'],['../class_intelli_tool_polygon.html#a0e3a1135f04c73c159137ae219a38922',1,'IntelliToolPolygon::onMouseMoved()'],['../class_intelli_tool_rectangle.html#a4b5931071e21eb6949ffe357315e408b',1,'IntelliToolRectangle::onMouseMoved()']]], + ['onmouserightpressed_149',['onMouseRightPressed',['../class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966',1,'IntelliTool::onMouseRightPressed()'],['../class_intelli_tool_circle.html#a29d7b9ed4960e6fe1f31ff620363e429',1,'IntelliToolCircle::onMouseRightPressed()'],['../class_intelli_tool_flood_fill.html#ada0f7154d119102410a55038763a17e4',1,'IntelliToolFloodFill::onMouseRightPressed()'],['../class_intelli_tool_gradient.html#aed5ad1f718d53034d944ff8f1e8f9f36',1,'IntelliToolGradient::onMouseRightPressed()'],['../class_intelli_tool_line.html#a6cce59f3017936214b10b47252a898a3',1,'IntelliToolLine::onMouseRightPressed()'],['../class_intelli_tool_pen.html#a1751e3864a0d36ef42ca55021cae73ce',1,'IntelliToolPen::onMouseRightPressed()'],['../class_intelli_tool_plain_tool.html#acb0c46e16d2c09370a2244a936de38b1',1,'IntelliToolPlainTool::onMouseRightPressed()'],['../class_intelli_tool_polygon.html#aa36b012b48311c36e7cd6771a5081427',1,'IntelliToolPolygon::onMouseRightPressed()'],['../class_intelli_tool_rectangle.html#a480c6804a4963c5a1c3f7ef84b63c1a8',1,'IntelliToolRectangle::onMouseRightPressed()']]], + ['onmouserightreleased_150',['onMouseRightReleased',['../class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0',1,'IntelliTool::onMouseRightReleased()'],['../class_intelli_tool_circle.html#aca07540f2f7ccb3d2c0b84890c1afc4c',1,'IntelliToolCircle::onMouseRightReleased()'],['../class_intelli_tool_flood_fill.html#a39cf49c0ce46f96be3510f0b70c9d892',1,'IntelliToolFloodFill::onMouseRightReleased()'],['../class_intelli_tool_gradient.html#a04315a520c97541d76e7723a07e0a834',1,'IntelliToolGradient::onMouseRightReleased()'],['../class_intelli_tool_line.html#a6214918cba5753f89d97de4559a2b9b2',1,'IntelliToolLine::onMouseRightReleased()'],['../class_intelli_tool_pen.html#abf8562e8cd2da586afdf4d47b3a4ff13',1,'IntelliToolPen::onMouseRightReleased()'],['../class_intelli_tool_plain_tool.html#a2ae458f1b04eb77a47f6dca5e91e33b8',1,'IntelliToolPlainTool::onMouseRightReleased()'],['../class_intelli_tool_polygon.html#a47cad87cd02b128b02dc929713bd1d1b',1,'IntelliToolPolygon::onMouseRightReleased()'],['../class_intelli_tool_rectangle.html#ad43f653256a6516b9398f82054be0d7f',1,'IntelliToolRectangle::onMouseRightReleased()']]], + ['onwheelscrolled_151',['onWheelScrolled',['../class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574',1,'IntelliTool::onWheelScrolled()'],['../class_intelli_tool_circle.html#ae2d9b0fb6695c184c4cb507a5fb75506',1,'IntelliToolCircle::onWheelScrolled()'],['../class_intelli_tool_flood_fill.html#ad58cc7c065123beb6b0270f99e99b991',1,'IntelliToolFloodFill::onWheelScrolled()'],['../class_intelli_tool_gradient.html#a11f77ac474b697ebb6bc185560437f6a',1,'IntelliToolGradient::onWheelScrolled()'],['../class_intelli_tool_line.html#aaf1d686e1ec43f41b5186ccfd806b125',1,'IntelliToolLine::onWheelScrolled()'],['../class_intelli_tool_pen.html#afe3626ddff440ab125f4a2465c45427a',1,'IntelliToolPen::onWheelScrolled()'],['../class_intelli_tool_plain_tool.html#adc004ea421e2cc0ac39cc7a6b6d43d0d',1,'IntelliToolPlainTool::onWheelScrolled()'],['../class_intelli_tool_polygon.html#a713103300c9f023d64d9eec5ac05dd17',1,'IntelliToolPolygon::onWheelScrolled()'],['../class_intelli_tool_rectangle.html#a445c53a56e859f970e59f5036e221e0c',1,'IntelliToolRectangle::onWheelScrolled()']]], + ['open_152',['open',['../class_painting_area.html#a88c7e759aa8375a56129791645f46ea5',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/all_c.html b/docs-src/html/search/all_c.html new file mode 100644 index 0000000..da60ab8 --- /dev/null +++ b/docs-src/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_c.js b/docs-src/html/search/all_c.js new file mode 100644 index 0000000..066aa34 --- /dev/null +++ b/docs-src/html/search/all_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['paintevent_153',['paintEvent',['../class_painting_area.html#a4a8138b9508ee4ec87a7fca9160368a7',1,'PaintingArea']]], + ['paintingarea_154',['PaintingArea',['../class_painting_area.html',1,'PaintingArea'],['../class_painting_area.html#a4fa0ec23e78cc59f28c823584c721460',1,'PaintingArea::PaintingArea()']]], + ['paintingarea_2ecpp_155',['PaintingArea.cpp',['../_painting_area_8cpp.html',1,'']]], + ['paintingarea_2eh_156',['PaintingArea.h',['../_painting_area_8h.html',1,'']]], + ['pen_157',['PEN',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fad3fa1aa45b9fe56e1fc1b558d8ed6678',1,'IntelliTool']]], + ['pi_158',['pi',['../_intelli_triangulation_8cpp.html#a1daf785e3f68d293c7caa1c756d5cb74',1,'IntelliTriangulation.cpp']]], + ['plain_159',['PLAIN',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8faf62eb0bf5e5c72e80983fbbac1cb70e5',1,'IntelliTool']]], + ['polygon_160',['POLYGON',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8faecdc92bf56d960b73b02ee40125758bc',1,'IntelliTool']]], + ['polygondata_161',['polygonData',['../class_intelli_shaped_image.html#a727d19ce314c0874be6b0633a3a603c8',1,'IntelliShapedImage']]] +]; diff --git a/docs-src/html/search/all_d.html b/docs-src/html/search/all_d.html new file mode 100644 index 0000000..bc376fe --- /dev/null +++ b/docs-src/html/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_d.js b/docs-src/html/search/all_d.js new file mode 100644 index 0000000..8595cf2 --- /dev/null +++ b/docs-src/html/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['rasterimage_162',['RASTERIMAGE',['../_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0add5823fd73c42c0154fa2abbd70283b9',1,'IntelliImage.h']]], + ['rectangle_163',['RECTANGLE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa8e8e58fe94ab307a826e087028a7c01a',1,'IntelliTool']]], + ['resizeimage_164',['resizeImage',['../class_intelli_image.html#a177403ab9585d4ba31984a644c54d310',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/all_e.html b/docs-src/html/search/all_e.html new file mode 100644 index 0000000..2e3c74d --- /dev/null +++ b/docs-src/html/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_e.js b/docs-src/html/search/all_e.js new file mode 100644 index 0000000..ac992ee --- /dev/null +++ b/docs-src/html/search/all_e.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['save_165',['save',['../class_painting_area.html#aa2463d4f403224086acab02903ae407e',1,'PaintingArea']]], + ['saveproject_166',['saveProject',['../namespace_intelli_datamanager.html#ac02f6f47ff8785ad9d49588baaca3d54',1,'IntelliDatamanager']]], + ['setcanvasdimensions_167',['setCanvasDimensions',['../class_painting_area.html#a3bfc63de27c54f3edf9feb3af538343c',1,'PaintingArea']]], + ['setfastrendering_168',['setFastRendering',['../class_intelli_render_settings.html#a5ffb878b77e5d448ffe4eb03a8397ac2',1,'IntelliRenderSettings']]], + ['setfirstcolor_169',['setFirstColor',['../class_intelli_color_picker.html#a7e2ddbbbfbed383f06b24e5bf6b27ae8',1,'IntelliColorPicker']]], + ['setimagedata_170',['setImageData',['../class_intelli_image.html#ab09c64e7559f3db32ca3b20ba6339268',1,'IntelliImage']]], + ['setinneralpha_171',['setInnerAlpha',['../class_intelli_toolsettings.html#a9a61f3de61efeba2287f8b32941f4271',1,'IntelliToolsettings']]], + ['setlayeractive_172',['setLayerActive',['../class_painting_area.html#a79eb059829f27e8cdb3a54c5cd3d12c9',1,'PaintingArea']]], + ['setlayeralpha_173',['setLayerAlpha',['../class_painting_area.html#a6c7e0865e684ae1089ee283b4399d055',1,'PaintingArea']]], + ['setlinewidth_174',['setLineWidth',['../class_intelli_toolsettings.html#a73fa94c85c6c2fdc1a33975a33304a6f',1,'IntelliToolsettings']]], + ['setpolygon_175',['setPolygon',['../class_intelli_image.html#aa4b3f4631bd972456917275afb9fd309',1,'IntelliImage::setPolygon()'],['../class_intelli_raster_image.html#a6462fa5f94c5e64e9e1f0c4658e0507b',1,'IntelliRasterImage::setPolygon()'],['../class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e',1,'IntelliShapedImage::setPolygon()'],['../class_painting_area.html#aa409492ac26483d618bb33616f2e3f81',1,'PaintingArea::setPolygon()']]], + ['setpolygondatatoactive_176',['setPolygonDataToActive',['../class_painting_area.html#aac7d7bca37e0d7c7d077b65224795577',1,'PaintingArea']]], + ['setrendersettings_177',['setRenderSettings',['../class_painting_area.html#a63be0831e5b6ceb8cc622d83aa28f0bd',1,'PaintingArea']]], + ['setsecondcolor_178',['setSecondColor',['../class_intelli_color_picker.html#a86bf4a940e4a0e465e30cbdf28748931',1,'IntelliColorPicker']]], + ['settoolwidth_179',['setToolWidth',['../class_intelli_photo_gui.html#a343f8ebf5d27b7242208747de6c92497',1,'IntelliPhotoGui']]], + ['shapedimage_180',['SHAPEDIMAGE',['../_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0ac065b60ec4cf443808263527bdc0df37',1,'IntelliImage.h']]], + ['sign_181',['sign',['../namespace_intelli_triangulation.html#af9af549a7faff35a74c1265b290ea0ca',1,'IntelliTriangulation']]], + ['slotactivatelayer_182',['slotActivateLayer',['../class_painting_area.html#a71ac281e0de263208d4a3b9de74258ec',1,'PaintingArea']]], + ['slotcloseevent_183',['slotCloseEvent',['../class_intelli_input_dialog.html#ae59e68446caab323945ea725f69e89b0',1,'IntelliInputDialog']]], + ['slotdeleteactivelayer_184',['slotDeleteActiveLayer',['../class_painting_area.html#a1ff0b9c1227531943c9cec2c546fae5e',1,'PaintingArea']]], + ['sloteingabe_185',['slotEingabe',['../class_intelli_input_dialog.html#a23f837147e6aab3d8e0aff9d0f7012bd',1,'IntelliInputDialog']]], + ['swapcolors_186',['swapColors',['../class_intelli_color_picker.html#aec499265ae28ce1b54be88222e74292e',1,'IntelliColorPicker']]] +]; diff --git a/docs-src/html/search/all_f.html b/docs-src/html/search/all_f.html new file mode 100644 index 0000000..246f8ab --- /dev/null +++ b/docs-src/html/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/all_f.js b/docs-src/html/search/all_f.js new file mode 100644 index 0000000..7cfddc2 --- /dev/null +++ b/docs-src/html/search/all_f.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['toolsettings_187',['Toolsettings',['../class_painting_area.html#abc2f798744f1dc805a651731eb1692ea',1,'PaintingArea::Toolsettings()'],['../class_intelli_tool.html#a55f6b45b416b7d790fa8bc09603bf67f',1,'IntelliTool::Toolsettings()']]], + ['tooltype_188',['Tooltype',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8f',1,'IntelliTool']]], + ['triangle_189',['Triangle',['../struct_triangle.html',1,'']]], + ['tst_5funittest_2ecpp_190',['tst_unittest.cpp',['../tst__unittest_8cpp.html',1,'']]], + ['typeofimage_191',['TypeOfImage',['../class_intelli_image.html#ac460f75e1fa7e44b00a65e7fddac5b80',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/classes_0.html b/docs-src/html/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/docs-src/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/classes_0.js b/docs-src/html/search/classes_0.js new file mode 100644 index 0000000..96261a2 --- /dev/null +++ b/docs-src/html/search/classes_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['intellicolorpicker_214',['IntelliColorPicker',['../class_intelli_color_picker.html',1,'']]], + ['intelliimage_215',['IntelliImage',['../class_intelli_image.html',1,'']]], + ['intelliinputdialog_216',['IntelliInputDialog',['../class_intelli_input_dialog.html',1,'']]], + ['intelliphotogui_217',['IntelliPhotoGui',['../class_intelli_photo_gui.html',1,'']]], + ['intellirasterimage_218',['IntelliRasterImage',['../class_intelli_raster_image.html',1,'']]], + ['intellirendersettings_219',['IntelliRenderSettings',['../class_intelli_render_settings.html',1,'']]], + ['intellishapedimage_220',['IntelliShapedImage',['../class_intelli_shaped_image.html',1,'']]], + ['intellitool_221',['IntelliTool',['../class_intelli_tool.html',1,'']]], + ['intellitoolcircle_222',['IntelliToolCircle',['../class_intelli_tool_circle.html',1,'']]], + ['intellitoolfloodfill_223',['IntelliToolFloodFill',['../class_intelli_tool_flood_fill.html',1,'']]], + ['intellitoolgradient_224',['IntelliToolGradient',['../class_intelli_tool_gradient.html',1,'']]], + ['intellitoolline_225',['IntelliToolLine',['../class_intelli_tool_line.html',1,'']]], + ['intellitoolpen_226',['IntelliToolPen',['../class_intelli_tool_pen.html',1,'']]], + ['intellitoolplaintool_227',['IntelliToolPlainTool',['../class_intelli_tool_plain_tool.html',1,'']]], + ['intellitoolpolygon_228',['IntelliToolPolygon',['../class_intelli_tool_polygon.html',1,'']]], + ['intellitoolrectangle_229',['IntelliToolRectangle',['../class_intelli_tool_rectangle.html',1,'']]], + ['intellitoolsettings_230',['IntelliToolsettings',['../class_intelli_toolsettings.html',1,'']]] +]; diff --git a/docs-src/html/search/classes_1.html b/docs-src/html/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/docs-src/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/classes_1.js b/docs-src/html/search/classes_1.js new file mode 100644 index 0000000..ea8126e --- /dev/null +++ b/docs-src/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['layerobject_231',['LayerObject',['../struct_layer_object.html',1,'']]] +]; diff --git a/docs-src/html/search/classes_2.html b/docs-src/html/search/classes_2.html new file mode 100644 index 0000000..0d1e8a0 --- /dev/null +++ b/docs-src/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/classes_2.js b/docs-src/html/search/classes_2.js new file mode 100644 index 0000000..6ff5400 --- /dev/null +++ b/docs-src/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paintingarea_232',['PaintingArea',['../class_painting_area.html',1,'']]] +]; diff --git a/docs-src/html/search/classes_3.html b/docs-src/html/search/classes_3.html new file mode 100644 index 0000000..2102545 --- /dev/null +++ b/docs-src/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/classes_3.js b/docs-src/html/search/classes_3.js new file mode 100644 index 0000000..4d53ddb --- /dev/null +++ b/docs-src/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['triangle_233',['Triangle',['../struct_triangle.html',1,'']]] +]; diff --git a/docs-src/html/search/classes_4.html b/docs-src/html/search/classes_4.html new file mode 100644 index 0000000..095ab59 --- /dev/null +++ b/docs-src/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/classes_4.js b/docs-src/html/search/classes_4.js new file mode 100644 index 0000000..58278a9 --- /dev/null +++ b/docs-src/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unittest_234',['UnitTest',['../class_unit_test.html',1,'']]] +]; diff --git a/docs-src/html/search/close.png b/docs-src/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/docs-src/html/search/defines_0.html b/docs-src/html/search/defines_0.html new file mode 100644 index 0000000..2deb369 --- /dev/null +++ b/docs-src/html/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/defines_0.js b/docs-src/html/search/defines_0.js new file mode 100644 index 0000000..7f1d4a9 --- /dev/null +++ b/docs-src/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pi_447',['pi',['../_intelli_triangulation_8cpp.html#a1daf785e3f68d293c7caa1c756d5cb74',1,'IntelliTriangulation.cpp']]] +]; diff --git a/docs-src/html/search/enums_0.html b/docs-src/html/search/enums_0.html new file mode 100644 index 0000000..9669700 --- /dev/null +++ b/docs-src/html/search/enums_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enums_0.js b/docs-src/html/search/enums_0.js new file mode 100644 index 0000000..73b215f --- /dev/null +++ b/docs-src/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['imagetype_434',['ImageType',['../_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0',1,'IntelliImage.h']]] +]; diff --git a/docs-src/html/search/enums_1.html b/docs-src/html/search/enums_1.html new file mode 100644 index 0000000..dfec174 --- /dev/null +++ b/docs-src/html/search/enums_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enums_1.js b/docs-src/html/search/enums_1.js new file mode 100644 index 0000000..cd72e72 --- /dev/null +++ b/docs-src/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tooltype_435',['Tooltype',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8f',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enums_2.html b/docs-src/html/search/enums_2.html new file mode 100644 index 0000000..6d4d754 --- /dev/null +++ b/docs-src/html/search/enums_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enums_2.js b/docs-src/html/search/enums_2.js new file mode 100644 index 0000000..de14f1e --- /dev/null +++ b/docs-src/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tooltype_358',['Tooltype',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8f',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_0.html b/docs-src/html/search/enumvalues_0.html new file mode 100644 index 0000000..9286248 --- /dev/null +++ b/docs-src/html/search/enumvalues_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_0.js b/docs-src/html/search/enumvalues_0.js new file mode 100644 index 0000000..e63d82b --- /dev/null +++ b/docs-src/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['circle_436',['CIRCLE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa0af50777920c1401ab975cab64c4d491',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_1.html b/docs-src/html/search/enumvalues_1.html new file mode 100644 index 0000000..e22a79f --- /dev/null +++ b/docs-src/html/search/enumvalues_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_1.js b/docs-src/html/search/enumvalues_1.js new file mode 100644 index 0000000..8465548 --- /dev/null +++ b/docs-src/html/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['floodfill_437',['FLOODFILL',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa526904ea67131c56718f9882518b5d93',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_2.html b/docs-src/html/search/enumvalues_2.html new file mode 100644 index 0000000..01a77bf --- /dev/null +++ b/docs-src/html/search/enumvalues_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_2.js b/docs-src/html/search/enumvalues_2.js new file mode 100644 index 0000000..9219bac --- /dev/null +++ b/docs-src/html/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gradient_438',['GRADIENT',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa90f70ea2675c36bd9b0b44a79f37a41f',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_3.html b/docs-src/html/search/enumvalues_3.html new file mode 100644 index 0000000..4e761d6 --- /dev/null +++ b/docs-src/html/search/enumvalues_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_3.js b/docs-src/html/search/enumvalues_3.js new file mode 100644 index 0000000..1419c1f --- /dev/null +++ b/docs-src/html/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['line_439',['LINE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa17b8ef2c330f1430e00c9de5469fc7e7',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_4.html b/docs-src/html/search/enumvalues_4.html new file mode 100644 index 0000000..e2977a0 --- /dev/null +++ b/docs-src/html/search/enumvalues_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_4.js b/docs-src/html/search/enumvalues_4.js new file mode 100644 index 0000000..37838a4 --- /dev/null +++ b/docs-src/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_440',['NONE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fab50339a10e1de285ac99d4c3990b8693',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_5.html b/docs-src/html/search/enumvalues_5.html new file mode 100644 index 0000000..eabdd4b --- /dev/null +++ b/docs-src/html/search/enumvalues_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_5.js b/docs-src/html/search/enumvalues_5.js new file mode 100644 index 0000000..51607b0 --- /dev/null +++ b/docs-src/html/search/enumvalues_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['pen_441',['PEN',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fad3fa1aa45b9fe56e1fc1b558d8ed6678',1,'IntelliTool']]], + ['plain_442',['PLAIN',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8faf62eb0bf5e5c72e80983fbbac1cb70e5',1,'IntelliTool']]], + ['polygon_443',['POLYGON',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8faecdc92bf56d960b73b02ee40125758bc',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_6.html b/docs-src/html/search/enumvalues_6.html new file mode 100644 index 0000000..2476491 --- /dev/null +++ b/docs-src/html/search/enumvalues_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_6.js b/docs-src/html/search/enumvalues_6.js new file mode 100644 index 0000000..f20fa1a --- /dev/null +++ b/docs-src/html/search/enumvalues_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rasterimage_444',['RASTERIMAGE',['../_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0add5823fd73c42c0154fa2abbd70283b9',1,'IntelliImage.h']]], + ['rectangle_445',['RECTANGLE',['../class_intelli_tool.html#a3fbd2584566b3cefcf3c070ae0b69d8fa8e8e58fe94ab307a826e087028a7c01a',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/enumvalues_7.html b/docs-src/html/search/enumvalues_7.html new file mode 100644 index 0000000..5d5ce7e --- /dev/null +++ b/docs-src/html/search/enumvalues_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/enumvalues_7.js b/docs-src/html/search/enumvalues_7.js new file mode 100644 index 0000000..661a033 --- /dev/null +++ b/docs-src/html/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['shapedimage_446',['SHAPEDIMAGE',['../_intelli_image_8h.html#a3154c405c975616503bac23f51b78fc0ac065b60ec4cf443808263527bdc0df37',1,'IntelliImage.h']]] +]; diff --git a/docs-src/html/search/files_0.html b/docs-src/html/search/files_0.html new file mode 100644 index 0000000..737608e --- /dev/null +++ b/docs-src/html/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/files_0.js b/docs-src/html/search/files_0.js new file mode 100644 index 0000000..13baa8f --- /dev/null +++ b/docs-src/html/search/files_0.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['intellicolorpicker_2ecpp_237',['IntelliColorPicker.cpp',['../_intelli_color_picker_8cpp.html',1,'']]], + ['intellicolorpicker_2eh_238',['IntelliColorPicker.h',['../_intelli_color_picker_8h.html',1,'']]], + ['intellidatamanager_2ecpp_239',['IntelliDatamanager.cpp',['../_intelli_datamanager_8cpp.html',1,'']]], + ['intellidatamanager_2eh_240',['IntelliDatamanager.h',['../_intelli_datamanager_8h.html',1,'']]], + ['intelliimage_2ecpp_241',['IntelliImage.cpp',['../_intelli_image_8cpp.html',1,'']]], + ['intelliimage_2eh_242',['IntelliImage.h',['../_intelli_image_8h.html',1,'']]], + ['intelliinputdialog_2ecpp_243',['IntelliInputDialog.cpp',['../_intelli_input_dialog_8cpp.html',1,'']]], + ['intelliinputdialog_2eh_244',['IntelliInputDialog.h',['../_intelli_input_dialog_8h.html',1,'']]], + ['intelliphotogui_2ecpp_245',['IntelliPhotoGui.cpp',['../_intelli_photo_gui_8cpp.html',1,'']]], + ['intelliphotogui_2eh_246',['IntelliPhotoGui.h',['../_intelli_photo_gui_8h.html',1,'']]], + ['intellirasterimage_2ecpp_247',['IntelliRasterImage.cpp',['../_intelli_raster_image_8cpp.html',1,'']]], + ['intellirasterimage_2eh_248',['IntelliRasterImage.h',['../_intelli_raster_image_8h.html',1,'']]], + ['intellirendersettings_2ecpp_249',['IntelliRenderSettings.cpp',['../_intelli_render_settings_8cpp.html',1,'']]], + ['intellirendersettings_2eh_250',['IntelliRenderSettings.h',['../_intelli_render_settings_8h.html',1,'']]], + ['intellishapedimage_2ecpp_251',['IntelliShapedImage.cpp',['../_intelli_shaped_image_8cpp.html',1,'']]], + ['intellishapedimage_2eh_252',['IntelliShapedImage.h',['../_intelli_shaped_image_8h.html',1,'']]], + ['intellitool_2ecpp_253',['IntelliTool.cpp',['../_intelli_tool_8cpp.html',1,'']]], + ['intellitool_2eh_254',['IntelliTool.h',['../_intelli_tool_8h.html',1,'']]], + ['intellitoolcircle_2ecpp_255',['IntelliToolCircle.cpp',['../_intelli_tool_circle_8cpp.html',1,'']]], + ['intellitoolcircle_2eh_256',['IntelliToolCircle.h',['../_intelli_tool_circle_8h.html',1,'']]], + ['intellitoolfloodfill_2ecpp_257',['IntelliToolFloodFill.cpp',['../_intelli_tool_flood_fill_8cpp.html',1,'']]], + ['intellitoolfloodfill_2eh_258',['IntelliToolFloodFill.h',['../_intelli_tool_flood_fill_8h.html',1,'']]], + ['intellitoolgradient_2ecpp_259',['IntelliToolGradient.cpp',['../_intelli_tool_gradient_8cpp.html',1,'']]], + ['intellitoolgradient_2eh_260',['IntelliToolGradient.h',['../_intelli_tool_gradient_8h.html',1,'']]], + ['intellitoolline_2ecpp_261',['IntelliToolLine.cpp',['../_intelli_tool_line_8cpp.html',1,'']]], + ['intellitoolline_2eh_262',['IntelliToolLine.h',['../_intelli_tool_line_8h.html',1,'']]], + ['intellitoolpen_2ecpp_263',['IntelliToolPen.cpp',['../_intelli_tool_pen_8cpp.html',1,'']]], + ['intellitoolpen_2eh_264',['IntelliToolPen.h',['../_intelli_tool_pen_8h.html',1,'']]], + ['intellitoolplain_2ecpp_265',['IntelliToolPlain.cpp',['../_intelli_tool_plain_8cpp.html',1,'']]], + ['intellitoolplain_2eh_266',['IntelliToolPlain.h',['../_intelli_tool_plain_8h.html',1,'']]], + ['intellitoolpolygon_2ecpp_267',['IntelliToolPolygon.cpp',['../_intelli_tool_polygon_8cpp.html',1,'']]], + ['intellitoolpolygon_2eh_268',['IntelliToolPolygon.h',['../_intelli_tool_polygon_8h.html',1,'']]], + ['intellitoolrectangle_2ecpp_269',['IntelliToolRectangle.cpp',['../_intelli_tool_rectangle_8cpp.html',1,'']]], + ['intellitoolrectangle_2eh_270',['IntelliToolRectangle.h',['../_intelli_tool_rectangle_8h.html',1,'']]], + ['intellitoolsettings_2ecpp_271',['IntelliToolsettings.cpp',['../_intelli_toolsettings_8cpp.html',1,'']]], + ['intellitoolsettings_2eh_272',['IntelliToolsettings.h',['../_intelli_toolsettings_8h.html',1,'']]], + ['intellitriangulation_2ecpp_273',['IntelliTriangulation.cpp',['../_intelli_triangulation_8cpp.html',1,'']]], + ['intellitriangulation_2eh_274',['IntelliTriangulation.h',['../_intelli_triangulation_8h.html',1,'']]] +]; diff --git a/docs-src/html/search/files_1.html b/docs-src/html/search/files_1.html new file mode 100644 index 0000000..f27a62d --- /dev/null +++ b/docs-src/html/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/files_1.js b/docs-src/html/search/files_1.js new file mode 100644 index 0000000..de0ecb4 --- /dev/null +++ b/docs-src/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['main_2ecpp_275',['main.cpp',['../main_8cpp.html',1,'']]], + ['mainunittest_2ecpp_276',['mainUnitTest.cpp',['../main_unit_test_8cpp.html',1,'']]] +]; diff --git a/docs-src/html/search/files_2.html b/docs-src/html/search/files_2.html new file mode 100644 index 0000000..a45066e --- /dev/null +++ b/docs-src/html/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/files_2.js b/docs-src/html/search/files_2.js new file mode 100644 index 0000000..158729e --- /dev/null +++ b/docs-src/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['paintingarea_2ecpp_277',['PaintingArea.cpp',['../_painting_area_8cpp.html',1,'']]], + ['paintingarea_2eh_278',['PaintingArea.h',['../_painting_area_8h.html',1,'']]] +]; diff --git a/docs-src/html/search/files_3.html b/docs-src/html/search/files_3.html new file mode 100644 index 0000000..1076bc5 --- /dev/null +++ b/docs-src/html/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/files_3.js b/docs-src/html/search/files_3.js new file mode 100644 index 0000000..336f405 --- /dev/null +++ b/docs-src/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tst_5funittest_2ecpp_279',['tst_unittest.cpp',['../tst__unittest_8cpp.html',1,'']]] +]; diff --git a/docs-src/html/search/functions_0.html b/docs-src/html/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/docs-src/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_0.js b/docs-src/html/search/functions_0.js new file mode 100644 index 0000000..4e85c95 --- /dev/null +++ b/docs-src/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['addlayer_280',['addLayer',['../class_painting_area.html#abd5e3e4d3f2f026383d0a275dc55cbbd',1,'PaintingArea']]], + ['addlayerat_281',['addLayerAt',['../class_painting_area.html#a1274e60a912d2f1dfabcdd1b767fb029',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_1.html b/docs-src/html/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/docs-src/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_1.js b/docs-src/html/search/functions_1.js new file mode 100644 index 0000000..b475388 --- /dev/null +++ b/docs-src/html/search/functions_1.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['calculatetriangles_282',['calculateTriangles',['../namespace_intelli_triangulation.html#acdaf1ed598e868b25e9e06d580da32e5',1,'IntelliTriangulation']]], + ['calculatevisiblity_283',['calculateVisiblity',['../class_intelli_image.html#aebbced93f4744fad81b7f141b21f4ab2',1,'IntelliImage::calculateVisiblity()'],['../class_intelli_raster_image.html#a87cf2d360c129d64a5db0db85818eb60',1,'IntelliRasterImage::calculateVisiblity()']]], + ['closeevent_284',['closeEvent',['../class_intelli_photo_gui.html#a2cf48070236ae8b35245e7f30482ef13',1,'IntelliPhotoGui']]], + ['colorpickersetfirstcolor_285',['colorPickerSetFirstColor',['../class_painting_area.html#a4735d4cf1dc58a9096d904e74c39c4df',1,'PaintingArea']]], + ['colorpickersetsecondcolor_286',['colorPickerSetSecondColor',['../class_painting_area.html#ae261acaaa346610dfed489dbac17e789',1,'PaintingArea']]], + ['colorpickerswapcolors_287',['colorPickerSwapColors',['../class_painting_area.html#acff4563d006fda491469bd41778d07eb',1,'PaintingArea']]], + ['createcircletool_288',['createCircleTool',['../class_painting_area.html#a2d9f4b3585f7dd1acb11f432ca503466',1,'PaintingArea']]], + ['createfloodfilltool_289',['createFloodFillTool',['../class_painting_area.html#a0b22e18069b524f3e75857d203baf256',1,'PaintingArea']]], + ['creategradienttool_290',['createGradientTool',['../class_painting_area.html#ad8636e986fdcdd3146f9f72d3cdb1831',1,'PaintingArea']]], + ['createlinetool_291',['createLineTool',['../class_painting_area.html#a240c33a7875addac86080cdfb0db036a',1,'PaintingArea']]], + ['createpentool_292',['createPenTool',['../class_painting_area.html#a96c6248e343e44b61cf2625cb6d21353',1,'PaintingArea']]], + ['createplaintool_293',['createPlainTool',['../class_painting_area.html#a3de83443d2d5cf460ff48d0602070938',1,'PaintingArea']]], + ['createpolygontool_294',['createPolygonTool',['../class_painting_area.html#a13c2f94644bea9c2d3123d0b7898f34b',1,'PaintingArea']]], + ['createrectangletool_295',['createRectangleTool',['../class_painting_area.html#a5b04ce62ce024e307f54e0281f7ae4bd',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_2.html b/docs-src/html/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/docs-src/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_2.js b/docs-src/html/search/functions_2.js new file mode 100644 index 0000000..a880363 --- /dev/null +++ b/docs-src/html/search/functions_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['deletealllayers_296',['deleteAllLayers',['../class_painting_area.html#af4701dee7ce672d91ed1e80cdd1e7491',1,'PaintingArea']]], + ['deletelayer_297',['deleteLayer',['../class_painting_area.html#a9b7dc8b8dc0b301ce58206aa76fb1630',1,'PaintingArea']]], + ['drawline_298',['drawLine',['../class_intelli_image.html#af8eddbd9aa54c8d37590d1d4bf8dce31',1,'IntelliImage']]], + ['drawpixel_299',['drawPixel',['../class_intelli_image.html#af3c859f5c409e37051edfd9e9fbca056',1,'IntelliImage']]], + ['drawpixelontoactive_300',['drawPixelOntoActive',['../class_painting_area.html#af1b7be20235139e4909086696ea74cf7',1,'PaintingArea']]], + ['drawplain_301',['drawPlain',['../class_intelli_image.html#a6be622810dc2bc756054bb5769becb06',1,'IntelliImage']]], + ['drawpoint_302',['drawPoint',['../class_intelli_image.html#a2e787f1b333b59401643936ebb3dcfe1',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/functions_3.html b/docs-src/html/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/docs-src/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_3.js b/docs-src/html/search/functions_3.js new file mode 100644 index 0000000..9cebdea --- /dev/null +++ b/docs-src/html/search/functions_3.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['getdeepcopy_303',['getDeepCopy',['../class_intelli_image.html#af6381067bdf565669f856bb589008ae9',1,'IntelliImage::getDeepCopy()'],['../class_intelli_raster_image.html#a8f901301b106504de3c27308ade897dc',1,'IntelliRasterImage::getDeepCopy()'],['../class_intelli_shaped_image.html#aed0b31e0fa771104399d1f5ff39a0337',1,'IntelliShapedImage::getDeepCopy()']]], + ['getdisplayable_304',['getDisplayable',['../class_intelli_image.html#a21c7e65b59a26db45aac3880133ef21d',1,'IntelliImage::getDisplayable(const QSize &displaySize, int alpha)=0'],['../class_intelli_image.html#a9d4daf3c48c64695105689f61c21bae0',1,'IntelliImage::getDisplayable(int alpha=255)=0'],['../class_intelli_raster_image.html#ae43393397b0141a8033fe34d3a1b1884',1,'IntelliRasterImage::getDisplayable(const QSize &displaySize, int alpha) override'],['../class_intelli_raster_image.html#a612d79124f0e2c158a4f0abbe4b5f97f',1,'IntelliRasterImage::getDisplayable(int alpha=255) override'],['../class_intelli_shaped_image.html#a68cf374247c16f07fd84d50e4cd05630',1,'IntelliShapedImage::getDisplayable(const QSize &displaySize, int alpha=255) override'],['../class_intelli_shaped_image.html#ac6a99e1a96134073bceea252b37636cc',1,'IntelliShapedImage::getDisplayable(int alpha=255) override']]], + ['getfirstcolor_305',['getFirstColor',['../class_intelli_color_picker.html#aeb08029a0c946ed0402c9c11a91965b1',1,'IntelliColorPicker']]], + ['getheight_306',['getHeight',['../class_intelli_image.html#a895bbe107ad2958aca6eebf9af3eb7f1',1,'IntelliImage']]], + ['getheightofactive_307',['getHeightOfActive',['../class_painting_area.html#ac576f58aad03b4dcd47611b6a4b9abb4',1,'PaintingArea']]], + ['getimagedata_308',['getImageData',['../class_intelli_image.html#ad66fbe380ffe0e073a8cd760f8285fe3',1,'IntelliImage']]], + ['getimagedataofactivelayer_309',['getImageDataOfActiveLayer',['../class_painting_area.html#a4f484ff3ca7ae202ab57a00f52551423',1,'PaintingArea']]], + ['getimageofactivelayer_310',['getImageOfActiveLayer',['../class_painting_area.html#acab11ad35d07e9081203d8217d2c0855',1,'PaintingArea']]], + ['getindexofactivelayer_311',['getIndexOfActiveLayer',['../class_painting_area.html#a2ea1108ae4e4be995c4df0d378c536e7',1,'PaintingArea']]], + ['getinneralpha_312',['getInnerAlpha',['../class_intelli_toolsettings.html#a96d267baa782a32784dbeb1b7cd68cc4',1,'IntelliToolsettings']]], + ['getint_313',['getInt',['../class_intelli_input_dialog.html#a480ac2f5b8f7b9bc1cd7b30df84c2a62',1,'IntelliInputDialog']]], + ['getisdrawing_314',['getIsDrawing',['../class_intelli_tool.html#af90f0965efbc5c25126691e998f39ca3',1,'IntelliTool']]], + ['getlayerbundle_315',['getLayerBundle',['../class_painting_area.html#a1452c4bf2ebf188d8af019a862f3d8ba',1,'PaintingArea']]], + ['getlinewidth_316',['getLineWidth',['../class_intelli_toolsettings.html#abb3ee5a9c8a379167060799d275e65c3',1,'IntelliToolsettings']]], + ['getmaxheight_317',['getMaxHeight',['../class_painting_area.html#aa811d142df9239ae248679bd70ad6da7',1,'PaintingArea']]], + ['getmaxwidth_318',['getMaxWidth',['../class_painting_area.html#aeb082c1cda3edb6b68d8ee45cf4822f8',1,'PaintingArea']]], + ['getpixelcolor_319',['getPixelColor',['../class_intelli_image.html#a4576ebb6d863321c816293d7b7f9fd3f',1,'IntelliImage']]], + ['getpolygon_320',['getPolygon',['../class_intelli_raster_image.html#af19828176178cc1dece5160d726d946e',1,'IntelliRasterImage::getPolygon()'],['../class_intelli_shaped_image.html#aeff4b2331f4244f170c70526d8ca819b',1,'IntelliShapedImage::getPolygon()']]], + ['getpolygondata_321',['getPolygonData',['../class_intelli_image.html#aaf9f3e8db8666850024bee9aad9966ba',1,'IntelliImage::getPolygonData()'],['../class_intelli_shaped_image.html#ae4518c7f5a105cc4f33fabb60c794a93',1,'IntelliShapedImage::getPolygonData()']]], + ['getpolygondataofactivelayer_322',['getPolygonDataOfActiveLayer',['../class_painting_area.html#ae6eb9b269cdee993dbabd066e4679576',1,'PaintingArea']]], + ['getrendersettings_323',['getRenderSettings',['../class_painting_area.html#ad631e87a1e7fe2b60f546b0f34995097',1,'PaintingArea']]], + ['getsecondcolor_324',['getSecondColor',['../class_intelli_color_picker.html#ab41abe8fb7e184db2c33e792f09792e0',1,'IntelliColorPicker']]], + ['gettooltype_325',['getTooltype',['../class_intelli_tool.html#adf5c06ad2b2c0d745fb68cf80e7e5694',1,'IntelliTool']]], + ['gettypeofimage_326',['getTypeOfImage',['../class_intelli_image.html#af6b09c8d1d6b54a7e8a4e7286f3e503f',1,'IntelliImage']]], + ['gettypeofimageactivelayer_327',['getTypeOfImageActiveLayer',['../class_painting_area.html#a63cfff9cd4bc04e0b62d4c76cbf87395',1,'PaintingArea']]], + ['getwidth_328',['getWidth',['../class_intelli_image.html#aea7b5f173968b330ef034bedb9426520',1,'IntelliImage']]], + ['getwidthofactive_329',['getWidthOfActive',['../class_painting_area.html#a675ee91b26b1c58be6d833f279d81597',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_4.html b/docs-src/html/search/functions_4.html new file mode 100644 index 0000000..911304e --- /dev/null +++ b/docs-src/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_4.js b/docs-src/html/search/functions_4.js new file mode 100644 index 0000000..3cf57e8 --- /dev/null +++ b/docs-src/html/search/functions_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['historyadd_330',['historyadd',['../class_painting_area.html#acf20e3f5f74a239e6f9b7e2e1200295f',1,'PaintingArea']]], + ['historygoback_331',['historyGoBack',['../class_painting_area.html#a6a6083ca9fece2b185b592f941a91aa4',1,'PaintingArea']]], + ['historygoforward_332',['historyGoForward',['../class_painting_area.html#aecc72f0f5971244205194934ff721546',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_5.html b/docs-src/html/search/functions_5.html new file mode 100644 index 0000000..61b920d --- /dev/null +++ b/docs-src/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_5.js b/docs-src/html/search/functions_5.js new file mode 100644 index 0000000..2a70a7a --- /dev/null +++ b/docs-src/html/search/functions_5.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['intellicolorpicker_333',['IntelliColorPicker',['../class_intelli_color_picker.html#a0d1247bdd87add1396ea5d9acaad79ae',1,'IntelliColorPicker']]], + ['intelliimage_334',['IntelliImage',['../class_intelli_image.html#a2c6632ff35ee0a7094a8a289eb3a8652',1,'IntelliImage']]], + ['intelliinputdialog_335',['IntelliInputDialog',['../class_intelli_input_dialog.html#aa276ec605b08b19d70c54654cc606cc5',1,'IntelliInputDialog']]], + ['intelliphotogui_336',['IntelliPhotoGui',['../class_intelli_photo_gui.html#ad2aaec3c1517a9aaa461b54e341b97e0',1,'IntelliPhotoGui']]], + ['intellirasterimage_337',['IntelliRasterImage',['../class_intelli_raster_image.html#ae779b571372296f1922af818ba003413',1,'IntelliRasterImage']]], + ['intellirendersettings_338',['IntelliRenderSettings',['../class_intelli_render_settings.html#a4a01de6e5e8e516a7eae51d6f1f66529',1,'IntelliRenderSettings']]], + ['intellishapedimage_339',['IntelliShapedImage',['../class_intelli_shaped_image.html#ae2e612a1fa52d7f878b34a7a7022d8e9',1,'IntelliShapedImage']]], + ['intellitool_340',['IntelliTool',['../class_intelli_tool.html#a08ef094271ce6248b42f888472463526',1,'IntelliTool']]], + ['intellitoolcircle_341',['IntelliToolCircle',['../class_intelli_tool_circle.html#a835327842fb71cb6a505e260ac5b69c8',1,'IntelliToolCircle']]], + ['intellitoolfloodfill_342',['IntelliToolFloodFill',['../class_intelli_tool_flood_fill.html#a0b283b1b0135ff909a7199be9da9c076',1,'IntelliToolFloodFill']]], + ['intellitoolgradient_343',['IntelliToolGradient',['../class_intelli_tool_gradient.html#ad29617596a4dcf09aa8bcc633d627203',1,'IntelliToolGradient']]], + ['intellitoolline_344',['IntelliToolLine',['../class_intelli_tool_line.html#a111e83e0f0fec7d4ff773ba9f235e4dc',1,'IntelliToolLine']]], + ['intellitoolpen_345',['IntelliToolPen',['../class_intelli_tool_pen.html#a9f885143d6bb7adda3dcd3707d59e14d',1,'IntelliToolPen']]], + ['intellitoolplaintool_346',['IntelliToolPlainTool',['../class_intelli_tool_plain_tool.html#a816bcd6aea046994420969bed8b139d2',1,'IntelliToolPlainTool']]], + ['intellitoolpolygon_347',['IntelliToolPolygon',['../class_intelli_tool_polygon.html#a63b8c7514a87d4608533fbb557ee0db5',1,'IntelliToolPolygon']]], + ['intellitoolrectangle_348',['IntelliToolRectangle',['../class_intelli_tool_rectangle.html#ada06457247d5b173888a9a520b31ec5c',1,'IntelliToolRectangle']]], + ['intellitoolsettings_349',['IntelliToolsettings',['../class_intelli_toolsettings.html#a5560602964ab95380967d63ab7ec6e69',1,'IntelliToolsettings']]], + ['isfastrenderering_350',['isFastRenderering',['../class_intelli_render_settings.html#a38fd592c4948d2e47b95bb6fabc34073',1,'IntelliRenderSettings']]], + ['isfastrendering_351',['isFastRendering',['../class_intelli_image.html#a47941bed3060d8df5f2edce8c7f046cb',1,'IntelliImage']]], + ['isinpolygon_352',['isInPolygon',['../namespace_intelli_triangulation.html#ac276696f29d141ed34614c1c3b1c040f',1,'IntelliTriangulation']]], + ['isintriangle_353',['isInTriangle',['../namespace_intelli_triangulation.html#ac150fee67fd41a451bd2592f10e00197',1,'IntelliTriangulation']]] +]; diff --git a/docs-src/html/search/functions_6.html b/docs-src/html/search/functions_6.html new file mode 100644 index 0000000..dc70a4a --- /dev/null +++ b/docs-src/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_6.js b/docs-src/html/search/functions_6.js new file mode 100644 index 0000000..0371b97 --- /dev/null +++ b/docs-src/html/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['layerobject_354',['LayerObject',['../struct_layer_object.html#a0c4519287423c097acb2a0764913f7d0',1,'LayerObject::LayerObject()'],['../struct_layer_object.html#a2b8ffdba5ec6fb69eb6f59e97aced98a',1,'LayerObject::LayerObject(const LayerObject &layer)']]], + ['loadimage_355',['loadImage',['../class_intelli_image.html#ae231800aba38c96074bbe9bb6e341d4e',1,'IntelliImage']]], + ['loadproject_356',['loadProject',['../namespace_intelli_datamanager.html#a41920e07aa9e0b2756323779f7fe8de2',1,'IntelliDatamanager']]] +]; diff --git a/docs-src/html/search/functions_7.html b/docs-src/html/search/functions_7.html new file mode 100644 index 0000000..7de3106 --- /dev/null +++ b/docs-src/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_7.js b/docs-src/html/search/functions_7.js new file mode 100644 index 0000000..aa633b0 --- /dev/null +++ b/docs-src/html/search/functions_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['main_357',['main',['../main_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main.cpp']]], + ['mousemoveevent_358',['mouseMoveEvent',['../class_painting_area.html#aa22e274b6094a9619f196cd7b49526b5',1,'PaintingArea']]], + ['mousepressevent_359',['mousePressEvent',['../class_painting_area.html#abfe445f8d9b70ae42bfeda874127dd15',1,'PaintingArea']]], + ['mousereleaseevent_360',['mouseReleaseEvent',['../class_painting_area.html#a35b5df914acb608cc29717659793359c',1,'PaintingArea']]], + ['moveactivelayer_361',['moveActiveLayer',['../class_painting_area.html#ae05f6893fb44bfcb34018573a609cd1a',1,'PaintingArea']]], + ['movepositionactive_362',['movePositionActive',['../class_painting_area.html#ac6d089f4357b22d9a9906fd4771de3e7',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_8.html b/docs-src/html/search/functions_8.html new file mode 100644 index 0000000..7422be2 --- /dev/null +++ b/docs-src/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_8.js b/docs-src/html/search/functions_8.js new file mode 100644 index 0000000..555cf6d --- /dev/null +++ b/docs-src/html/search/functions_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['onmouseleftpressed_363',['onMouseLeftPressed',['../class_intelli_tool.html#a34b7ef1dde96b94a0ce450a25ae1778c',1,'IntelliTool::onMouseLeftPressed()'],['../class_intelli_tool_circle.html#ae883b8ae833c78a8867e626c600f9639',1,'IntelliToolCircle::onMouseLeftPressed()'],['../class_intelli_tool_flood_fill.html#ac85e3cb6233508ff9612833a8d9e3961',1,'IntelliToolFloodFill::onMouseLeftPressed()'],['../class_intelli_tool_gradient.html#a47700908dab413203d06d64175a12cc1',1,'IntelliToolGradient::onMouseLeftPressed()'],['../class_intelli_tool_line.html#a155d676a5f98311217eb095be4759846',1,'IntelliToolLine::onMouseLeftPressed()'],['../class_intelli_tool_pen.html#a8ff40aef6d38eb55af31a19322429205',1,'IntelliToolPen::onMouseLeftPressed()'],['../class_intelli_tool_plain_tool.html#ab786dd5fa80af863246013d43c4b7ac9',1,'IntelliToolPlainTool::onMouseLeftPressed()'],['../class_intelli_tool_polygon.html#ad5d3b741be6d0647a9cdc9da2cb8bc3d',1,'IntelliToolPolygon::onMouseLeftPressed()'],['../class_intelli_tool_rectangle.html#ae03c307ccf66cbe3fd59e3657712368d',1,'IntelliToolRectangle::onMouseLeftPressed()']]], + ['onmouseleftreleased_364',['onMouseLeftReleased',['../class_intelli_tool.html#a906a2575c16c8a33cb2a5197f8d8cc5b',1,'IntelliTool::onMouseLeftReleased()'],['../class_intelli_tool_circle.html#ad8e438ec997c57262b5efc2db4cee1a3',1,'IntelliToolCircle::onMouseLeftReleased()'],['../class_intelli_tool_flood_fill.html#a7438ef96c6c36068bce76e2364e8594c',1,'IntelliToolFloodFill::onMouseLeftReleased()'],['../class_intelli_tool_gradient.html#a6bbe09b64d8cd69e5ff64a3344725b11',1,'IntelliToolGradient::onMouseLeftReleased()'],['../class_intelli_tool_line.html#ac93f76ff20a1c111a403b298bab02482',1,'IntelliToolLine::onMouseLeftReleased()'],['../class_intelli_tool_pen.html#abda7a22b9766fa4ad254324a53cab94d',1,'IntelliToolPen::onMouseLeftReleased()'],['../class_intelli_tool_plain_tool.html#ac23f5d0f07e42fd7c2ea3fc1347da400',1,'IntelliToolPlainTool::onMouseLeftReleased()'],['../class_intelli_tool_polygon.html#a4e1473ff408ae2e11cf6a43f6f575f21',1,'IntelliToolPolygon::onMouseLeftReleased()'],['../class_intelli_tool_rectangle.html#a94460e3ff1c19e80bde922c55f53cc43',1,'IntelliToolRectangle::onMouseLeftReleased()']]], + ['onmousemoved_365',['onMouseMoved',['../class_intelli_tool.html#ac10e20414cd8855a2f9b103fb6408639',1,'IntelliTool::onMouseMoved()'],['../class_intelli_tool_circle.html#a90ee58c5390a86afc75c14ca79b91d7b',1,'IntelliToolCircle::onMouseMoved()'],['../class_intelli_tool_flood_fill.html#a3cd42cea99bc7583875abcc0c274c668',1,'IntelliToolFloodFill::onMouseMoved()'],['../class_intelli_tool_gradient.html#aff3ccbecb7a33514765fdb44c7ce9e4e',1,'IntelliToolGradient::onMouseMoved()'],['../class_intelli_tool_line.html#abc6324ef0778823fe7e35aef8ae37f9b',1,'IntelliToolLine::onMouseMoved()'],['../class_intelli_tool_pen.html#a58d1d636497b630647ce0c4d652737c2',1,'IntelliToolPen::onMouseMoved()'],['../class_intelli_tool_plain_tool.html#ad7546a6335bb3bb4cbf0e1883788d41c',1,'IntelliToolPlainTool::onMouseMoved()'],['../class_intelli_tool_polygon.html#a0e3a1135f04c73c159137ae219a38922',1,'IntelliToolPolygon::onMouseMoved()'],['../class_intelli_tool_rectangle.html#a4b5931071e21eb6949ffe357315e408b',1,'IntelliToolRectangle::onMouseMoved()']]], + ['onmouserightpressed_366',['onMouseRightPressed',['../class_intelli_tool.html#a1e6aa68ac5f3c2ca02319e5ef3f0c966',1,'IntelliTool::onMouseRightPressed()'],['../class_intelli_tool_circle.html#a29d7b9ed4960e6fe1f31ff620363e429',1,'IntelliToolCircle::onMouseRightPressed()'],['../class_intelli_tool_flood_fill.html#ada0f7154d119102410a55038763a17e4',1,'IntelliToolFloodFill::onMouseRightPressed()'],['../class_intelli_tool_gradient.html#aed5ad1f718d53034d944ff8f1e8f9f36',1,'IntelliToolGradient::onMouseRightPressed()'],['../class_intelli_tool_line.html#a6cce59f3017936214b10b47252a898a3',1,'IntelliToolLine::onMouseRightPressed()'],['../class_intelli_tool_pen.html#a1751e3864a0d36ef42ca55021cae73ce',1,'IntelliToolPen::onMouseRightPressed()'],['../class_intelli_tool_plain_tool.html#acb0c46e16d2c09370a2244a936de38b1',1,'IntelliToolPlainTool::onMouseRightPressed()'],['../class_intelli_tool_polygon.html#aa36b012b48311c36e7cd6771a5081427',1,'IntelliToolPolygon::onMouseRightPressed()'],['../class_intelli_tool_rectangle.html#a480c6804a4963c5a1c3f7ef84b63c1a8',1,'IntelliToolRectangle::onMouseRightPressed()']]], + ['onmouserightreleased_367',['onMouseRightReleased',['../class_intelli_tool.html#a16189b00307c6d7e89f28198f54404b0',1,'IntelliTool::onMouseRightReleased()'],['../class_intelli_tool_circle.html#aca07540f2f7ccb3d2c0b84890c1afc4c',1,'IntelliToolCircle::onMouseRightReleased()'],['../class_intelli_tool_flood_fill.html#a39cf49c0ce46f96be3510f0b70c9d892',1,'IntelliToolFloodFill::onMouseRightReleased()'],['../class_intelli_tool_gradient.html#a04315a520c97541d76e7723a07e0a834',1,'IntelliToolGradient::onMouseRightReleased()'],['../class_intelli_tool_line.html#a6214918cba5753f89d97de4559a2b9b2',1,'IntelliToolLine::onMouseRightReleased()'],['../class_intelli_tool_pen.html#abf8562e8cd2da586afdf4d47b3a4ff13',1,'IntelliToolPen::onMouseRightReleased()'],['../class_intelli_tool_plain_tool.html#a2ae458f1b04eb77a47f6dca5e91e33b8',1,'IntelliToolPlainTool::onMouseRightReleased()'],['../class_intelli_tool_polygon.html#a47cad87cd02b128b02dc929713bd1d1b',1,'IntelliToolPolygon::onMouseRightReleased()'],['../class_intelli_tool_rectangle.html#ad43f653256a6516b9398f82054be0d7f',1,'IntelliToolRectangle::onMouseRightReleased()']]], + ['onwheelscrolled_368',['onWheelScrolled',['../class_intelli_tool.html#a4dccfd4460255ccb866f336406a33574',1,'IntelliTool::onWheelScrolled()'],['../class_intelli_tool_circle.html#ae2d9b0fb6695c184c4cb507a5fb75506',1,'IntelliToolCircle::onWheelScrolled()'],['../class_intelli_tool_flood_fill.html#ad58cc7c065123beb6b0270f99e99b991',1,'IntelliToolFloodFill::onWheelScrolled()'],['../class_intelli_tool_gradient.html#a11f77ac474b697ebb6bc185560437f6a',1,'IntelliToolGradient::onWheelScrolled()'],['../class_intelli_tool_line.html#aaf1d686e1ec43f41b5186ccfd806b125',1,'IntelliToolLine::onWheelScrolled()'],['../class_intelli_tool_pen.html#afe3626ddff440ab125f4a2465c45427a',1,'IntelliToolPen::onWheelScrolled()'],['../class_intelli_tool_plain_tool.html#adc004ea421e2cc0ac39cc7a6b6d43d0d',1,'IntelliToolPlainTool::onWheelScrolled()'],['../class_intelli_tool_polygon.html#a713103300c9f023d64d9eec5ac05dd17',1,'IntelliToolPolygon::onWheelScrolled()'],['../class_intelli_tool_rectangle.html#a445c53a56e859f970e59f5036e221e0c',1,'IntelliToolRectangle::onWheelScrolled()']]], + ['open_369',['open',['../class_painting_area.html#a88c7e759aa8375a56129791645f46ea5',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_9.html b/docs-src/html/search/functions_9.html new file mode 100644 index 0000000..befd4fa --- /dev/null +++ b/docs-src/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_9.js b/docs-src/html/search/functions_9.js new file mode 100644 index 0000000..d4dc6fa --- /dev/null +++ b/docs-src/html/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['paintevent_370',['paintEvent',['../class_painting_area.html#a4a8138b9508ee4ec87a7fca9160368a7',1,'PaintingArea']]], + ['paintingarea_371',['PaintingArea',['../class_painting_area.html#a4fa0ec23e78cc59f28c823584c721460',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_a.html b/docs-src/html/search/functions_a.html new file mode 100644 index 0000000..a81e963 --- /dev/null +++ b/docs-src/html/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_a.js b/docs-src/html/search/functions_a.js new file mode 100644 index 0000000..f85cbd3 --- /dev/null +++ b/docs-src/html/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['resizeimage_372',['resizeImage',['../class_intelli_image.html#a177403ab9585d4ba31984a644c54d310',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/functions_b.html b/docs-src/html/search/functions_b.html new file mode 100644 index 0000000..345265d --- /dev/null +++ b/docs-src/html/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_b.js b/docs-src/html/search/functions_b.js new file mode 100644 index 0000000..ce879f7 --- /dev/null +++ b/docs-src/html/search/functions_b.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['save_373',['save',['../class_painting_area.html#aa2463d4f403224086acab02903ae407e',1,'PaintingArea']]], + ['saveproject_374',['saveProject',['../namespace_intelli_datamanager.html#ac02f6f47ff8785ad9d49588baaca3d54',1,'IntelliDatamanager']]], + ['setcanvasdimensions_375',['setCanvasDimensions',['../class_painting_area.html#a3bfc63de27c54f3edf9feb3af538343c',1,'PaintingArea']]], + ['setfastrendering_376',['setFastRendering',['../class_intelli_render_settings.html#a5ffb878b77e5d448ffe4eb03a8397ac2',1,'IntelliRenderSettings']]], + ['setfirstcolor_377',['setFirstColor',['../class_intelli_color_picker.html#a7e2ddbbbfbed383f06b24e5bf6b27ae8',1,'IntelliColorPicker']]], + ['setimagedata_378',['setImageData',['../class_intelli_image.html#ab09c64e7559f3db32ca3b20ba6339268',1,'IntelliImage']]], + ['setinneralpha_379',['setInnerAlpha',['../class_intelli_toolsettings.html#a9a61f3de61efeba2287f8b32941f4271',1,'IntelliToolsettings']]], + ['setlayeractive_380',['setLayerActive',['../class_painting_area.html#a79eb059829f27e8cdb3a54c5cd3d12c9',1,'PaintingArea']]], + ['setlayeralpha_381',['setLayerAlpha',['../class_painting_area.html#a6c7e0865e684ae1089ee283b4399d055',1,'PaintingArea']]], + ['setlinewidth_382',['setLineWidth',['../class_intelli_toolsettings.html#a73fa94c85c6c2fdc1a33975a33304a6f',1,'IntelliToolsettings']]], + ['setpolygon_383',['setPolygon',['../class_intelli_image.html#aa4b3f4631bd972456917275afb9fd309',1,'IntelliImage::setPolygon()'],['../class_intelli_raster_image.html#a6462fa5f94c5e64e9e1f0c4658e0507b',1,'IntelliRasterImage::setPolygon()'],['../class_intelli_shaped_image.html#a4b69d75de7a3b85032482982f249458e',1,'IntelliShapedImage::setPolygon()'],['../class_painting_area.html#aa409492ac26483d618bb33616f2e3f81',1,'PaintingArea::setPolygon()']]], + ['setpolygondatatoactive_384',['setPolygonDataToActive',['../class_painting_area.html#aac7d7bca37e0d7c7d077b65224795577',1,'PaintingArea']]], + ['setrendersettings_385',['setRenderSettings',['../class_painting_area.html#a63be0831e5b6ceb8cc622d83aa28f0bd',1,'PaintingArea']]], + ['setsecondcolor_386',['setSecondColor',['../class_intelli_color_picker.html#a86bf4a940e4a0e465e30cbdf28748931',1,'IntelliColorPicker']]], + ['settoolwidth_387',['setToolWidth',['../class_intelli_photo_gui.html#a343f8ebf5d27b7242208747de6c92497',1,'IntelliPhotoGui']]], + ['sign_388',['sign',['../namespace_intelli_triangulation.html#af9af549a7faff35a74c1265b290ea0ca',1,'IntelliTriangulation']]], + ['slotactivatelayer_389',['slotActivateLayer',['../class_painting_area.html#a71ac281e0de263208d4a3b9de74258ec',1,'PaintingArea']]], + ['slotcloseevent_390',['slotCloseEvent',['../class_intelli_input_dialog.html#ae59e68446caab323945ea725f69e89b0',1,'IntelliInputDialog']]], + ['slotdeleteactivelayer_391',['slotDeleteActiveLayer',['../class_painting_area.html#a1ff0b9c1227531943c9cec2c546fae5e',1,'PaintingArea']]], + ['sloteingabe_392',['slotEingabe',['../class_intelli_input_dialog.html#a23f837147e6aab3d8e0aff9d0f7012bd',1,'IntelliInputDialog']]], + ['swapcolors_393',['swapColors',['../class_intelli_color_picker.html#aec499265ae28ce1b54be88222e74292e',1,'IntelliColorPicker']]] +]; diff --git a/docs-src/html/search/functions_c.html b/docs-src/html/search/functions_c.html new file mode 100644 index 0000000..858bfd6 --- /dev/null +++ b/docs-src/html/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_c.js b/docs-src/html/search/functions_c.js new file mode 100644 index 0000000..c6b0769 --- /dev/null +++ b/docs-src/html/search/functions_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['unittest_394',['UnitTest',['../class_unit_test.html#a67ddaff817b55a624741d32550052f4b',1,'UnitTest::UnitTest()'],['../class_unit_test.html#a67ddaff817b55a624741d32550052f4b',1,'UnitTest::UnitTest()']]], + ['updategui_395',['UpdateGui',['../class_intelli_photo_gui.html#a1dbef8d4688227aa9455aea52db00bf4',1,'IntelliPhotoGui']]], + ['updaterenderersetting_396',['updateRendererSetting',['../class_intelli_image.html#ae4dbaefabce4ec5bec37f5b95e2f62e2',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/functions_d.html b/docs-src/html/search/functions_d.html new file mode 100644 index 0000000..2f09f51 --- /dev/null +++ b/docs-src/html/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_d.js b/docs-src/html/search/functions_d.js new file mode 100644 index 0000000..f9295a8 --- /dev/null +++ b/docs-src/html/search/functions_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wheelevent_397',['wheelEvent',['../class_painting_area.html#a632848d99f44d33d7da2618fbc6775a4',1,'PaintingArea']]] +]; diff --git a/docs-src/html/search/functions_e.html b/docs-src/html/search/functions_e.html new file mode 100644 index 0000000..ee5afa6 --- /dev/null +++ b/docs-src/html/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/functions_e.js b/docs-src/html/search/functions_e.js new file mode 100644 index 0000000..694d325 --- /dev/null +++ b/docs-src/html/search/functions_e.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['_7eintellicolorpicker_398',['~IntelliColorPicker',['../class_intelli_color_picker.html#a40b975268a1f05249e8a49dde9a862ff',1,'IntelliColorPicker']]], + ['_7eintelliimage_399',['~IntelliImage',['../class_intelli_image.html#ac398bfa9ddd3185508a1e36ee15d80cc',1,'IntelliImage']]], + ['_7eintellirasterimage_400',['~IntelliRasterImage',['../class_intelli_raster_image.html#a844a2b58c43f7e01f2ca116286371bc8',1,'IntelliRasterImage']]], + ['_7eintellishapedimage_401',['~IntelliShapedImage',['../class_intelli_shaped_image.html#a43d63d8a814852d377ee2030658fbab9',1,'IntelliShapedImage']]], + ['_7eintellitool_402',['~IntelliTool',['../class_intelli_tool.html#a57fb1b27d364c9e3696eb928b75fa9f2',1,'IntelliTool']]], + ['_7eintellitoolcircle_403',['~IntelliToolCircle',['../class_intelli_tool_circle.html#a7a03b65b95d7b5d72e6a92c95f068954',1,'IntelliToolCircle']]], + ['_7eintellitoolfloodfill_404',['~IntelliToolFloodFill',['../class_intelli_tool_flood_fill.html#a83b1bd8be0cbb32cdf61a9597ec849ba',1,'IntelliToolFloodFill']]], + ['_7eintellitoolgradient_405',['~IntelliToolGradient',['../class_intelli_tool_gradient.html#a7d5c812815872b7e394e36362358b539',1,'IntelliToolGradient']]], + ['_7eintellitoolline_406',['~IntelliToolLine',['../class_intelli_tool_line.html#acb600b0f4e9225ebce2937c2b7abb4c2',1,'IntelliToolLine']]], + ['_7eintellitoolpen_407',['~IntelliToolPen',['../class_intelli_tool_pen.html#ac77a025515d0fed6954556fe2b444818',1,'IntelliToolPen']]], + ['_7eintellitoolplaintool_408',['~IntelliToolPlainTool',['../class_intelli_tool_plain_tool.html#a91fe568be05c075814d67440472bb658',1,'IntelliToolPlainTool']]], + ['_7eintellitoolpolygon_409',['~IntelliToolPolygon',['../class_intelli_tool_polygon.html#a087cbf2254010989df6106a357471499',1,'IntelliToolPolygon']]], + ['_7eintellitoolrectangle_410',['~IntelliToolRectangle',['../class_intelli_tool_rectangle.html#a7dc1463e726a21255e6297241dc71fb1',1,'IntelliToolRectangle']]], + ['_7eintellitoolsettings_411',['~IntelliToolsettings',['../class_intelli_toolsettings.html#a927e50594a459c952d06acd34c0eff56',1,'IntelliToolsettings']]], + ['_7epaintingarea_412',['~PaintingArea',['../class_painting_area.html#aa32adc113f77031945f73e33051931e8',1,'PaintingArea']]], + ['_7eunittest_413',['~UnitTest',['../class_unit_test.html#afa0bdd3e2ac33cd52e697406339a2edf',1,'UnitTest::~UnitTest()'],['../class_unit_test.html#afa0bdd3e2ac33cd52e697406339a2edf',1,'UnitTest::~UnitTest()']]] +]; diff --git a/docs-src/html/search/mag_sel.png b/docs-src/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB literal 0 HcmV?d00001 diff --git a/docs-src/html/search/namespaces_0.html b/docs-src/html/search/namespaces_0.html new file mode 100644 index 0000000..76996d1 --- /dev/null +++ b/docs-src/html/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/namespaces_0.js b/docs-src/html/search/namespaces_0.js new file mode 100644 index 0000000..0519ad6 --- /dev/null +++ b/docs-src/html/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['intellidatamanager_235',['IntelliDatamanager',['../namespace_intelli_datamanager.html',1,'']]], + ['intellitriangulation_236',['IntelliTriangulation',['../namespace_intelli_triangulation.html',1,'']]] +]; diff --git a/docs-src/html/search/nomatches.html b/docs-src/html/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/docs-src/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs-src/html/search/search.css b/docs-src/html/search/search.css new file mode 100644 index 0000000..83c346f --- /dev/null +++ b/docs-src/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #7C8081; + background-color: #F7F7F7; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #2B2D2D; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #E8E9E9; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #323434; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #323434; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #EBECEC; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs-src/html/search/search.js b/docs-src/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/docs-src/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs-src/html/search/search_r.png b/docs-src/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs-src/html/search/searchdata.js b/docs-src/html/search/searchdata.js new file mode 100644 index 0000000..8c5d1bd --- /dev/null +++ b/docs-src/html/search/searchdata.js @@ -0,0 +1,39 @@ +var indexSectionsWithContent = +{ + 0: "abcdfghilmnoprstuw~", + 1: "ilptu", + 2: "i", + 3: "impt", + 4: "acdghilmoprsuw~", + 5: "abcfhiptw", + 6: "it", + 7: "cfglnprs", + 8: "p" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "enums", + 7: "enumvalues", + 8: "defines" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Enumerations", + 7: "Enumerator", + 8: "Macros" +}; + diff --git a/docs-src/html/search/variables_0.html b/docs-src/html/search/variables_0.html new file mode 100644 index 0000000..bf3eba5 --- /dev/null +++ b/docs-src/html/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_0.js b/docs-src/html/search/variables_0.js new file mode 100644 index 0000000..30cc0d5 --- /dev/null +++ b/docs-src/html/search/variables_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['a_414',['A',['../struct_triangle.html#a4fe8b39e0144ebff908b7718c2f2751b',1,'Triangle']]], + ['activelayer_415',['activeLayer',['../class_intelli_tool.html#aedccdad01b2bc6ec84fad3582251ff5d',1,'IntelliTool']]], + ['activetype_416',['ActiveType',['../class_intelli_tool.html#a631388999f36013628e13b9de87a6f7b',1,'IntelliTool']]], + ['alpha_417',['alpha',['../struct_layer_object.html#a402cb1d9f20436032fe080681b80eb56',1,'LayerObject']]], + ['area_418',['Area',['../class_intelli_tool.html#ab4c2698a0f9f25fb6639ec760d2d0289',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/variables_1.html b/docs-src/html/search/variables_1.html new file mode 100644 index 0000000..49fe59a --- /dev/null +++ b/docs-src/html/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_1.js b/docs-src/html/search/variables_1.js new file mode 100644 index 0000000..e041457 --- /dev/null +++ b/docs-src/html/search/variables_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['b_419',['B',['../struct_triangle.html#a64fa6a90a6131f12a1a3054bf86647d7',1,'Triangle']]] +]; diff --git a/docs-src/html/search/variables_2.html b/docs-src/html/search/variables_2.html new file mode 100644 index 0000000..0c8a18c --- /dev/null +++ b/docs-src/html/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_2.js b/docs-src/html/search/variables_2.js new file mode 100644 index 0000000..918266e --- /dev/null +++ b/docs-src/html/search/variables_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['c_420',['C',['../struct_triangle.html#addb8aaab314d79f3617acca01e12872a',1,'Triangle']]], + ['canvas_421',['Canvas',['../class_intelli_tool.html#a144d469cc03584f501194529a1b53c77',1,'IntelliTool']]], + ['colorpicker_422',['colorPicker',['../class_painting_area.html#a132535c4e16052c1472cf1b9f3e096ed',1,'PaintingArea::colorPicker()'],['../class_intelli_tool.html#ae2e0ac394611a361ab4ef2fe55c03fef',1,'IntelliTool::colorPicker()']]] +]; diff --git a/docs-src/html/search/variables_3.html b/docs-src/html/search/variables_3.html new file mode 100644 index 0000000..19a31fc --- /dev/null +++ b/docs-src/html/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_3.js b/docs-src/html/search/variables_3.js new file mode 100644 index 0000000..c72f150 --- /dev/null +++ b/docs-src/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fastrenderering_423',['fastRenderering',['../class_intelli_image.html#aa63d34c7932113d021653980ee018671',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/variables_4.html b/docs-src/html/search/variables_4.html new file mode 100644 index 0000000..bdc37be --- /dev/null +++ b/docs-src/html/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_4.js b/docs-src/html/search/variables_4.js new file mode 100644 index 0000000..68891f3 --- /dev/null +++ b/docs-src/html/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['height_424',['height',['../struct_layer_object.html#ae0003fb815e50ed587a9897988befc90',1,'LayerObject']]], + ['heightoffset_425',['heightOffset',['../struct_layer_object.html#a08bacdcd64a0ae0eb5376f55329954bc',1,'LayerObject']]] +]; diff --git a/docs-src/html/search/variables_5.html b/docs-src/html/search/variables_5.html new file mode 100644 index 0000000..6aa2249 --- /dev/null +++ b/docs-src/html/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_5.js b/docs-src/html/search/variables_5.js new file mode 100644 index 0000000..fb2bd73 --- /dev/null +++ b/docs-src/html/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['image_426',['image',['../struct_layer_object.html#af01a139bc8edfdbb338393874e89bd83',1,'LayerObject']]], + ['imagedata_427',['imageData',['../class_intelli_image.html#a2431be82e9e85dd34b62a7f7cba053c2',1,'IntelliImage']]], + ['isdrawing_428',['isDrawing',['../class_intelli_tool.html#a555aa8a74992327f740dd69b3bb0ccca',1,'IntelliTool']]] +]; diff --git a/docs-src/html/search/variables_6.html b/docs-src/html/search/variables_6.html new file mode 100644 index 0000000..ce4a906 --- /dev/null +++ b/docs-src/html/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_6.js b/docs-src/html/search/variables_6.js new file mode 100644 index 0000000..8fceeb2 --- /dev/null +++ b/docs-src/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['polygondata_429',['polygonData',['../class_intelli_shaped_image.html#a727d19ce314c0874be6b0633a3a603c8',1,'IntelliShapedImage']]] +]; diff --git a/docs-src/html/search/variables_7.html b/docs-src/html/search/variables_7.html new file mode 100644 index 0000000..39ffd47 --- /dev/null +++ b/docs-src/html/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_7.js b/docs-src/html/search/variables_7.js new file mode 100644 index 0000000..1e351fa --- /dev/null +++ b/docs-src/html/search/variables_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['toolsettings_430',['Toolsettings',['../class_painting_area.html#abc2f798744f1dc805a651731eb1692ea',1,'PaintingArea::Toolsettings()'],['../class_intelli_tool.html#a55f6b45b416b7d790fa8bc09603bf67f',1,'IntelliTool::Toolsettings()']]], + ['typeofimage_431',['TypeOfImage',['../class_intelli_image.html#ac460f75e1fa7e44b00a65e7fddac5b80',1,'IntelliImage']]] +]; diff --git a/docs-src/html/search/variables_8.html b/docs-src/html/search/variables_8.html new file mode 100644 index 0000000..37a2edd --- /dev/null +++ b/docs-src/html/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs-src/html/search/variables_8.js b/docs-src/html/search/variables_8.js new file mode 100644 index 0000000..ec2bada --- /dev/null +++ b/docs-src/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['width_432',['width',['../struct_layer_object.html#af261813df52ff0b0c82bfa57efeb9897',1,'LayerObject']]], + ['widthoffset_433',['widthOffset',['../struct_layer_object.html#a72b44d27c7bbb60dde14f04ec240ab96',1,'LayerObject']]] +]; diff --git a/docs-src/html/splitbar.png b/docs-src/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c06a352845790fb9153b1a8fed8c74112fbe11 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@Vh2R)esC0rkV zPGX#;*JRpps=-OK;*1f*@=h2o`eSQ9J3_n#kJ4i)K7&E_ryZ8S2_3!digO)u{pT7C!kA(W2 zJ9N)x)fU%&{qd#7VrI>jw;%S`t$e+!EGQKba P1_FbptDnm{r-UW|>tu5C literal 0 HcmV?d00001 diff --git a/docs-src/html/struct_layer_object-members.html b/docs-src/html/struct_layer_object-members.html new file mode 100644 index 0000000..43acfb5 --- /dev/null +++ b/docs-src/html/struct_layer_object-members.html @@ -0,0 +1,111 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    LayerObject Member List
    +
    +
    + +

    This is the complete list of members for LayerObject, including all inherited members.

    + + + + + + + + + +
    alphaLayerObject
    heightLayerObject
    heightOffsetLayerObject
    imageLayerObject
    LayerObject()LayerObject
    LayerObject(const LayerObject &layer)LayerObject
    widthLayerObject
    widthOffsetLayerObject
    +
    + + + + diff --git a/docs-src/html/struct_layer_object.html b/docs-src/html/struct_layer_object.html new file mode 100644 index 0000000..65d2db8 --- /dev/null +++ b/docs-src/html/struct_layer_object.html @@ -0,0 +1,296 @@ + + + + + + + +IntelliPhoto: LayerObject Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    LayerObject Struct Reference
    +
    +
    + +

    The LayerObject struct holds all the information needed to construct a layer. + More...

    + +

    #include <PaintingArea.h>

    + + + + + + +

    +Public Member Functions

     LayerObject ()
     
     LayerObject (const LayerObject &layer)
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    IntelliImageimage
     image - Stores the imageData of the current LayerObject. More...
     
    int width
     width - Stores the width of a layer in pixels. More...
     
    int height
     height - Stores the height of a layer in pixels. More...
     
    int widthOffset
     widthOffset - Stores the number of pixles from the left side of the painting area. More...
     
    int heightOffset
     heightOffset - Stores the number of pixles from the top of the painting area. More...
     
    int alpha = 255
     alpha - Stores the alpha value of the layer (default=255). More...
     
    +

    Detailed Description

    +

    The LayerObject struct holds all the information needed to construct a layer.

    + +

    Definition at line 23 of file PaintingArea.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ LayerObject() [1/2]

    + +
    +
    + + + + + + + +
    LayerObject::LayerObject ()
    +
    + +

    Definition at line 23 of file PaintingArea.cpp.

    + +
    +
    + +

    ◆ LayerObject() [2/2]

    + +
    +
    + + + + + + + + +
    LayerObject::LayerObject (const LayerObjectlayer)
    +
    + +

    Definition at line 27 of file PaintingArea.cpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ alpha

    + +
    +
    + + + + +
    int LayerObject::alpha = 255
    +
    + +

    alpha - Stores the alpha value of the layer (default=255).

    + +

    Definition at line 47 of file PaintingArea.h.

    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    int LayerObject::height
    +
    + +

    height - Stores the height of a layer in pixels.

    + +

    Definition at line 35 of file PaintingArea.h.

    + +
    +
    + +

    ◆ heightOffset

    + +
    +
    + + + + +
    int LayerObject::heightOffset
    +
    + +

    heightOffset - Stores the number of pixles from the top of the painting area.

    + +

    Definition at line 43 of file PaintingArea.h.

    + +
    +
    + +

    ◆ image

    + +
    +
    + + + + +
    IntelliImage* LayerObject::image
    +
    + +

    image - Stores the imageData of the current LayerObject.

    + +

    Definition at line 27 of file PaintingArea.h.

    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    int LayerObject::width
    +
    + +

    width - Stores the width of a layer in pixels.

    + +

    Definition at line 31 of file PaintingArea.h.

    + +
    +
    + +

    ◆ widthOffset

    + +
    +
    + + + + +
    int LayerObject::widthOffset
    +
    + +

    widthOffset - Stores the number of pixles from the left side of the painting area.

    + +

    Definition at line 39 of file PaintingArea.h.

    + +
    +
    +
    The documentation for this struct was generated from the following files: +
    +
    + + + + diff --git a/docs-src/html/struct_layer_object.js b/docs-src/html/struct_layer_object.js new file mode 100644 index 0000000..134df5f --- /dev/null +++ b/docs-src/html/struct_layer_object.js @@ -0,0 +1,11 @@ +var struct_layer_object = +[ + [ "LayerObject", "struct_layer_object.html#a0c4519287423c097acb2a0764913f7d0", null ], + [ "LayerObject", "struct_layer_object.html#a2b8ffdba5ec6fb69eb6f59e97aced98a", null ], + [ "alpha", "struct_layer_object.html#a402cb1d9f20436032fe080681b80eb56", null ], + [ "height", "struct_layer_object.html#ae0003fb815e50ed587a9897988befc90", null ], + [ "heightOffset", "struct_layer_object.html#a08bacdcd64a0ae0eb5376f55329954bc", null ], + [ "image", "struct_layer_object.html#af01a139bc8edfdbb338393874e89bd83", null ], + [ "width", "struct_layer_object.html#af261813df52ff0b0c82bfa57efeb9897", null ], + [ "widthOffset", "struct_layer_object.html#a72b44d27c7bbb60dde14f04ec240ab96", null ] +]; \ No newline at end of file diff --git a/docs-src/html/struct_layer_object__coll__graph.dot b/docs-src/html/struct_layer_object__coll__graph.dot new file mode 100644 index 0000000..780664f --- /dev/null +++ b/docs-src/html/struct_layer_object__coll__graph.dot @@ -0,0 +1,9 @@ +digraph "LayerObject" +{ + // LATEX_PDF_SIZE + edge [fontname="Helvetica",fontsize="10",labelfontname="Helvetica",labelfontsize="10"]; + node [fontname="Helvetica",fontsize="10",shape=record]; + Node1 [label="LayerObject",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled", fontcolor="black",tooltip="The LayerObject struct holds all the information needed to construct a layer."]; + Node2 -> Node1 [dir="back",color="darkorchid3",fontsize="10",style="dashed",label=" image" ,fontname="Helvetica"]; + Node2 [label="IntelliImage",height=0.2,width=0.4,color="black", fillcolor="white", style="filled",URL="$class_intelli_image.html",tooltip="An abstract class which manages the basic IntelliImage operations."]; +} diff --git a/docs-src/html/struct_triangle-members.html b/docs-src/html/struct_triangle-members.html new file mode 100644 index 0000000..52f3ea5 --- /dev/null +++ b/docs-src/html/struct_triangle-members.html @@ -0,0 +1,106 @@ + + + + + + + +IntelliPhoto: Member List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Triangle Member List
    +
    +
    + +

    This is the complete list of members for Triangle, including all inherited members.

    + + + + +
    ATriangle
    BTriangle
    CTriangle
    +
    + + + + diff --git a/docs-src/html/struct_triangle.html b/docs-src/html/struct_triangle.html new file mode 100644 index 0000000..dd86d99 --- /dev/null +++ b/docs-src/html/struct_triangle.html @@ -0,0 +1,175 @@ + + + + + + + +IntelliPhoto: Triangle Struct Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    Triangle Struct Reference
    +
    +
    + +

    The Triangle struct holds the 3 vertices of a triangle. + More...

    + +

    #include <IntelliTriangulation.h>

    + + + + + + + + +

    +Public Attributes

    QPoint A
     
    QPoint B
     
    QPoint C
     
    +

    Detailed Description

    +

    The Triangle struct holds the 3 vertices of a triangle.

    + +

    Definition at line 13 of file IntelliTriangulation.h.

    +

    Member Data Documentation

    + +

    ◆ A

    + +
    +
    + + + + +
    QPoint Triangle::A
    +
    + +

    Definition at line 14 of file IntelliTriangulation.h.

    + +
    +
    + +

    ◆ B

    + +
    +
    + + + + +
    QPoint Triangle::B
    +
    + +

    Definition at line 14 of file IntelliTriangulation.h.

    + +
    +
    + +

    ◆ C

    + +
    +
    + + + + +
    QPoint Triangle::C
    +
    + +

    Definition at line 14 of file IntelliTriangulation.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/docs-src/html/struct_triangle.js b/docs-src/html/struct_triangle.js new file mode 100644 index 0000000..5248a2d --- /dev/null +++ b/docs-src/html/struct_triangle.js @@ -0,0 +1,6 @@ +var struct_triangle = +[ + [ "A", "struct_triangle.html#a4fe8b39e0144ebff908b7718c2f2751b", null ], + [ "B", "struct_triangle.html#a64fa6a90a6131f12a1a3054bf86647d7", null ], + [ "C", "struct_triangle.html#addb8aaab314d79f3617acca01e12872a", null ] +]; \ No newline at end of file diff --git a/docs-src/html/sync_off.png b/docs-src/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b6537e9b0799abaabd5d9a76278a822e749d56b1 GIT binary patch literal 859 zcmV-h1El_hjL|em9+31IEu(oM8Yprz{$DEeIL@aBIMb?QT z2-?9)72On3@3xCxxQkU*z1hY5SZ>x0WjDh?C$?y{H5H#H<|HSlC(@4I9^N0EkMKU{ zdGnm-y>+y`=PPJAm$0p=l3>=KP)pEz%Rm;soFrZc>N$<4s=X8yA@s zm6b+xee)uKMW8SHgBUk5=n)l0Au>(jM4u^w|_U+Gt z!61MwkM|8e35RiJI{~bkgC!6bPGiGLH0Bk*eJjJ^kH}YlI0g8)l zt9hFSSZ}`LmA5+B)5E&8YXRn^+~=dOw->+P52TEG4Y0O`F)!)&?ZUKlko2K0Yq>mi#6)liQIsXMo(o(YRYdm&1oiCngmfs8xa`(<1AZ3hd2IX?{o5(dk$#Lbd zE4-7jKmX#&Pgelu@cC8|YHVO|=oAwZ4*;yHjQv2HT%tiG8kMYjp4%OroSd|6fG($t z+1V&hqfr2>5#6ke0A6uZ3jkmd=;yCB{HswKe~V6lMRHIlx9(^cgqD}~bAbQrq&WJr zJ$a`%E(!n^KtHZN^W^3Y$9&v~Z$3-4-P&xc09ION`eOP`0m)&Pf%yoCk3^kzllVrW l0UzpaC4Pxd8e4AwtLM4mtS7pUTQUFu002ovPDHLkV1f$5na%(J literal 0 HcmV?d00001 diff --git a/docs-src/html/sync_on.png b/docs-src/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..47fc72170520365426b03cd383a69292785531e6 GIT binary patch literal 840 zcmV-O1GoH%P)SSRqGM=+S}mH=LZypPD%FrsY6}wR zq68voG1^j^g^PCKB3Z-`>n4jNk}OIRA|((kNU73jw4=#6lX<>3kN3og+sFCAn>#c2 zynEld_ijBWTU!C#6o@MEuGlBu5*4``6OT)RJkcXslJ@{^o{3+@w_*xN z2|s{MwYVq>0oEZ?oDvPjh zDJwIw>yzgKYyy4Q-^7eDf?g27E(s>UB`T47D(TWOU zjg1^{I-bxJi}7Av{p$B`=H}AV-A!eszFWYIZCaAsjhCi>K3ZP~km8-v(gXlEey^9# zwl?+@MHm_${%3w+{tcaJ9f2pYAiO@AORZLbjmyc&#^?7fTKA$qbt;X9+S*#$o0|bM zo=#6QGczMK_o}L2tgIwTclWMcfEmA!jxsVbLVS7IXnLXvuE@;^>kmsxO8NAYkIBi( zN_@UFILO$I8-N+1P?-KcEp>RlxX6z~!%R%*<_efGsqbLip5XrddwkXRO(IEAVIk=b zwH^q(YSYnO7#Lvc@nZnHaUFq9&uy_4NQo^OTR7F(!Gnj7xO(j>U`8aehgicg1}^=; z?Cie)PRfn*KsUM74a$1?yxw?bFzBC~n*+?q2xPFl9OwUd9Kgw#9#%$zu(+#50I&&k z>FWZ%Wo&kTi7tRma#lOHpJ=~`9m)M1V57bl{cD}c9pXEY4e%Otah-=5@S z^zZK9{H%*JXH;;+#c9eg6;C^67!rEQ$F;?S%T12Kd~eD3l%qStqFHJep0NLY{a@OT eYc_XZ&(*InW%Qb4aWWQYD1)b~pUXO@geCy4AT0m@ literal 0 HcmV?d00001 diff --git a/docs-src/html/tab_b.png b/docs-src/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..12977f0700c1ebf7d56734ac93839ee24a7d0155 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QiYx_jv*C{Z|6Gl9Wvlyxg4w6 zuJknYz(l!#{s(HAT#Qr77wubBCbwzc#OwcBe!sVN;;`sdj?Vs5Q@>{Gr?pcyZQNtF zY|hN%1E_TdauG95Fk?FZi{^gcL1|Qq7Uo+M)FZma0yQ}*BSB87fXFfmumEm2R W_+s7Z9aTWf89ZJ6T-G@yGywpWH$;j6 literal 0 HcmV?d00001 diff --git a/docs-src/html/tab_h.png b/docs-src/html/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..0817946534660140e3e950bf3b3420a932a9f548 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QiYx_jv*C{Z|C~*H5o{_+aMMe=Fy**IUHW@HDTs*d) zce;$ICD+v5Vp20MwD_tXbG#?_sCeFv#|Pe8&n{k5Uv}5v+NK%ilOt#JCeC=g%( a^6y*fC)Ft$6?+5d0tQc4KbLh*2~7a)%|v1V literal 0 HcmV?d00001 diff --git a/docs-src/html/tabs.css b/docs-src/html/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/docs-src/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/docs-src/html/tst__unittest_8cpp.html b/docs-src/html/tst__unittest_8cpp.html new file mode 100644 index 0000000..20c4fda --- /dev/null +++ b/docs-src/html/tst__unittest_8cpp.html @@ -0,0 +1,131 @@ + + + + + + + +IntelliPhoto: src/tst_unittest.cpp File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    tst_unittest.cpp File Reference
    +
    +
    +
    #include <QtTest>
    +#include <QCoreApplication>
    +#include "GUI/IntelliPhotoGui.h"
    +#include "Image/IntelliImage.h"
    +#include "Image/IntelliRasterImage.h"
    +#include "Image/IntelliShapedImage.h"
    +#include "IntelliHelper/IntelliColorPicker.h"
    +#include "IntelliHelper/IntelliRenderSettings.h"
    +#include "IntelliHelper/IntelliToolsettings.h"
    +#include "IntelliHelper/IntelliTriangulation.h"
    +#include "Layer/PaintingArea.h"
    +#include "Tool/IntelliTool.h"
    +#include "Tool/IntelliToolCircle.h"
    +#include "Tool/IntelliToolFloodFill.h"
    +#include "Tool/IntelliToolLine.h"
    +#include "Tool/IntelliToolPen.h"
    +#include "Tool/IntelliToolPlain.h"
    +#include "Tool/IntelliToolPolygon.h"
    +#include "Tool/IntelliToolRectangle.h"
    +#include "tst_unittest.moc"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Classes

    class  UnitTest
     
    +
    +
    + + + + diff --git a/docs-src/html/tst__unittest_8cpp_source.html b/docs-src/html/tst__unittest_8cpp_source.html new file mode 100644 index 0000000..04351e8 --- /dev/null +++ b/docs-src/html/tst__unittest_8cpp_source.html @@ -0,0 +1,1852 @@ + + + + + + + +IntelliPhoto: src/tst_unittest.cpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    IntelliPhoto +  1 +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    tst_unittest.cpp
    +
    +
    +Go to the documentation of this file.
    1 #include <QtTest>
    +
    2 #include <QCoreApplication>
    +
    3 // add necessary includes here
    +
    4 #include "GUI/IntelliPhotoGui.h"
    +
    5 #include "Image/IntelliImage.h"
    + + + + + + +
    12 #include "Layer/PaintingArea.h"
    +
    13 #include "Tool/IntelliTool.h"
    +
    14 #include "Tool/IntelliToolCircle.h"
    + +
    16 #include "Tool/IntelliToolLine.h"
    +
    17 #include "Tool/IntelliToolPen.h"
    +
    18 #include "Tool/IntelliToolPlain.h"
    + + +
    21 
    +
    22 class UnitTest : public QObject
    +
    23 {
    +
    24 Q_OBJECT
    +
    25 private:
    +
    26 IntelliPhotoGui* gui;
    +
    27 PaintingArea* area;
    +
    28 
    +
    29 public:
    +
    30 UnitTest();
    +
    31 ~UnitTest();
    +
    32 
    +
    33 private slots:
    +
    34 void initTestCase();
    +
    35 void cleanupTestCase();
    +
    36 //void test_case1();
    +
    37 
    +
    39 
    +
    40 
    +
    41 //test painting area
    +
    42 void test_addLayer();
    +
    43 void test_deleteLayer();
    +
    44 void test_setActive();
    +
    45 void test_setAlpha();
    +
    46 void test_floodFill();
    +
    47 void test_moveActive();
    +
    48 void test_setPolygon();
    +
    49 void test_setLayerUp();
    +
    50 void test_setLayerDown();
    +
    51 
    +
    52 void test_createTools();
    +
    53 
    +
    54 //test Raster-Image operations
    +
    55 void test_RasterImage_drawPixel();
    +
    56 void test_RasterImage_drawLine();
    +
    57 void test_RasterImage_drawPoint();
    +
    58 void test_RasterImage_getDisplayable();
    +
    59 void test_RasterImage_getPixelColor();
    +
    60 void test_RasterImage_getImageData();
    +
    61 void test_RasterImage_setImageData();
    +
    62 
    +
    63 //test Shaped-Image operations
    +
    64 void test_ShapedImage_drawPixel();
    +
    65 void test_ShapedImage_drawLine();
    +
    66 void test_ShapedImage_drawPoint();
    +
    67 void test_ShapedImage_getDisplayable();
    +
    68 void test_ShapedImage_getPixelColor();
    +
    69 void test_ShapedImage_getImageData();
    +
    70 void test_ShapedImage_setImageData();
    +
    71 
    +
    72 //test tools
    +
    73 void test_Circle_fullDraw();
    +
    74 void test_Circle_interruptedDraw();
    +
    75 
    +
    76 void test_FloodFill_fullDraw();
    +
    77 void test_FloodFill_interruptedDraw();
    +
    78 
    +
    79 void test_Line_fullDraw();
    +
    80 void test_Line_interruptedDraw();
    +
    81 
    +
    82 void test_Pen_fullDraw();
    +
    83 void test_Pen_interruptedDraw();
    +
    84 
    +
    85 void test_Plain_fullDraw();
    +
    86 void test_Plain_interruptedDraw();
    +
    87 
    +
    88 void test_Polygon_fullDraw();
    +
    89 void test_Polygon_interruptedDraw();
    +
    90 
    +
    91 void test_Rectangle_fullDraw();
    +
    92 void test_Rectangle_interruptedDraw();
    +
    93 
    +
    94 //test Triangulation
    +
    95 void test_Triangulation_Coverage();
    +
    96 
    +
    97 
    +
    99 
    +
    100 //bench painting area
    +
    101 void bench_addLayer();
    +
    102 void bench_deleteLayer();
    +
    103 void bench_setActive();
    +
    104 void bench_setAlpha();
    +
    105 void bench_floodFill();
    +
    106 void bench_moveActive();
    +
    107 void bench_setPolygon();
    +
    108 void bench_setLayerUp();
    +
    109 void bench_setLayerDown();
    +
    110 
    +
    111 void bench_createTools();
    +
    112 
    +
    113 //bench Raster-Image operations
    +
    114 void bench_RasterImage_drawPixel();
    +
    115 void bench_RasterImage_drawLine();
    +
    116 void bench_RasterImage_drawPoint();
    +
    117 void bench_RasterImage_getDisplayable();
    +
    118 void bench_RasterImage_getPixelColor();
    +
    119 void bench_RasterImage_getImageData();
    +
    120 void bench_RasterImage_setImageData();
    +
    121 
    +
    122 //bench Shaped-Image operations
    +
    123 void bench_ShapedImage_drawPixel();
    +
    124 void bench_ShapedImage_drawLine();
    +
    125 void bench_ShapedImage_drawPoint();
    +
    126 void bench_ShapedImage_getDisplayable();
    +
    127 void bench_ShapedImage_getPixelColor();
    +
    128 void bench_ShapedImage_getImageData();
    +
    129 void bench_ShapedImage_setImageData();
    +
    130 
    +
    131 //bench tools
    +
    132 void bench_Circle_fullDraw();
    +
    133 void bench_Circle_interruptedDraw();
    +
    134 
    +
    135 void bench_FloodFill_fullDraw();
    +
    136 void bench_FloodFill_interruptedDraw();
    +
    137 
    +
    138 void bench_Line_fullDraw();
    +
    139 void bench_Line_interruptedDraw();
    +
    140 
    +
    141 void bench_Pen_fullDraw();
    +
    142 void bench_Pen_interruptedDraw();
    +
    143 
    +
    144 void bench_Plain_fullDraw();
    +
    145 void bench_Plain_interruptedDraw();
    +
    146 
    +
    147 void bench_Polygon_fullDraw();
    +
    148 void bench_Polygon_interruptedDraw();
    +
    149 
    +
    150 void bench_Rectangle_fullDraw();
    +
    151 void bench_Rectangle_interruptedDraw();
    +
    152 
    +
    153 //bench Triangulation
    +
    154 void bench_Triangulation_Coverage();
    +
    155 };
    +
    156 
    + +
    158 {
    +
    159  gui = new IntelliPhotoGui();
    +
    160  area = gui->paintingArea;
    +
    161 }
    +
    162 
    + +
    164 {
    +
    165 
    +
    166 }
    +
    167 
    +
    168 void UnitTest::initTestCase()
    +
    169 {
    +
    170 
    +
    171 }
    +
    172 
    +
    173 void UnitTest::cleanupTestCase()
    +
    174 {
    +
    175 
    +
    176 }
    +
    177 
    +
    178 //test painting area
    +
    179 void UnitTest::test_addLayer(){
    +
    180  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    181 
    +
    182  QCOMPARE(area->layerBundle.size(), 1);
    +
    183  QCOMPARE(area->activeLayer, 0);
    +
    184 
    +
    185  QCOMPARE(area->layerBundle[static_cast<size_t>(area->activeLayer)].width, 200);
    +
    186  QCOMPARE(area->layerBundle[static_cast<size_t>(area->activeLayer)].widthOffset, 10);
    +
    187 
    +
    188  QCOMPARE(area->layerBundle[static_cast<size_t>(area->activeLayer)].height, 200);
    +
    189  QCOMPARE(area->layerBundle[static_cast<size_t>(area->activeLayer)].heightOffset, 20);
    +
    190 
    +
    191  area->deleteLayer(0);
    +
    192 }
    +
    193 
    +
    194 void UnitTest::test_deleteLayer(){
    +
    195  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    196  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    197 
    +
    198  area->deleteLayer(3);
    +
    199  QCOMPARE(area->layerBundle.size(), 2);
    +
    200  QCOMPARE(area->activeLayer, 1);
    +
    201 
    +
    202  area->deleteLayer(-1);
    +
    203  QCOMPARE(area->layerBundle.size(), 2);
    +
    204  QCOMPARE(area->activeLayer, 1);
    +
    205 
    +
    206  area->deleteLayer(1);
    +
    207  QCOMPARE(area->layerBundle.size(), 1);
    +
    208  QCOMPARE(area->activeLayer, 0);
    +
    209 
    +
    210  area->deleteLayer(0);
    +
    211  QCOMPARE(area->layerBundle.size(), 0);
    +
    212  QCOMPARE(area->activeLayer, -1);
    +
    213 
    +
    214 }
    +
    215 
    +
    216 void UnitTest::test_setActive(){
    +
    217  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    218  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    219 
    +
    220  area->setLayerActive(0);
    +
    221  QCOMPARE(area->activeLayer, 0);
    +
    222  area->setLayerActive(1);
    +
    223  QCOMPARE(area->activeLayer, 1);
    +
    224  area->setLayerActive(-1);
    +
    225  QCOMPARE(area->activeLayer, 1);
    +
    226  area->setLayerActive(3);
    +
    227  QCOMPARE(area->activeLayer, 1);
    +
    228 
    +
    229  area->deleteLayer(0);
    +
    230  area->deleteLayer(0);
    +
    231 }
    +
    232 
    +
    233 void UnitTest::test_setAlpha(){
    +
    234  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    235  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    236 
    +
    237  area->setLayerAlpha(0,0);
    +
    238  QCOMPARE(area->layerBundle[0].alpha, 0);
    +
    239 
    +
    240  area->setLayerAlpha(0,255);
    +
    241  QCOMPARE(area->layerBundle[0].alpha, 255);
    +
    242 
    +
    243  area->setLayerAlpha(1,123);
    +
    244  QCOMPARE(area->layerBundle[1].alpha, 123);
    +
    245 
    +
    246  area->setLayerAlpha(1,-12);
    +
    247  QCOMPARE(area->layerBundle[1].alpha, 123);
    +
    248 
    +
    249  area->setLayerAlpha(1,300);
    +
    250  QCOMPARE(area->layerBundle[1].alpha, 123);
    +
    251 
    +
    252  area->deleteLayer(1);
    +
    253  area->deleteLayer(0);
    +
    254 }
    +
    255 
    +
    256 void UnitTest::test_floodFill(){
    +
    257  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    258 
    +
    259  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    260  QPoint point;
    +
    261  for(size_t i = 0; i<200; i++) {
    +
    262  point.setX(static_cast<int>(i));
    +
    263  for(size_t j = 0; i<200; i++) {
    +
    264  point.setY(static_cast<int>(j));
    +
    265  QVERIFY(area->layerBundle[static_cast<size_t>(area->activeLayer)].image->getPixelColor(point)==QColor(255,255,255,255));
    +
    266  }
    +
    267  }
    +
    268 
    +
    269  area->layerBundle[0].image->drawPlain(QColor(0, 0, 0, 0));
    +
    270  for(size_t i = 0; i<200; i++) {
    +
    271  point.setX(static_cast<int>(i));
    +
    272  for(size_t j = 0; i<200; i++) {
    +
    273  point.setY(static_cast<int>(j));
    +
    274  QVERIFY(area->layerBundle[static_cast<size_t>(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,0));
    +
    275  }
    +
    276  }
    +
    277 
    +
    278  area->deleteLayer(0);
    +
    279 }
    +
    280 
    +
    281 void UnitTest::test_moveActive(){
    +
    282  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    283  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    284 
    +
    285  area->layerBundle[1].image->drawPlain(QColor(0, 0, 0, 255));
    +
    286  QPoint point(0,0);
    +
    287 
    +
    288  area->moveActiveLayer(-1);
    +
    289  QCOMPARE(area->activeLayer, 0);
    +
    290  QVERIFY(area->layerBundle[static_cast<size_t>(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255));
    +
    291 
    +
    292  area->moveActiveLayer(-1);
    +
    293  QCOMPARE(area->activeLayer, 0);
    +
    294  QVERIFY(area->layerBundle[static_cast<size_t>(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255));
    +
    295 
    +
    296  area->moveActiveLayer(1);
    +
    297  QCOMPARE(area->activeLayer, 1);
    +
    298  QVERIFY(area->layerBundle[static_cast<size_t>(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255));
    +
    299 
    +
    300  area->moveActiveLayer(1);
    +
    301  QCOMPARE(area->activeLayer, 1);
    +
    302  QVERIFY(area->layerBundle[static_cast<size_t>(area->activeLayer)].image->getPixelColor(point)==QColor(0,0,0,255));
    +
    303 
    +
    304  area->deleteLayer(1);
    +
    305  area->deleteLayer(0);
    +
    306 }
    +
    307 
    +
    308 void UnitTest::test_setPolygon(){
    +
    309  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    310  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    311 
    +
    312  std::vector<QPoint> polygon{
    +
    313  QPoint(10,00),
    +
    314  QPoint(00,10),
    +
    315  QPoint(10,10),
    +
    316  QPoint(00,10)
    +
    317  };
    +
    318 
    +
    319  area->layerBundle[1].image->setPolygon(polygon);
    +
    320  IntelliShapedImage* image = dynamic_cast<IntelliShapedImage*>(area->layerBundle[1].image);
    +
    321  QCOMPARE(image->polygonData[0], polygon[0]);
    +
    322  QCOMPARE(image->polygonData[1], polygon[1]);
    +
    323  QCOMPARE(image->polygonData[2], polygon[2]);
    +
    324  QCOMPARE(image->polygonData[3], polygon[3]);
    +
    325 
    +
    326  area->deleteLayer(1);
    +
    327  area->deleteLayer(0);
    +
    328 }
    +
    329 
    +
    330 void UnitTest::test_setLayerUp(){
    +
    331  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    332  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    333 
    +
    334  area->selectLayerUp();
    +
    335  QCOMPARE(area->activeLayer, 1);
    +
    336 
    +
    337  area->setLayerActive(0);
    +
    338  QCOMPARE(area->activeLayer, 0);
    +
    339 
    +
    340  area->selectLayerUp();
    +
    341  QCOMPARE(area->activeLayer, 1);
    +
    342 
    +
    343  area->deleteLayer(1);
    +
    344  area->deleteLayer(0);
    +
    345 }
    +
    346 
    +
    347 void UnitTest::test_setLayerDown(){
    +
    348  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    349  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    350 
    +
    351  area->selectLayerDown();
    +
    352  QCOMPARE(area->activeLayer, 0);
    +
    353 
    +
    354  area->selectLayerDown();
    +
    355  QCOMPARE(area->activeLayer, 0);
    +
    356 
    +
    357  area->deleteLayer(1);
    +
    358  area->deleteLayer(0);
    +
    359 
    +
    360 }
    +
    361 
    +
    362 void UnitTest::test_createTools(){
    +
    363  QVERIFY(area->Tool == nullptr);
    +
    364 
    +
    365  area->createPenTool();
    +
    366  QVERIFY(dynamic_cast<IntelliToolPen*>(area->Tool) != nullptr);
    +
    367 
    +
    368  area->createLineTool();
    +
    369  QVERIFY(dynamic_cast<IntelliToolLine*>(area->Tool) != nullptr);
    +
    370 
    +
    371  area->createPlainTool();
    +
    372  QVERIFY(dynamic_cast<IntelliToolPlainTool*>(area->Tool) != nullptr);
    +
    373 
    +
    374  area->createCircleTool();
    +
    375  QVERIFY(dynamic_cast<IntelliToolCircle*>(area->Tool) != nullptr);
    +
    376 
    +
    377  area->createPolygonTool();
    +
    378  QVERIFY(dynamic_cast<IntelliToolPolygon*>(area->Tool) != nullptr);
    +
    379 
    +
    380  area->createFloodFillTool();
    +
    381  QVERIFY(dynamic_cast<IntelliToolFloodFill*>(area->Tool) != nullptr);
    +
    382 
    +
    383  area->createRectangleTool();
    +
    384  QVERIFY(dynamic_cast<IntelliToolRectangle*>(area->Tool) != nullptr);
    +
    385 }
    +
    386 
    +
    387 //test Raster-Image operations
    +
    388 void UnitTest::test_RasterImage_drawPixel(){
    +
    389  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    390 
    +
    391  QPoint point(0,0);
    +
    392 
    +
    393  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    394  area->layerBundle[0].image->drawPixel(point, QColor(0,0,0,255));
    +
    395 
    +
    396  QVERIFY(area->layerBundle[0].image->getPixelColor(point) == QColor(0,0,0,255));
    +
    397 
    +
    398  area->deleteLayer(0);
    +
    399 }
    +
    400 
    +
    401 void UnitTest::test_RasterImage_drawLine(){
    +
    402  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    403 
    +
    404  QPoint point1(0,0);
    +
    405  QPoint point2(10,10);
    +
    406  QPoint point3(5,5);
    +
    407  QPoint point4(6,5);
    +
    408 
    +
    409  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    410  area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),1);
    +
    411  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255));
    +
    412  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255));
    +
    413  QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255));
    +
    414  QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(255,255,255,255));
    +
    415 
    +
    416  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    417  area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),3);
    +
    418  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255));
    +
    419  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255));
    +
    420  QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255));
    +
    421  QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(0,0,0,255));
    +
    422 
    +
    423  area->deleteLayer(0);
    +
    424 }
    +
    425 
    +
    426 void UnitTest::test_RasterImage_drawPoint(){
    +
    427  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    428 
    +
    429  QPoint point1(5,5);
    +
    430  QPoint point2(5,6);
    +
    431 
    +
    432  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    433  area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),1);
    +
    434  QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255));
    +
    435  QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(255,255,255,255));
    +
    436 
    +
    437 
    +
    438  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    439  area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),5);
    +
    440  QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255));
    +
    441  QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(0,0,0,255));
    +
    442 
    +
    443  area->deleteLayer(0);
    +
    444 }
    +
    445 
    +
    446 void UnitTest::test_RasterImage_getDisplayable(){
    +
    447  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    448 
    +
    449  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    450  QImage img = area->layerBundle[0].image->getDisplayable(QSize(200,200),255);
    +
    451  QPoint point;
    +
    452  for(size_t i = 0; i<200; i++) {
    +
    453  point.setX(static_cast<int>(i));
    +
    454  for(size_t j = 0; j<200; j++) {
    +
    455  point.setY(static_cast<int>(j));
    +
    456  QVERIFY(img.pixelColor(point) == QColor(255,255,255,255));
    +
    457  }
    +
    458  }
    +
    459 
    +
    460  area->deleteLayer(0);
    +
    461 }
    +
    462 
    +
    463 void UnitTest::test_RasterImage_getPixelColor(){
    +
    464  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    465 
    +
    466  QPoint point(0,0);
    +
    467  area->layerBundle[0].image->drawPlain(QColor(0, 0, 0, 255));
    +
    468  QVERIFY(area->layerBundle[0].image->getPixelColor(point)==QColor(0,0,0,255));
    +
    469 
    +
    470  area->deleteLayer(0);
    +
    471 }
    +
    472 
    +
    473 void UnitTest::test_RasterImage_getImageData(){
    +
    474  area->addLayer(2,2,10,20,255,ImageType::RASTERIMAGE);
    +
    475 
    +
    476  QImage img(2,2, QImage::Format_ARGB32);
    +
    477  img.setPixelColor(0,0, Qt::red);
    +
    478  img.setPixelColor(0,1, Qt::yellow);
    +
    479  img.setPixelColor(1,0, Qt::blue);
    +
    480  img.setPixelColor(1,1, Qt::green);
    +
    481 
    +
    482  area->layerBundle[0].image->setImageData(img);
    +
    483  img = img.convertToFormat(QImage::Format_Indexed8);
    +
    484  QImage cpy = area->layerBundle[0].image->getImageData();
    +
    485 
    +
    486  QPoint point1(0,0);
    +
    487  QPoint point2(0,1);
    +
    488  QPoint point3(1,0);
    +
    489  QPoint point4(1,1);
    +
    490  QVERIFY(cpy.pixelColor(point1) == img.pixelColor(point1));
    +
    491  QVERIFY(cpy.pixelColor(point2) == img.pixelColor(point2));
    +
    492  QVERIFY(cpy.pixelColor(point3) == img.pixelColor(point3));
    +
    493  QVERIFY(cpy.pixelColor(point4) == img.pixelColor(point4));
    +
    494 
    +
    495  area->deleteLayer(0);
    +
    496 }
    +
    497 
    +
    498 void UnitTest::test_RasterImage_setImageData(){
    +
    499  area->addLayer(2,2,10,20,255,ImageType::RASTERIMAGE);
    +
    500 
    +
    501  QImage img(2,2, QImage::Format_ARGB32);
    +
    502  img.setPixelColor(0,0, Qt::red);
    +
    503  img.setPixelColor(0,1, Qt::yellow);
    +
    504  img.setPixelColor(1,0, Qt::blue);
    +
    505  img.setPixelColor(1,1, Qt::green);
    +
    506 
    +
    507  area->layerBundle[0].image->setImageData(img);
    +
    508  img = img.convertToFormat(QImage::Format_Indexed8);
    +
    509 
    +
    510  QPoint point1(0,0);
    +
    511  QPoint point2(0,1);
    +
    512  QPoint point3(1,0);
    +
    513  QPoint point4(1,1);
    +
    514  QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == img.pixelColor(point1));
    +
    515  QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == img.pixelColor(point2));
    +
    516  QVERIFY(area->layerBundle[0].image->getPixelColor(point3) == img.pixelColor(point3));
    +
    517  QVERIFY(area->layerBundle[0].image->getPixelColor(point4) == img.pixelColor(point4));
    +
    518 
    +
    519  area->deleteLayer(0);
    +
    520 }
    +
    521 
    +
    522 //test Shaped-Image operations
    +
    523 void UnitTest::test_ShapedImage_drawPixel(){
    +
    524  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    525 
    +
    526  QPoint point(0,0);
    +
    527 
    +
    528  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    529  area->layerBundle[0].image->drawPixel(point, QColor(0,0,0,255));
    +
    530 
    +
    531  QVERIFY(area->layerBundle[0].image->getPixelColor(point) == QColor(0,0,0,255));
    +
    532 
    +
    533  area->deleteLayer(0);
    +
    534 }
    +
    535 
    +
    536 void UnitTest::test_ShapedImage_drawLine(){
    +
    537  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    538 
    +
    539  QPoint point1(0,0);
    +
    540  QPoint point2(10,10);
    +
    541  QPoint point3(5,5);
    +
    542  QPoint point4(6,5);
    +
    543 
    +
    544  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    545  area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),1);
    +
    546  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255));
    +
    547  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255));
    +
    548  QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255));
    +
    549  QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(255,255,255,255));
    +
    550 
    +
    551  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    552  area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255),3);
    +
    553  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(0,0,0,255));
    +
    554  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(0,0,0,255));
    +
    555  QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(0,0,0,255));
    +
    556  QVERIFY(area->layerBundle[0].image->getPixelColor(point4)==QColor(0,0,0,255));
    +
    557 
    +
    558  area->deleteLayer(0);
    +
    559 }
    +
    560 
    +
    561 void UnitTest::test_ShapedImage_drawPoint(){
    +
    562  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    563 
    +
    564  QPoint point1(5,5);
    +
    565  QPoint point2(5,6);
    +
    566 
    +
    567  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    568  area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),1);
    +
    569  QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255));
    +
    570  QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(255,255,255,255));
    +
    571 
    +
    572 
    +
    573  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    574  area->layerBundle[0].image->drawPoint(point1, QColor(0,0,0,255),5);
    +
    575  QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == QColor(0,0,0,255));
    +
    576  QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == QColor(0,0,0,255));
    +
    577 
    +
    578  area->deleteLayer(0);
    +
    579 }
    +
    580 
    +
    581 void UnitTest::test_ShapedImage_getDisplayable(){
    +
    582  area->addLayer(21,21,10,20,255,ImageType::SHAPEDIMAGE);
    +
    583  std::vector<QPoint> points{
    +
    584  QPoint(10,00),
    +
    585  QPoint(00,10),
    +
    586  QPoint(10,20),
    +
    587  QPoint(20,10)
    +
    588  };
    +
    589 
    +
    590  std::vector<QPoint> test{
    +
    591  QPoint(00,00),
    +
    592  QPoint(00,20),
    +
    593  QPoint(20,00),
    +
    594  QPoint(20,20),
    +
    595  QPoint(10,10)
    +
    596  };
    +
    597  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    598  area->layerBundle[0].image->setPolygon(points);
    +
    599  QSize size(21,21);
    +
    600  QImage img = area->layerBundle[0].image->getDisplayable(size,255);
    +
    601 
    +
    602  QCOMPARE(img.pixelColor(points[0]).alpha(), 255);
    +
    603  QCOMPARE(img.pixelColor(points[1]).alpha(), 255);
    +
    604  QCOMPARE(img.pixelColor(points[2]).alpha(), 255);
    +
    605  QCOMPARE(img.pixelColor(points[3]).alpha(), 255);
    +
    606 
    +
    607  QCOMPARE(img.pixelColor(test[4]).alpha(), 255);
    +
    608  QCOMPARE(img.pixelColor(test[0]).alpha(), 0);
    +
    609  QCOMPARE(img.pixelColor(test[1]).alpha(), 0);
    +
    610  QCOMPARE(img.pixelColor(test[2]).alpha(), 0);
    +
    611  QCOMPARE(img.pixelColor(test[3]).alpha(), 0);
    +
    612 
    +
    613  area->deleteLayer(0);
    +
    614 }
    +
    615 
    +
    616 void UnitTest::test_ShapedImage_getPixelColor(){
    +
    617  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    618 
    +
    619  QPoint point(0,0);
    +
    620  area->layerBundle[0].image->drawPlain(QColor(0, 0, 0, 255));
    +
    621  QVERIFY(area->layerBundle[0].image->getPixelColor(point)==QColor(0,0,0,255));
    +
    622 
    +
    623  area->deleteLayer(0);
    +
    624 }
    +
    625 
    +
    626 void UnitTest::test_ShapedImage_getImageData(){
    +
    627  area->addLayer(2,2,10,20,255,ImageType::RASTERIMAGE);
    +
    628 
    +
    629  QImage img(2,2, QImage::Format_ARGB32);
    +
    630  img.setPixelColor(0,0, Qt::red);
    +
    631  img.setPixelColor(0,1, Qt::yellow);
    +
    632  img.setPixelColor(1,0, Qt::blue);
    +
    633  img.setPixelColor(1,1, Qt::green);
    +
    634 
    +
    635  area->layerBundle[0].image->setImageData(img);
    +
    636  img = img.convertToFormat(QImage::Format_Indexed8);
    +
    637  QImage cpy = area->layerBundle[0].image->getImageData();
    +
    638 
    +
    639  QPoint point1(0,0);
    +
    640  QPoint point2(0,1);
    +
    641  QPoint point3(1,0);
    +
    642  QPoint point4(1,1);
    +
    643  QVERIFY(cpy.pixelColor(point1) == img.pixelColor(point1));
    +
    644  QVERIFY(cpy.pixelColor(point2) == img.pixelColor(point2));
    +
    645  QVERIFY(cpy.pixelColor(point3) == img.pixelColor(point3));
    +
    646  QVERIFY(cpy.pixelColor(point4) == img.pixelColor(point4));
    +
    647 
    +
    648  area->deleteLayer(0);
    +
    649 }
    +
    650 
    +
    651 void UnitTest::test_ShapedImage_setImageData(){
    +
    652  area->addLayer(2,2,10,20,255,ImageType::RASTERIMAGE);
    +
    653 
    +
    654  QImage img(2,2, QImage::Format_ARGB32);
    +
    655  img.setPixelColor(0,0, Qt::red);
    +
    656  img.setPixelColor(0,1, Qt::yellow);
    +
    657  img.setPixelColor(1,0, Qt::blue);
    +
    658  img.setPixelColor(1,1, Qt::green);
    +
    659 
    +
    660  area->layerBundle[0].image->setImageData(img);
    +
    661  img = img.convertToFormat(QImage::Format_Indexed8);
    +
    662 
    +
    663  QPoint point1(0,0);
    +
    664  QPoint point2(0,1);
    +
    665  QPoint point3(1,0);
    +
    666  QPoint point4(1,1);
    +
    667  QVERIFY(area->layerBundle[0].image->getPixelColor(point1) == img.pixelColor(point1));
    +
    668  QVERIFY(area->layerBundle[0].image->getPixelColor(point2) == img.pixelColor(point2));
    +
    669  QVERIFY(area->layerBundle[0].image->getPixelColor(point3) == img.pixelColor(point3));
    +
    670  QVERIFY(area->layerBundle[0].image->getPixelColor(point4) == img.pixelColor(point4));
    +
    671 
    +
    672  area->deleteLayer(0);
    +
    673 }
    +
    674 
    +
    675 //test tools
    +
    676 void UnitTest::test_Circle_fullDraw(){
    +
    677  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    678  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    679  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    680  area->createCircleTool();
    +
    681  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    682 
    +
    683  QPoint point1(100,100);
    +
    684  QPoint point2(150,100);
    +
    685  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    686  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    687  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    688 
    +
    689 
    +
    690  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getSecondColor());
    +
    691  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor());
    +
    692 
    +
    693  area->deleteLayer(0);
    +
    694 }
    +
    695 
    +
    696 void UnitTest::test_Circle_interruptedDraw(){
    +
    697  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    698  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    699  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    700  area->createCircleTool();
    +
    701  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    702 
    +
    703  QPoint point1(100,100);
    +
    704  QPoint point2(150,100);
    +
    705  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    706  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    707  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    708  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    709  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    710 
    +
    711 
    +
    712  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255));
    +
    713  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255));
    +
    714 
    +
    715  area->deleteLayer(0);
    +
    716 
    +
    717 }
    +
    718 
    +
    719 
    +
    720 void UnitTest::test_FloodFill_fullDraw(){
    +
    721  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    722  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    723  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    724  area->createFloodFillTool();
    +
    725  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    726 
    +
    727  QPoint point1(100,100);
    +
    728  QPoint point2(150,100);
    +
    729  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    730  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    731  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    732 
    +
    733 
    +
    734  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor());
    +
    735  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor());
    +
    736 
    +
    737  area->deleteLayer(0);
    +
    738 }
    +
    739 
    +
    740 void UnitTest::test_FloodFill_interruptedDraw(){
    +
    741  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    742  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    743  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    744  area->createFloodFillTool();
    +
    745  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    746 
    +
    747  QPoint point1(100,100);
    +
    748  QPoint point2(150,100);
    +
    749  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    750  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    751  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    752  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    753  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    754 
    +
    755 
    +
    756  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255));
    +
    757  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255));
    +
    758 
    +
    759  area->deleteLayer(0);
    +
    760 }
    +
    761 
    +
    762 
    +
    763 void UnitTest::test_Line_fullDraw(){
    +
    764  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    765  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    766  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    767  area->createLineTool();
    +
    768  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    769 
    +
    770  QPoint point1(100,100);
    +
    771  QPoint point2(150,100);
    +
    772  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    773  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    774  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    775 
    +
    776 
    +
    777  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor());
    +
    778  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor());
    +
    779 
    +
    780  area->deleteLayer(0);
    +
    781 }
    +
    782 
    +
    783 void UnitTest::test_Line_interruptedDraw(){
    +
    784  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    785  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    786  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    787  area->createLineTool();
    +
    788  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    789 
    +
    790  QPoint point1(100,100);
    +
    791  QPoint point2(150,100);
    +
    792  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    793  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    794  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    795  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    796  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    797 
    +
    798 
    +
    799  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255));
    +
    800  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255));
    +
    801 
    +
    802  area->deleteLayer(0);
    +
    803 }
    +
    804 
    +
    805 void UnitTest::test_Pen_fullDraw(){
    +
    806  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    807  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    808  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    809  area->createPenTool();
    +
    810  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    811 
    +
    812  QPoint point1(100,100);
    +
    813  QPoint point2(150,100);
    +
    814  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    815  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    816  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    817 
    +
    818 
    +
    819  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor());
    +
    820  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor());
    +
    821 
    +
    822  area->deleteLayer(0);
    +
    823 }
    +
    824 
    +
    825 void UnitTest::test_Pen_interruptedDraw(){
    +
    826  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    827  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    828  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    829  area->createPenTool();
    +
    830  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    831 
    +
    832  QPoint point1(100,100);
    +
    833  QPoint point2(150,100);
    +
    834  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    835  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    836  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    837  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    838  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    839 
    +
    840 
    +
    841  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255));
    +
    842  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255));
    +
    843 
    +
    844  area->deleteLayer(0);
    +
    845 }
    +
    846 
    +
    847 void UnitTest::test_Plain_fullDraw(){
    +
    848  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    849  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    850  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    851  area->createPlainTool();
    +
    852  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    853 
    +
    854  QPoint point1(100,100);
    +
    855  QPoint point2(150,100);
    +
    856  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    857  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    858  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    859 
    +
    860 
    +
    861  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor());
    +
    862  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor());
    +
    863 
    +
    864  area->deleteLayer(0);
    +
    865 }
    +
    866 
    +
    867 void UnitTest::test_Plain_interruptedDraw(){
    +
    868  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    869  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    870  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    871  area->createPlainTool();
    +
    872  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    873 
    +
    874  QPoint point1(100,100);
    +
    875  QPoint point2(150,100);
    +
    876  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    877  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    878  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    879  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    880  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    881 
    +
    882 
    +
    883  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255));
    +
    884  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255));
    +
    885 
    +
    886  area->deleteLayer(0);
    +
    887 }
    +
    888 
    +
    889 void UnitTest::test_Polygon_fullDraw(){
    +
    890  area->addLayer(21,21,10,20,255,ImageType::RASTERIMAGE);
    +
    891  std::vector<QPoint> points{
    +
    892  QPoint(10,00),
    +
    893  QPoint(00,10),
    +
    894  QPoint(10,20),
    +
    895  QPoint(20,10)
    +
    896  };
    +
    897 
    +
    898  std::vector<QPoint> test{
    +
    899  QPoint(00,00),
    +
    900  QPoint(00,20),
    +
    901  QPoint(20,00),
    +
    902  QPoint(20,20),
    +
    903  QPoint(10,10)
    +
    904  };
    +
    905 
    +
    906  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    907  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    908  area->createPolygonTool();
    +
    909  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    910 
    +
    911  area->Tool->onMouseLeftPressed(points[0].x(), points[0].y());
    +
    912  area->Tool->onMouseLeftReleased(points[0].x(), points[0].y());
    +
    913  area->Tool->onMouseMoved(points[1].x(), points[1].y());
    +
    914 
    +
    915  area->Tool->onMouseLeftPressed(points[1].x(), points[1].y());
    +
    916  area->Tool->onMouseLeftReleased(points[1].x(), points[1].y());
    +
    917  area->Tool->onMouseMoved(points[2].x(), points[2].y());
    +
    918 
    +
    919  area->Tool->onMouseLeftPressed(points[2].x(), points[2].y());
    +
    920  area->Tool->onMouseLeftReleased(points[2].x(), points[2].y());
    +
    921  area->Tool->onMouseMoved(points[3].x(), points[3].y());
    +
    922 
    +
    923  area->Tool->onMouseLeftPressed(points[3].x(), points[3].y());
    +
    924  area->Tool->onMouseLeftReleased(points[3].x(), points[3].y());
    +
    925  area->Tool->onMouseMoved(points[0].x(), points[0].y());
    +
    926 
    +
    927  area->Tool->onMouseLeftPressed(points[0].x(), points[0].y());
    +
    928  area->Tool->onMouseLeftReleased(points[0].x(), points[0].y());
    +
    929 
    +
    930  QVERIFY(area->layerBundle[0].image->getPixelColor(points[0])==area->colorPicker.getFirstColor());
    +
    931  QVERIFY(area->layerBundle[0].image->getPixelColor(points[1])==area->colorPicker.getFirstColor());
    +
    932  QVERIFY(area->layerBundle[0].image->getPixelColor(points[2])==area->colorPicker.getFirstColor());
    +
    933  QVERIFY(area->layerBundle[0].image->getPixelColor(points[3])==area->colorPicker.getFirstColor());
    +
    934 
    +
    935 
    +
    936  QVERIFY(area->layerBundle[0].image->getPixelColor(test[4])==area->colorPicker.getSecondColor());
    +
    937  QVERIFY(area->layerBundle[0].image->getPixelColor(test[0])==QColor(255,0,0,255));
    +
    938  QVERIFY(area->layerBundle[0].image->getPixelColor(test[1])==QColor(255,0,0,255));
    +
    939  QVERIFY(area->layerBundle[0].image->getPixelColor(test[2])==QColor(255,0,0,255));
    +
    940  QVERIFY(area->layerBundle[0].image->getPixelColor(test[3])==QColor(255,0,0,255));
    +
    941 
    +
    942  area->deleteLayer(0);
    +
    943 }
    +
    944 
    +
    945 
    +
    946 void UnitTest::test_Polygon_interruptedDraw(){
    +
    947  area->addLayer(201,201,10,20,255,ImageType::RASTERIMAGE);
    +
    948  std::vector<QPoint> points{
    +
    949  QPoint(100,000),
    +
    950  QPoint(000,100),
    +
    951  QPoint(100,200),
    +
    952  QPoint(200,100)
    +
    953  };
    +
    954 
    +
    955  std::vector<QPoint> test{
    +
    956  QPoint(000,000),
    +
    957  QPoint(000,200),
    +
    958  QPoint(200,000),
    +
    959  QPoint(200,200),
    +
    960  QPoint(100,100)
    +
    961  };
    +
    962 
    +
    963  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    964  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    965  area->createPolygonTool();
    +
    966  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    967 
    +
    968  area->Tool->onMouseLeftPressed(points[0].x(), points[0].y());
    +
    969  area->Tool->onMouseLeftReleased(points[0].x(), points[0].y());
    +
    970  area->Tool->onMouseMoved(points[1].x(), points[1].y());
    +
    971 
    +
    972  area->Tool->onMouseLeftPressed(points[1].x(), points[1].y());
    +
    973  area->Tool->onMouseLeftReleased(points[1].x(), points[1].y());
    +
    974  area->Tool->onMouseMoved(points[2].x(), points[2].y());
    +
    975 
    +
    976  area->Tool->onMouseLeftPressed(points[2].x(), points[2].y());
    +
    977  area->Tool->onMouseLeftReleased(points[2].x(), points[2].y());
    +
    978  area->Tool->onMouseMoved(points[3].x(), points[3].y());
    +
    979 
    +
    980  area->Tool->onMouseLeftPressed(points[3].x(), points[3].y());
    +
    981  area->Tool->onMouseLeftReleased(points[3].x(), points[3].y());
    +
    982 
    +
    983  area->Tool->onMouseRightPressed(points[0].x(), points[0].y());
    +
    984  area->Tool->onMouseRightReleased(points[0].x(), points[0].y());
    +
    985 
    +
    986 
    +
    987  QVERIFY(area->layerBundle[0].image->getPixelColor(points[0])==QColor(255,0,0,255));
    +
    988  QVERIFY(area->layerBundle[0].image->getPixelColor(points[1])==QColor(255,0,0,255));
    +
    989  QVERIFY(area->layerBundle[0].image->getPixelColor(points[2])==QColor(255,0,0,255));
    +
    990  QVERIFY(area->layerBundle[0].image->getPixelColor(points[3])==QColor(255,0,0,255));
    +
    991 
    +
    992  QVERIFY(area->layerBundle[0].image->getPixelColor(test[4])==QColor(255,0,0,255));
    +
    993  QVERIFY(area->layerBundle[0].image->getPixelColor(test[0])==QColor(255,0,0,255));
    +
    994  QVERIFY(area->layerBundle[0].image->getPixelColor(test[1])==QColor(255,0,0,255));
    +
    995  QVERIFY(area->layerBundle[0].image->getPixelColor(test[2])==QColor(255,0,0,255));
    +
    996  QVERIFY(area->layerBundle[0].image->getPixelColor(test[3])==QColor(255,0,0,255));
    +
    997 
    +
    998  area->deleteLayer(0);
    +
    999 }
    +
    1000 
    +
    1001 
    +
    1002 void UnitTest::test_Rectangle_fullDraw(){
    +
    1003  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1004  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1005  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1006  area->createRectangleTool();
    +
    1007  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1008 
    +
    1009  QPoint point1(100,100);
    +
    1010  QPoint point2(150,150);
    +
    1011  QPoint point3(125,125);
    +
    1012  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1013  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1014  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1015 
    +
    1016 
    +
    1017  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==area->colorPicker.getFirstColor());
    +
    1018  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==area->colorPicker.getFirstColor());
    +
    1019  QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==area->colorPicker.getSecondColor());
    +
    1020 
    +
    1021  area->deleteLayer(0);
    +
    1022 }
    +
    1023 
    +
    1024 void UnitTest::test_Rectangle_interruptedDraw(){
    +
    1025  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1026  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1027  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1028  area->createRectangleTool();
    +
    1029  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1030 
    +
    1031  QPoint point1(100,100);
    +
    1032  QPoint point2(150,150);
    +
    1033  QPoint point3(125,125);
    +
    1034  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1035  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1036  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1037  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1038  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1039 
    +
    1040  QVERIFY(area->layerBundle[0].image->getPixelColor(point1)==QColor(255,0,0,255));
    +
    1041  QVERIFY(area->layerBundle[0].image->getPixelColor(point2)==QColor(255,0,0,255));
    +
    1042  QVERIFY(area->layerBundle[0].image->getPixelColor(point3)==QColor(255,0,0,255));
    +
    1043 
    +
    1044  area->deleteLayer(0);
    +
    1045 }
    +
    1046 
    +
    1047 
    +
    1048 //test Triangulation
    +
    1049 void UnitTest::test_Triangulation_Coverage(){
    +
    1050  std::vector<QPoint> points{
    +
    1051  QPoint(10,00),
    +
    1052  QPoint(00,10),
    +
    1053  QPoint(10,20),
    +
    1054  QPoint(20,10)
    +
    1055  };
    +
    1056  std::vector<QPoint> test{
    +
    1057  QPoint(00,00),
    +
    1058  QPoint(00,20),
    +
    1059  QPoint(20,00),
    +
    1060  QPoint(20,20),
    +
    1061  QPoint(10,10)
    +
    1062  };
    +
    1063  std::vector<Triangle> tria = IntelliTriangulation::calculateTriangles(points);
    +
    1064  QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[0]), true);
    +
    1065  QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[1]), true);
    +
    1066  QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[2]), true);
    +
    1067  QCOMPARE(IntelliTriangulation::isInPolygon(tria, points[3]), true);
    +
    1068 
    +
    1069  QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[4]), true);
    +
    1070  QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[0]), false);
    +
    1071  QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[1]), false);
    +
    1072  QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[2]), false);
    +
    1073  QCOMPARE(IntelliTriangulation::isInPolygon(tria, test[3]), false);
    +
    1074 }
    +
    1075 
    +
    1076 
    +
    1078 
    +
    1079 void UnitTest::bench_addLayer(){
    +
    1080  QBENCHMARK{
    +
    1081  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1082  }
    +
    1083  area->deleteLayer(0);
    +
    1084 }
    +
    1085 
    +
    1086 void UnitTest::bench_deleteLayer(){
    +
    1087  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1088  QBENCHMARK{
    +
    1089  area->deleteLayer(0);
    +
    1090  }
    +
    1091 }
    +
    1092 
    +
    1093 void UnitTest::bench_setActive(){
    +
    1094  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1095  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1096 
    +
    1097  QBENCHMARK{
    +
    1098  area->setLayerActive(0);
    +
    1099  }
    +
    1100 
    +
    1101  area->deleteLayer(1);
    +
    1102  area->deleteLayer(0);
    +
    1103 }
    +
    1104 
    +
    1105 void UnitTest::bench_setAlpha(){
    +
    1106  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1107 
    +
    1108  QBENCHMARK{
    +
    1109  area->setLayerAlpha(0,0);
    +
    1110  }
    +
    1111 
    +
    1112  area->deleteLayer(0);
    +
    1113 }
    +
    1114 
    +
    1115 void UnitTest::bench_floodFill(){
    +
    1116  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1117 
    +
    1118  QBENCHMARK{
    +
    1119  area->layerBundle[0].image->drawPlain(QColor(255, 255, 255, 255));
    +
    1120  }
    +
    1121 
    +
    1122  area->deleteLayer(0);
    +
    1123 }
    +
    1124 
    +
    1125 void UnitTest::bench_moveActive(){
    +
    1126  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1127  area->addLayer(200,200,0,0,255,ImageType::RASTERIMAGE);
    +
    1128 
    +
    1129  area->setLayerActive(0);
    +
    1130  QBENCHMARK{
    +
    1131  area->moveActiveLayer(1);
    +
    1132  }
    +
    1133 
    +
    1134  area->deleteLayer(1);
    +
    1135  area->deleteLayer(0);
    +
    1136 }
    +
    1137 
    +
    1138 void UnitTest::bench_setPolygon(){
    +
    1139  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1140 
    +
    1141  std::vector<QPoint> polygon{
    +
    1142  QPoint(10,00),
    +
    1143  QPoint(00,10),
    +
    1144  QPoint(10,10),
    +
    1145  QPoint(00,10)
    +
    1146  };
    +
    1147 
    +
    1148  QBENCHMARK{
    +
    1149  area->layerBundle[0].image->setPolygon(polygon);
    +
    1150  }
    +
    1151 
    +
    1152  area->deleteLayer(0);
    +
    1153 }
    +
    1154 
    +
    1155 void UnitTest::bench_setLayerUp(){
    +
    1156  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1157  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1158 
    +
    1159  area->setLayerActive(0);
    +
    1160  QBENCHMARK{
    +
    1161  area->selectLayerUp();
    +
    1162  }
    +
    1163 
    +
    1164  area->deleteLayer(1);
    +
    1165  area->deleteLayer(0);
    +
    1166 }
    +
    1167 
    +
    1168 void UnitTest::bench_setLayerDown(){
    +
    1169  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1170  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1171 
    +
    1172  QBENCHMARK{
    +
    1173  area->selectLayerDown();
    +
    1174  }
    +
    1175 
    +
    1176  area->deleteLayer(1);
    +
    1177  area->deleteLayer(0);
    +
    1178 }
    +
    1179 
    +
    1180 void UnitTest::bench_createTools(){
    +
    1181  QBENCHMARK{
    +
    1182  area->createPenTool();
    +
    1183  }
    +
    1184 
    +
    1185  QBENCHMARK{
    +
    1186  area->createLineTool();
    +
    1187  }
    +
    1188 
    +
    1189  QBENCHMARK{
    +
    1190  area->createPlainTool();
    +
    1191  }
    +
    1192 
    +
    1193  QBENCHMARK{
    +
    1194  area->createCircleTool();
    +
    1195  }
    +
    1196 
    +
    1197  QBENCHMARK{
    +
    1198  area->createPolygonTool();
    +
    1199  }
    +
    1200 
    +
    1201  QBENCHMARK{
    +
    1202  area->createFloodFillTool();
    +
    1203  }
    +
    1204 
    +
    1205  QBENCHMARK{
    +
    1206  area->createRectangleTool();
    +
    1207  }
    +
    1208 }
    +
    1209 
    +
    1210 void UnitTest::bench_RasterImage_drawPixel(){
    +
    1211  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1212 
    +
    1213  QPoint point(0,0);
    +
    1214 
    +
    1215  QBENCHMARK{
    +
    1216  area->layerBundle[0].image->drawPixel(point, QColor(0,0,0,255));
    +
    1217  }
    +
    1218 
    +
    1219  area->deleteLayer(0);
    +
    1220 }
    +
    1221 
    +
    1222 void UnitTest::bench_RasterImage_drawLine(){
    +
    1223  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1224 
    +
    1225  QPoint point1(000,000);
    +
    1226  QPoint point2(200,200);
    +
    1227 
    +
    1228  QBENCHMARK{
    +
    1229  area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255), 1);
    +
    1230  }
    +
    1231 
    +
    1232  area->deleteLayer(0);
    +
    1233 }
    +
    1234 
    +
    1235 void UnitTest::bench_RasterImage_drawPoint(){
    +
    1236  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1237 
    +
    1238  QPoint point(000,000);
    +
    1239 
    +
    1240  QBENCHMARK{
    +
    1241  area->layerBundle[0].image->drawPoint(point, QColor(0,0,0,255), 1);
    +
    1242  }
    +
    1243 
    +
    1244  area->deleteLayer(0);
    +
    1245 }
    +
    1246 
    +
    1247 void UnitTest::bench_RasterImage_getDisplayable(){
    +
    1248  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1249 
    +
    1250  QBENCHMARK{
    +
    1251  area->layerBundle[0].image->getDisplayable(QSize(200,200),255);
    +
    1252  }
    +
    1253 
    +
    1254  area->deleteLayer(0);
    +
    1255 }
    +
    1256 
    +
    1257 void UnitTest::bench_RasterImage_getPixelColor(){
    +
    1258  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1259 
    +
    1260  QPoint point(000,000);
    +
    1261 
    +
    1262  QBENCHMARK{
    +
    1263  area->layerBundle[0].image->getPixelColor(point);
    +
    1264  }
    +
    1265 
    +
    1266  area->deleteLayer(0);
    +
    1267 }
    +
    1268 
    +
    1269 void UnitTest::bench_RasterImage_getImageData(){
    +
    1270  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1271 
    +
    1272  QBENCHMARK{
    +
    1273  area->layerBundle[0].image->getImageData();
    +
    1274  }
    +
    1275 
    +
    1276  area->deleteLayer(0);
    +
    1277 }
    +
    1278 
    +
    1279 void UnitTest::bench_RasterImage_setImageData(){
    +
    1280  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1281 
    +
    1282  QImage img = area->layerBundle[0].image->getImageData();
    +
    1283  QBENCHMARK{
    +
    1284  area->layerBundle[0].image->setImageData(img);
    +
    1285  }
    +
    1286 
    +
    1287  area->deleteLayer(0);
    +
    1288 }
    +
    1289 
    +
    1290 void UnitTest::bench_ShapedImage_drawPixel(){
    +
    1291  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1292 
    +
    1293  QPoint point(0,0);
    +
    1294 
    +
    1295  QBENCHMARK{
    +
    1296  area->layerBundle[0].image->drawPixel(point, QColor(0,0,0,255));
    +
    1297  }
    +
    1298 
    +
    1299  area->deleteLayer(0);
    +
    1300 }
    +
    1301 
    +
    1302 void UnitTest::bench_ShapedImage_drawLine(){
    +
    1303  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1304 
    +
    1305  QPoint point1(000,000);
    +
    1306  QPoint point2(200,200);
    +
    1307 
    +
    1308  QBENCHMARK{
    +
    1309  area->layerBundle[0].image->drawLine(point1, point2, QColor(0,0,0,255), 1);
    +
    1310  }
    +
    1311 
    +
    1312  area->deleteLayer(0);
    +
    1313 }
    +
    1314 
    +
    1315 void UnitTest::bench_ShapedImage_drawPoint(){
    +
    1316  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1317 
    +
    1318  QPoint point(000,000);
    +
    1319 
    +
    1320  QBENCHMARK{
    +
    1321  area->layerBundle[0].image->drawPoint(point, QColor(0,0,0,255), 1);
    +
    1322  }
    +
    1323 
    +
    1324  area->deleteLayer(0);
    +
    1325 }
    +
    1326 
    +
    1327 void UnitTest::bench_ShapedImage_getDisplayable(){
    +
    1328  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1329 
    +
    1330  QBENCHMARK{
    +
    1331  area->layerBundle[0].image->getDisplayable(QSize(200,200),255);
    +
    1332  }
    +
    1333 
    +
    1334  area->deleteLayer(0);
    +
    1335 }
    +
    1336 
    +
    1337 void UnitTest::bench_ShapedImage_getPixelColor(){
    +
    1338  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1339 
    +
    1340  QPoint point(000,000);
    +
    1341 
    +
    1342  QBENCHMARK{
    +
    1343  area->layerBundle[0].image->getPixelColor(point);
    +
    1344  }
    +
    1345 
    +
    1346  area->deleteLayer(0);
    +
    1347 }
    +
    1348 
    +
    1349 void UnitTest::bench_ShapedImage_getImageData(){
    +
    1350  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1351 
    +
    1352  QBENCHMARK{
    +
    1353  area->layerBundle[0].image->getImageData();
    +
    1354  }
    +
    1355 
    +
    1356  area->deleteLayer(0);
    +
    1357 }
    +
    1358 
    +
    1359 void UnitTest::bench_ShapedImage_setImageData(){
    +
    1360  area->addLayer(200,200,10,20,255,ImageType::SHAPEDIMAGE);
    +
    1361 
    +
    1362  QImage img = area->layerBundle[0].image->getImageData();
    +
    1363  QBENCHMARK{
    +
    1364  area->layerBundle[0].image->setImageData(img);
    +
    1365  }
    +
    1366 
    +
    1367  area->deleteLayer(0);
    +
    1368 }
    +
    1369 
    +
    1370 void UnitTest::bench_Circle_fullDraw(){
    +
    1371  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1372  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1373  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1374  area->createCircleTool();
    +
    1375  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1376 
    +
    1377  QPoint point1(100,100);
    +
    1378  QPoint point2(150,100);
    +
    1379  QBENCHMARK{
    +
    1380  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1381  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1382  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1383  }
    +
    1384 
    +
    1385  area->deleteLayer(0);
    +
    1386 }
    +
    1387 
    +
    1388 void UnitTest::bench_Circle_interruptedDraw(){
    +
    1389  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1390  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1391  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1392  area->createCircleTool();
    +
    1393  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1394 
    +
    1395  QPoint point1(100,100);
    +
    1396  QPoint point2(150,100);
    +
    1397  QBENCHMARK{
    +
    1398  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1399  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1400  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1401  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1402  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1403  }
    +
    1404 
    +
    1405  area->deleteLayer(0);
    +
    1406 }
    +
    1407 
    +
    1408 
    +
    1409 void UnitTest::bench_FloodFill_fullDraw(){
    +
    1410  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1411  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1412  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1413  area->createFloodFillTool();
    +
    1414  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1415 
    +
    1416  QPoint point1(100,100);
    +
    1417  QPoint point2(150,100);
    +
    1418  QBENCHMARK{
    +
    1419  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1420  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1421  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1422  }
    +
    1423 
    +
    1424  area->deleteLayer(0);
    +
    1425 }
    +
    1426 
    +
    1427 void UnitTest::bench_FloodFill_interruptedDraw(){
    +
    1428  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1429  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1430  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1431  area->createFloodFillTool();
    +
    1432  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1433 
    +
    1434  QPoint point1(100,100);
    +
    1435  QPoint point2(150,100);
    +
    1436  QBENCHMARK{
    +
    1437  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1438  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1439  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1440  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1441  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1442  }
    +
    1443 
    +
    1444  area->deleteLayer(0);
    +
    1445 }
    +
    1446 
    +
    1447 
    +
    1448 void UnitTest::bench_Line_fullDraw(){
    +
    1449  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1450  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1451  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1452  area->createLineTool();
    +
    1453  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1454 
    +
    1455  QPoint point1(100,100);
    +
    1456  QPoint point2(150,100);
    +
    1457  QBENCHMARK{
    +
    1458  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1459  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1460  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1461  }
    +
    1462 
    +
    1463  area->deleteLayer(0);
    +
    1464 }
    +
    1465 
    +
    1466 void UnitTest::bench_Line_interruptedDraw(){
    +
    1467  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1468  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1469  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1470  area->createLineTool();
    +
    1471  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1472 
    +
    1473  QPoint point1(100,100);
    +
    1474  QPoint point2(150,100);
    +
    1475 
    +
    1476  QBENCHMARK{
    +
    1477  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1478  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1479  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1480  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1481  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1482  }
    +
    1483 
    +
    1484  area->deleteLayer(0);
    +
    1485 }
    +
    1486 
    +
    1487 void UnitTest::bench_Pen_fullDraw(){
    +
    1488  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1489  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1490  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1491  area->createPenTool();
    +
    1492  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1493 
    +
    1494  QPoint point1(100,100);
    +
    1495  QPoint point2(150,100);
    +
    1496  QBENCHMARK{
    +
    1497  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1498  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1499  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1500  }
    +
    1501 
    +
    1502  area->deleteLayer(0);
    +
    1503 }
    +
    1504 
    +
    1505 void UnitTest::bench_Pen_interruptedDraw(){
    +
    1506  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1507  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1508  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1509  area->createPenTool();
    +
    1510  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1511 
    +
    1512  QPoint point1(100,100);
    +
    1513  QPoint point2(150,100);
    +
    1514  QBENCHMARK{
    +
    1515  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1516  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1517  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1518  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1519  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1520  }
    +
    1521 
    +
    1522  area->deleteLayer(0);
    +
    1523 }
    +
    1524 
    +
    1525 void UnitTest::bench_Plain_fullDraw(){
    +
    1526  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1527  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1528  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1529  area->createPlainTool();
    +
    1530  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1531 
    +
    1532  QPoint point1(100,100);
    +
    1533  QPoint point2(150,100);
    +
    1534  QBENCHMARK{
    +
    1535  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1536  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1537  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1538  }
    +
    1539 
    +
    1540  area->deleteLayer(0);
    +
    1541 }
    +
    1542 
    +
    1543 void UnitTest::bench_Plain_interruptedDraw(){
    +
    1544  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1545  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1546  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1547  area->createPlainTool();
    +
    1548  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1549 
    +
    1550  QPoint point1(100,100);
    +
    1551  QPoint point2(150,100);
    +
    1552  QBENCHMARK{
    +
    1553  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1554  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1555  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1556  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1557  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1558  }
    +
    1559 
    +
    1560  area->deleteLayer(0);
    +
    1561 }
    +
    1562 
    +
    1563 void UnitTest::bench_Polygon_fullDraw(){
    +
    1564  area->addLayer(21,21,10,20,255,ImageType::RASTERIMAGE);
    +
    1565  std::vector<QPoint> points{
    +
    1566  QPoint(10,00),
    +
    1567  QPoint(00,10),
    +
    1568  QPoint(10,20),
    +
    1569  QPoint(20,10)
    +
    1570  };
    +
    1571 
    +
    1572  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1573  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1574  area->createPolygonTool();
    +
    1575  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1576 
    +
    1577  QBENCHMARK{
    +
    1578  area->Tool->onMouseLeftPressed(points[0].x(), points[0].y());
    +
    1579  area->Tool->onMouseLeftReleased(points[0].x(), points[0].y());
    +
    1580  area->Tool->onMouseMoved(points[1].x(), points[1].y());
    +
    1581 
    +
    1582  area->Tool->onMouseLeftPressed(points[1].x(), points[1].y());
    +
    1583  area->Tool->onMouseLeftReleased(points[1].x(), points[1].y());
    +
    1584  area->Tool->onMouseMoved(points[2].x(), points[2].y());
    +
    1585 
    +
    1586  area->Tool->onMouseLeftPressed(points[2].x(), points[2].y());
    +
    1587  area->Tool->onMouseLeftReleased(points[2].x(), points[2].y());
    +
    1588  area->Tool->onMouseMoved(points[3].x(), points[3].y());
    +
    1589 
    +
    1590  area->Tool->onMouseLeftPressed(points[3].x(), points[3].y());
    +
    1591  area->Tool->onMouseLeftReleased(points[3].x(), points[3].y());
    +
    1592  area->Tool->onMouseMoved(points[0].x(), points[0].y());
    +
    1593 
    +
    1594  area->Tool->onMouseLeftPressed(points[0].x(), points[0].y());
    +
    1595  area->Tool->onMouseLeftReleased(points[0].x(), points[0].y());
    +
    1596  }
    +
    1597 
    +
    1598  area->deleteLayer(0);
    +
    1599 }
    +
    1600 
    +
    1601 
    +
    1602 void UnitTest::bench_Polygon_interruptedDraw(){
    +
    1603  area->addLayer(201,201,10,20,255,ImageType::RASTERIMAGE);
    +
    1604  std::vector<QPoint> points{
    +
    1605  QPoint(100,000)
    +
    1606  };
    +
    1607 
    +
    1608 
    +
    1609  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1610  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1611  area->createPolygonTool();
    +
    1612  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1613 
    +
    1614  QBENCHMARK{
    +
    1615  area->Tool->onMouseLeftPressed(points[0].x(), points[0].y());
    +
    1616  area->Tool->onMouseLeftReleased(points[0].x(), points[0].y());
    +
    1617 
    +
    1618  area->Tool->onMouseRightPressed(points[0].x(), points[0].y());
    +
    1619  area->Tool->onMouseRightReleased(points[0].x(), points[0].y());
    +
    1620  }
    +
    1621 
    +
    1622  area->deleteLayer(0);
    +
    1623 }
    +
    1624 
    +
    1625 
    +
    1626 void UnitTest::bench_Rectangle_fullDraw(){
    +
    1627  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1628  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1629  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1630  area->createRectangleTool();
    +
    1631  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1632 
    +
    1633  QPoint point1(100,100);
    +
    1634  QPoint point2(150,150);
    +
    1635 
    +
    1636  QBENCHMARK{
    +
    1637  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1638  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1639  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1640  }
    +
    1641 
    +
    1642  area->deleteLayer(0);
    +
    1643 }
    +
    1644 
    +
    1645 void UnitTest::bench_Rectangle_interruptedDraw(){
    +
    1646  area->addLayer(200,200,10,20,255,ImageType::RASTERIMAGE);
    +
    1647  area->colorPicker.setFirstColor(QColor(255,255,255,255));
    +
    1648  area->colorPicker.setSecondColor(QColor(0,0,0,255));
    +
    1649  area->createRectangleTool();
    +
    1650  area->layerBundle[0].image->drawPlain(QColor(255, 0, 0, 255));
    +
    1651 
    +
    1652  QPoint point1(100,100);
    +
    1653  QPoint point2(150,150);
    +
    1654  QBENCHMARK{
    +
    1655  area->Tool->onMouseLeftPressed(point1.x(), point1.y());
    +
    1656  area->Tool->onMouseMoved(point2.x(), point2.y());
    +
    1657  area->Tool->onMouseRightPressed(point2.x(), point2.y());
    +
    1658  area->Tool->onMouseRightReleased(point2.x(),point2.y());
    +
    1659  area->Tool->onMouseLeftReleased(point2.x(), point2.y());
    +
    1660  }
    +
    1661 
    +
    1662  area->deleteLayer(0);
    +
    1663 }
    +
    1664 
    +
    1665 
    +
    1666 void UnitTest::bench_Triangulation_Coverage(){
    +
    1667  std::vector<QPoint> points{
    +
    1668  QPoint(10,00),
    +
    1669  QPoint(00,10),
    +
    1670  QPoint(10,20),
    +
    1671  QPoint(20,10)
    +
    1672  };
    +
    1673  std::vector<QPoint> test{
    +
    1674  QPoint(00,00),
    +
    1675  QPoint(00,20),
    +
    1676  QPoint(20,00),
    +
    1677  QPoint(20,20),
    +
    1678  QPoint(10,10)
    +
    1679  };
    +
    1680 
    +
    1681  QBENCHMARK{
    +
    1682  std::vector<Triangle> tria = IntelliTriangulation::calculateTriangles(points);
    +
    1683  QPoint point;
    +
    1684  for(int i = 0; i<200; i++) {
    +
    1685  point.setX(i);
    +
    1686  for(int j = 0; j<200; j++) {
    +
    1687  point.setY(j);
    +
    1688  IntelliTriangulation::isInPolygon(tria, point);
    +
    1689  }
    +
    1690  }
    +
    1691  }
    +
    1692 }
    +
    1693 
    +
    1694 
    +
    1695 QTEST_MAIN(UnitTest)
    +
    1696 
    +
    1697 #include "tst_unittest.moc"
    +
    +
    +
    void createCircleTool()
    createCircleTool creates a Circle Tool.
    +
    virtual void onMouseRightPressed(int x, int y)
    A function managing the right click Pressed of a Mouse. Constructing the Canvas to draw on....
    Definition: IntelliTool.cpp:19
    +
    QColor getFirstColor() const
    A function to read the primary selected color.
    + +
    virtual void onMouseLeftReleased(int x, int y)
    A function managing the left click Released of a Mouse. Call this in child classes!
    Definition: IntelliTool.cpp:37
    +
    void createRectangleTool()
    createRectangleTool creates a Rectangle Tool.
    + + +
    virtual void onMouseLeftPressed(int x, int y)
    A function managing the left click Pressed of a Mouse. Resetting the current draw....
    Definition: IntelliTool.cpp:30
    + + + +
    void setLayerAlpha(int idx, int alpha)
    The setAlphaOfLayer method sets the alpha value of a specific layer.
    + +
    void setLayerActive(int idx)
    The setLayerToActive method marks a specific layer as active.
    +
    std::vector< Triangle > calculateTriangles(std::vector< QPoint > polyPoints)
    A function to split a polygon in its spanning traingles by using Meisters Theorem of graph theory by ...
    +
    void deleteLayer(int idx, bool isTool=false)
    The deleteLayer method removes a layer at a given idx.
    + +
    The IntelliPhotoGui base class handles the graphical user interface and events for the intelliPhoto p...
    +
    void setSecondColor(QColor Color)
    A function to set the secondary color.
    +
    The IntelliToolPlainTool class represents a tool to fill the whole canvas with one color.
    +
    The IntelliShapedImage manages a Shapedimage.
    + + +
    void createPlainTool()
    createPlainTool creates a Plain Tool.
    +
    The PaintingArea class manages the methods and stores information about the current painting area,...
    Definition: PaintingArea.h:57
    +
    void createPenTool()
    createPenTool creates a Pen Tool.
    + + +
    QColor getSecondColor() const
    A function to read the secondary selected color.
    +
    The IntelliToolRectangle class represents a tool to draw a rectangle.
    +
    void createLineTool()
    createLineTool creates a Line Tool.
    + +
    The IntelliToolPen class represents a tool to draw a line.
    +
    virtual void onMouseRightReleased(int x, int y)
    A function managing the right click Released of a Mouse. Merging the Canvas to Active....
    Definition: IntelliTool.cpp:26
    + + + +
    void setFirstColor(QColor Color)
    A function to set the primary color.
    + +
    void createPolygonTool()
    createPolygonTool creates a Polygon Tool.
    +
    void moveActiveLayer(int idx)
    The moveActiveLayer moves the active layer to a specific position in the layer stack.
    +
    IntelliColorPicker colorPicker
    colorPicker a class to manage Tool color.
    Definition: PaintingArea.h:286
    + +
    void createFloodFillTool()
    createFloodFillTool creates a Floodfill Tool.
    + +
    The IntelliToolFloodFill class represents a tool to flood FIll a certian area.
    + +
    The IntelliToolCircle class represents a tool to draw a circle.
    +
    virtual void onMouseMoved(int x, int y)
    A function managing the mouse moved event. Call this in child classes!
    Definition: IntelliTool.cpp:48
    +
    int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, int alpha=255, ImageType type=ImageType::RASTERIMAGE)
    The addLayer adds a layer to the current project/ painting area.
    +
    The IntelliToolPolygon managed the Drawing of Polygonforms.
    +
    std::vector< QPoint > polygonData
    The Vertices of The Polygon. Needs to be a planar Polygon.
    +
    bool isInPolygon(const std::vector< Triangle > &triangles, QPoint &point)
    A function to check if a point lies in a polygon by checking its spanning triangles.
    + + +
    The IntelliToolFloodFill class represents a tool to draw a line.
    + + + + diff --git a/docs/referenzsystem.docx b/docs-src/referenzsystem.docx similarity index 100% rename from docs/referenzsystem.docx rename to docs-src/referenzsystem.docx diff --git a/docs/Benutzerhandbuch.pdf b/docs/Benutzerhandbuch.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7f159c747a486ac7701e3292cf7f4d7bfba0886a GIT binary patch literal 273025 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

    T~ZS|zYOvu8$Ohx@z75WMvM#$n34<^X|yQe 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≈{o_lh1zjV74Gj0a?QY$gs|vU)L_y*8D4-dI($-$zq{ zGcDtxk0AM@(?CionVj@(Ph>=6-$5s{2+qVcz~3+EHuNqY>ha8iBTQOOW$UKq_<*QA zptaN~d6Qh&jm+rz@|8ekn=9c+s|08sQ@pPQbzRU(%l;h~T&8NG%c?YzxdIeas<4(sg?{5VA9r|4p zGzf1DeIN+siBbM{FWH^Ghxb$#elb$L!qifSt@k&bW} zN`E}-U@p8C;q2oeT7pF1hZ{Tu2fbbiJ-CSEw=RXZ}1Mx}>ldh@DTMy{Jq+|CysZsfvoNN4BLj zv=e>iD1>Z3S>WO@86E-5u2sP2`su_dTgYuzUm&1n{ZSrC##XKD$2pn;#cukM4!-+% z!f4>!bKf1zlR@=ILM^=@3)-P4{D;Qj-YlhlB}b=YjsKj9YN%l$D1r96*4gUE`nq{i3DK$C;FeGGd{sF4ms98F`J67xWny`Ig8cmiWV9L-ZzMzf zHwBqd!nW_#kMDFoA>Y8~&&wg|@Ag=-uO+X^fa4Jkf8Q{W=1V&&28N5Mt>Y0h6yG3% zQtZpXy_VsW;{N+A&BR3GK#1twrJljD9`oMV=R<7Z^(7Vt@TG6{_QeAUymAVx5vDmT zDUj2XC-jV~&HQCtQ5MX>kzemF-B$>^z#fQ0=3he}c2i;s62TD3AtMr@HYWTRSRvKa z+&5=w5Z_pPcROGM{?ROX#Vm*zCN)~DF^=m^v@>d9e7%D_C*%#P2srprCE6?gRDr81 z>m8&UqH$@2VU+*@YOTsJ?zFEz6;b{AFwdaD(LDjKP?;Te4saX{6Sjbh2ZTI=r`rdI zO-{<*F;d&00+YZ+L-y`3S)978<5bu2GA?n{BS#RCs>-R}R4aD|3JsAoQne@wJHAfj zY_foRNYE;+PiA7uL@v4BS|`h13E(BC!oNh=@>QJ=%=p0-cVUsh+Dx~G`oWo~zTRUi zyNHl{0{7J8IBEb)F(kh3cWA!~?HD|gRn_KI89^Y_Q6*?eaM~}1`3(Ys;!Ni)wS2id#6m4FwuCgx1Zbs@w|$AQj?KWy zcrd_2E`t6*f;*RXrLhQ>Vbt7%jg{WT%De^Y8Xgb! zrx(xfd1)1s6$EMvb^oTat4a`!g(sx{xa{=gGj0`p&w4wvTqVJy8c9dTo3P^J`E0&w z^B>ztxD~VKn8=$5B-1X1$0fT31X@1S_EgJoUXiDVwQ#xBMR9+|A5Wh(z%EntM{JXW z6*u9P*|XY8QU5%;E2os@!0A8S?lHd~#h1*Uf&uj%nhFV(5|k(kxdOBOiM9!w4mrJa zoa%Al(R81)&XWroJcTD1dECb}P*P zupW@r#~tWeF8(%$UADtoc&N=!4tQYu(;)L|n%OWSQVF5W30nhLD%B39sbFLC6l)E3 zm0oG4G>(=-3NQ*Y+MEX)=PYPgIzQ({jlT`OlA3Je0*K9S6mIe1`s$9WJc40R$X(Wj zC<*Jc87~Z1I(qak<^96~Rg=VkENvN)WB??{SvcGmt5>OVH3R$S6h|HCLJIoKtw{v! zGKX=0UJTexA@bK0I}&b-T1Ni47GH#Ak6VPdb!YQHapEYT2uFtH!^K;=gZ;+-W{~S* z+$;0>{V}1%D`qC++Jw#D>ge8(aQ-6K%ISKB&Cr>uDm?|-giH$J3{R-?Z zrB-EC;+^?@QPF@zFF&NSKa=8!JtY1?TtHtdV+IF@B2;4p!8D@gio+wBQOHT?u)5x4 zT$JP&?|tB`Q3sBZH_tC&JzWDOqTi7$LcdWzs{J`!-z%_7Qly65;>CG)5n0z{e+({^iFz%x z!Na<9TlL({fdAXy?@B|LOod6Jk0V0$bbt^^mvhSAF8LHA-?`X}w$&+Pu{os;sFz|> zTd5|O`OJ-nQ=t8HjZxH>@94y3dV*IE6_rp1Xd8zuTFt@vX2if=VpNP~f$Fdwun%jZ z>NSQV@rv6|;s77o!AP+Vgi$M(76RlsQ|V%G1z0vYHw4-Bj)MHEY*rH;jGc?nF#n^* zffvb&aSJ~istTMHiyo3R$z14whC#l|``7cdw|6A~=4zb>IRiVKqL&Hc{)j26RPb`v z%WN~u|MK(I?$T1dd>EV1XAFIVQT{9GG(Y+`>H@T35edQ{JupF{i3ua=fvY)j`c{`+ ztpCw6YB%Y-L9+yTAfA5Od4C~{T3B8K{cssQGws$}C+UoQqiMD^0_dujOeZ>h6A)&2Qa;%;4#X2W86>`BeJD zwFAsp7cN=B6n2*G^?hhH*bg7BY?FU!W5=kn8A^C6m&UDeB{oUnTY2;u2B+Lq&#SLa zLM)7=05cNzc->f7pN8^x`ll!CPI6D55Q)DwiZ40%*w~CX@K^8eW*;Po57amTj~5N` zewEu$OqW7212;HPBFNRpGO-!RGeRV^vy@0L7H*KCF$6^HlBwTXe$&=c5Kc~WB;YVV z^qH)JB0yCE?qt`%yTdJP0n+ZwXcVqeBA-@YE&SS{WX{MMo)94O9Y*O@tc%qFOX8js zrv{Gah&;NjZ?()InvLLhjD_7d!Y(_|M~?qBHHZ&)wrYP4Cd#TsZx1F zge<;bdATfue+rVhNvB5~p^zbC#Gn#;8%M;ozT_l&voQGZ3WzX(C^rU78VsJ~B>8-o z(kW4OQQo_;IqUAH2CJ(;K$9`_5r{_PwFR}muV@Q}rIbM<*lN3@a~17x1yZ4Y&v~l? zZ>Z$BHBgXMpy6zvG0541q~=%BifnsCsu|N`J^Tgs4=X)3yjp`{#P>o`Q8L%ejVd9V z!Rbh>y%Yt4?czo1-N1SD^!26G=gt?+sBZgE%sjl|r|5Ko;i#N=ryWTfFRD=upBKx=-Hrvyj)eVQv$Dxj@%{=AzniQg{lc8RrBPs{1O4 z_v*xwKhUJHv^giryaz~rE(+Mg1f(wY<2`UBDthpFf;BGW5m`l|dZ<=bOPZt$Jq@L9 z+~^u=LHpqz!l!4a8H9;%5Eo@Fg4P*x;4ive)COU_Qj$j3xdHX5NsdWh27xm@K5-?L z$m%pJ6Oia_+1(^xxjfJrkXGlyEdBGiC9Vm36&5^eGuYMwsX(qV1qtZ+fu*oOXw757OY?` z+I@D5KALlC!EeG^W?-v7%91v$dZbN%nZe@M1ZWZk>DdjD;O8U>y<+s==eCHl&w zaPYtU*%O;mArylB-dr!CDC)9LxxU*Z>gx8>;Gn1;F<{;S<$kV19 zQa9ecSybx*K)!d1#h=#NoA|~*NV%fyGc-7~*MkzCm;i97=D}jkTe_3J`VwMN1XGjB zK=aBK^p{B(0Bdx0O`pTEiylK>DYtXmyGTg!0^BM%1$%TV`3lQ8FT*KTc71I9G*j_@ zG1TB)VrE#3>!anf0o$kBllmH2aU=~4?9Ns7R!r3u1wZX%UfKLzv!$IO+e>Aqh}CF{ z(|_(sl@`-hvpLAW<>S=uSfMlf4|5ih{EBHwRe6Qr@L#Vf_b^i-c)R>};F3W^sRNp3 zSe|~v!_v~aEnda7Gx5`X6EG*0+_rmrvGE60Uh4|a-N8GjebA@{=GXxHCmD*3HgR%q zfL`h<#wZWB9MSG1UhL|dcB#JMLamC7J@#*^Ovi!YBC1n>D*az2pbbetO4fyl;`G0^ zU@M{)PR1HJT|FXdINca)E(@-ia)-#~s(N9rT@Oi8bv2V}l;X+)2-|XZikrF%Vhn`< zwTqoT^8Mc2@l5l%yX+tXF_e(93l9}uLQElQmXic9&2XZt2$b7t@4Aj}e@e9Z2c&l%vD}~Nb+m563A~_iUU_avnkyG8j7U}A7K`T>RfEMFZbE?c`uU^o)p6w03w7u0E2XL9-lGKf_*X*)D?+? zVNAgydh=v(`NBts2fP=WoQDgfr~k8ag3?BY`>vmIQnnN#rX5tGSu`-a4(8Z@5^ zNv8+AM4`ZHDY>dJMSl#{+YK#x3rmIaQsr98f&=I#z4!nK z^54Sed}XFOS7An?+zRXU$p)$I)lXx z0WBU45PmD}lR^oHoH0PB!N!@J&z>PCWVWWB1QTV>C)A=OI_kntyX|o7ZA*l{NbT0@ z2PFp7i&-_Fy~O)4{dM8l3qI1n5nf0h)4End5HEz6I!=6w9IPF%XU#Cn@OvgF-!9_ZlH1O%75UWeb z;t#BIgtjz3AM8ldD_JOG;MiBxMBty@D?%j-`qynNQ>;mlZaLA(nj}2To#lhO+5alM6YAIGonV}^o4&bKymsJIUVMj7 z%uwCs*Io%33u9u%WzG$wxb21rr2FQhsOQcbj{RYA%mzso>eAsAia0j_{_1p+ekgQ; z0lP-R8fjhv)ryuExed~k>8Uw*dNQ%n2j=T$_#kL%zHw8;NZJp@uVf_%@O5!$C!jaZ z>65(~Q%3|mlA22-G(q}|w9K{Y)AJHfQAY-QhE?T_%t5aGh+0TOIx&~>iDUb~g0 z%Ht=SClbvm$g=~!n*6CY%upyRPNtaua|-Md-e_bj?M3A%$B!_CuGXSOfYpCFnblxQJe+4(6e46NgYG*fumALz}X_^^Z@0bwCP%%?BPFf+69XWN_^!5t+-J z`<`l5Pz?zK?aN=MDdqq}h^BK!(!Whx>e);!y-!|@(@FAn#=o+L}DAxH?wtl_-z+W_^JEgk8p0Snbagl5U{+@G2!Od(Q~W{CrKFV zD{LfznY48J)@}M9ViP*lyTY%3L@kpV;e$TDb)8vMF^E?+>_;mp${c)|*D zD&1=~vO9HXym~gf^usN9l{p4EJ7XcioO39E#7LWjiG{Ts_B;`6!f6!JS4{-QHCD6K zuhG=6ij1HN82B)2(Dei2(u<0f^7kBot6~Ng)pw;BUB5{CwmgOr1~60>f^R?_Z=`)s z0m#H<&4xGl+r;t@8tJMNf5Ab=5k}6!T-EO1$pKL>d>ZzF3_Ubf51D=bWp3P`x7&C` zMAge^fMBM!^3{Qo=9%6{uH^s`HXC;#s_P5XPEQJ~H$&~!Zn7!jWwZrl8e;hG0=>-v z`isPx4a=Tcdtv9E29J3VCJ3yzKp<}35DF?}I`UVQnX+)voQbuRf^re~;yYx>p@k;Z zYo__653G=nI)+;&PweC5A*1!Umjj;$Nq94p_`@cQ5;sM;sW2;~6!>W|DLDD*j8K1k zb_3RW;1Sfu_?EW^EK(=!M@Pu}cUY1*wI(n6T_0I#hl>mh!hqAYhGusG3)MAXP^1dn z%npn-4jbNRQtQ;V`mzS@6xRUiICH>k`>DSN&lQ4{A7pMSuN8(wqqN~ z*!U)Zu-|n1Dw7L+&QJ%1hlsmt1N>*%mu)wcgx21Tpx@jE{g)IHvWI^_vGA3AxwwQi zr0jN=+0h@vn;f_@!eqG;T$=ef5Y~)&S0SIn4q?dSDX`4WdJ(1tT`%D}i37VzG*)|W;0jQWyg{a8i9hCkSCr&52Z zA~Yj^u@O+))0kb{b$D8~_?L#-fj{%OE*c+v(0oGMaYy9 z$lmo~!wgT`aKA7jUe~%Gx)+IevHwL{!OhOYgg`)cEBW&Ysq#4a`-#pR-($!NawWo& zB==H7oRbw_!ZkmBLiRMKPh7n|2?mr+*qJFBJDMa61k+6lvdWIaANF;NB{^|*IZBs} zpPF!UClGOkEIuk0H-iek-aonMx<0IH{>EdtyTNeBEs@mfnK+^bvQ51v-lAS);+9|r zK*&jbk^1@QK()-QAt zk^mYmj^F9|4HjeEp~~*^nsS{k{3u>+P3v~Y3bb2I0or9onlV@!E-`>v zRlBeMnozJ~il@k#coMm8huk5UTlWK#=+w|OdIj4x?r)B=Zo3OM1v$DinYHO&h!s*( z8FzlJuK$6LL$4lK75yvhmhQ1uB?(W*??$;YokcBAYB#xR=bUOzkSa)MKgs@I0swvJ z%AY7h)Tk7)DoZDi_)u+Iwgc|O@3o``5?b7dUzR?JkL{#}dyU+7Ywlvv1Rw4wjJt%p zXb#D>o6sb2b3Ztg=-Y=5I}^v)by9pI#?6j_0-XI%=)p*}B5#({^fqT~8KMZGZ9uly zOa#=RBuqIvOa@e%3M@&2SRnyc>UK@m2-|*EHZ-b~zRrZ$Gz7f1VKvEtzegW$ruTC% z--wQZqb{aZ3UML@30=n#-EH?hqZdfHPzIj)z6*cwL{$tx=%ca+vqU&ob2Y8q3ywgX z|15xVm1aGN)rtAd%xvM2Q9Ul|l6(a-pt|}{so~b5>iORMUF#q;u`kW69Hh6gZ=h{~ zuOPYmM~5f8O)#8CKkC^}^lHCt9p1;#q-nZ;CMa~K_=DBfEz8(E>Ns-}ou^>T`ETlFfHO zfEbb(vu-3xSd&Y<1P!K{j?dT1SbQ$8-v-xBOEoZxAGx*OZhF@g1ggG=4?*B4)jz3=%f)x6wqt!x#%%WJ9hV8JY9(si~v8Dz!k9NUVz6+=J-c-DZqe(o87_q_UM-NzVZ*rBBHxr(G1 zk{cic6&!*Ejs`11fpz~^yb5Gs2n}G$_;!be5VKF}r<>5`Mbx@cnCA9G?}O=1aeS#( z6EeWkk|d=rxH=^DzfveI)zVP5EaXW38PRkL0?s!+iQHfbb+G=GOSNS7Pgi_5vB+8k zjt$MIsAi_<8@AWEhd~A{3hrCvW_i^QL1DF426)B)+l^pT(zlcrTM^k@JpL9=`GiPb zkA!HzwnRaA^!UN@`E<~4BMl7vfi{F^=7i^gMEaoCMoLS)lN@zM+c6jo4l?i#kpDsu zkOiUb!gm-{iOgTM(NFYa+@yNcCU*NgVDt#~muL9?BVonm*ob)s(Z;*$+VV}n#J5J_ZjbS1IH zjn+s(Cd1v7uRHPkNmvco^^n)f?x*7M$AeNoo7~cq@(j2ZZt&sW`wu}Ci4u4*kX$HE z8T&UbjCo7-?xnXVH?t5;83Z5_4(t}Rg|=vAx=A%T>a9hSzBiItbrnt(V7v{}rwyy# zH3G{6RHJ)umCEMlj+B;^Vy%ue-*cf{U)lOnGF)9b>&=?;)nkVnDJ0yE#8IlWzl3m} zaw=>ap){On5wtQ67LtzEB$X1kKN4NJpWr&fQpx#OBS}Gan07e@Mi$VQ2~Zam%uY<@ zp$B(?hjomq&vd547yVHNc}!FxLboXBjW+vO@@9@yG5e}~m-%DrdlKgk6rt;3KQkYW zcLa}tc-*}7m0k;x==id#44F_7NDRSv|EA!r)B&p~+TZd~+ARW!&7P4tX^Fc;f4C>A zqgA;8sd#@2kjSU*gHquGH~UoG1WGt$u7lPcgof1=V^^W#HR=92i$kuNQ|(fobXGgD zjNVgl{Xa3rE}Ycjo;|S=O#cH-K(fD?99UmLyQ$K{0T&JZ#7H6@;4r3THzABBV|uxO z+Ak(UBp)rzd5F^hCOK~#Mz74LZE83ib@K7Yb(Qqp?K@j3B&;pwJY)$(&fDj~jLAgB zru9cpW0~9yQ(Q#OB!p_)E-W%fCU_6m75i)!F!r*BZq0WG+tppw+}S3fasNn+h1+Uj zo~_q7kyI*N^!m4$Hl;;qpNAQZ)B0;nf|X8y99#_U`4A6f?!3r?W0)7u^0JYWi%H@` z-J&kM?|uXl*E2YNgrr}}5a|>a&?zh;ZSDp~25{$M>X-)0&?RlIKs07p|8Y66JoZ$< zydPAq83fa8`9Zvks^fOX&o4$l$J89zNe5l3FDP^ne28M@i7aQ=2m60p;Pw>k?=*WD5C^Wj06bj@w&T_gWOX;F|b znhfNb)tmcE_I_%PnHJ!uW`s$6(QP%7sYME&Gm=684_#c(>j_KaY55K;>T_%WHb+x6V|wbtGloO zAH6C2Q=fP&Nf>f$U`uGG>0K1({|?2rU)E&j=SW>pFRB<7B(Cgvn0kzM)GVka9h~GEqc8n4)AtYsRH2-8%JiY)#pbGR&rDBNZ zfneUM0xX;=`={@~1M5C9>z_$p1#2FEc)?YI1TO-C(}yjfq)nu+kL6v^$Ne1|Id`bO)Ah)SdXob8pKjJ*R z%0|-%a0wZsAUwyNaypKpZ6w8kQvQ2`J5r=anMWv=keoX|7t@rVyS08*)wLr3sGb>( zr`3_t176xe_s51F&*)K&bmV34)qp9J&#U&?+@QG+S0j95813TW029K4;_(TWz8x%6 zv#K*bNbt3UyA3~>G2dwm`=~C0@Pho}G89aiPtwyEg;mv%o|Jl-U*P}(T?#mmLZ2rC zbNPg8x@j)CtS=3nUlu+BR-ZWrO*$Q-D8s8Kh<0(lE6z5qi2nKg*T2PEzE!+}#CW`M z4Y<-WquB9j>(hA*5CNg#vpY`${Q@TXVTdw%Xm}gQ33?sQ{>mrC=P!ChZGx}COao-1 z>LE^?np3k3!5hwr+p0o2n*dxD`dn{GLG&sK@MN*h-{~gs&C9(SBp3yQwRl+cbpuhU z1*3rpCt)u1sjyH=gy9vFI2%%4mpq0;7ZztG1ZRF=r5$i~Zmn}Y;Kl}W-QVM0JaUKw zhO&SG<{!u_curni@YTWVNgp~}w`%IStUy@ZFG*;7G+2&n5`mfqj15t6c&zq%`aQI! z_ItTkfMRp*?A`<~P-M<&kZdj3C%OhSn}m883f1(q^RufWGmQwiZPo$^s}ND!mRpTH z=-V((0EFTjx@CcJo(CYgPRW)>ttJLOW~4XCu5bWcqjgjMfy98{msF$QoiaaAb4?j- zHC5Fa(_wawHzDx-vlyxP03BIt7<|;C@UUw&JtbJwiWVJKQrfl*;m|r4x5jq-$$c;q z9RGro5CjO40tqmPxFbrW6_cpP>Ny8pBe4j22b`hnJgshCcmdYbCoVhcVO;^2qbXio z&&BcZB1@I^t-Zniv=W*k(l`1?z1^gV1H5;zDsg3?mu1zHmLE*f&#hcFNDti-yW##v zAUWxedY4EDtcd>d6tsP(5Up*U#L~~#cE%+@jnY7Pj=rf)O#}CroCN1mJ!-kma>rZD z(lP{r%>A#}5h*D89drWpN`MzODykg5umiiT%z-uIyrQxEDg9uz?)L_v zH2xCaO4k6Yv~lV=6vg8J%^HWI3!4(*t61Y2>2t5OyMl;8A@$b%J{1$Zx4$mb2vf_N z%a!T&VI^%en*KKez4yCXk!y}b{o>XHAgo=tO7pcWM=w$o1yb8*eb%kvUZRIwGq9XY z!KM%L@6qPy+WMlHAh4hcnCu}(FXp&0v{7PS-2l8o(9&vSkG)<=yVOdp%LN*`=Xpyx z(9bi!dhLpI1Fyk6J@c+aF(_dsnEfig!B^1IzO>uD@nhA0X81egTac8mB#U)`SLb_B zOmz+ST3q(1fsRw5-obL0hgS62*BiaA{joPyfv-v?*`@WP$n7P_O;VwnxKc_gKm9tS z#Z)!2Rmi`z9&VovfgvGnNm%MDA|&dN<&7qsFuu9eBZt6LBMAZ3$=#j<2O};i&|Y4G zsL#!DMG#mB9nGn2Dwoka5*nKkr)oP4Qmix63#n@<%Yl#0U9vK>2fRzCO|S6U9b~RL z2;9K)dQ9_h*^l3@n+A{%^Y(PKfQFDblYjyw>v{) zL3?LYAmP_7)i4m&YfGbzqP)m{WeN#arxIHya-zp}XI0=90@G)3!w@-`T~5__(gvg5 zFf?B@@C)&6VE5a0j)+DrDO!_`t?t&SHZBnMvZ7HbXl?2@Rs4vss)5W8$H(>|_;zTG z^Pw#p=jEOQ`y9n4k5mJuTp%X;sdozjsR1tdkYN)UHy^-6dzqod&o#MOekCIzd zh<5&Q;ZOERYo;%RTcxPGD~idqxNGSFhxLIV0TjjN2~~)oQCTN+b-8M1xnI*(V4`uP zzd7%+*tL^cmMu&k>y_;%_Ymm^!E71-(TbQTs+mpaf&+T>^_YvACU|gcfHb{sbgzA-l@fn3T~BRJuwO3YCd|pv1ZH$IO&r_|@}jUE8wX z&5xgkcR;_}5~au(RzH^?Sp-yN3yf_15DzH$XO+Cp^q?m{-yecn5^W|5!xyH#lJLMK zjk5D^UMB`AsoF?|s2OX%TZ5G${lHbMH%(4zY5c@qq&dT=CO102+MCS? z1%^ktW`)lzX2K^ZV-rUjhO81HV&4wCMU&`1450(>Y6#zK0@Nm14{oNAC2vYjX3N{V`% ztQb7#F7&u(l)*k|Uh9n_?61iy3eu;tw$0ddPe&*n1kM;*7c&Otmu>{!0Xn37iXNRC zfmQuX{z8v2cd2ZD35Dq&4aCi_!Q!DeD6z!I9a($#knQ%bjnux!p6rieXaFWIV%jat z?+#(wR%7Spe_77B4&nm0?~SE=LM1GIjI6X-B`Wv&%_hQPdVP2y_~=bLaQdXnZGb^* z(Ha`^f+NDFrRtoyBqcq+4;T%s1lXkZ9`1daDaNER1C}CXORJ*&Bz$E28CLFzMrIzY z?JtKodp``-srZ*NB+D6Wsg5f6~zCV&H4v*BO=9La9hL{$@E|&n>gWBwpMRM+DgEs)Y$7JR%b0( zfBa#5_-V!0eNb&;oyW4SL+5KnyA^-(MeU~2#n zE^5ttDc>~)T^gIE9b_0gy#lLn>vMgp`bT1bXMVSfGE1QJ*>&Ak2Ph1N4iR^XK}bkn zp9k1T8-JL;G!F-fFmjn%Fz={R53j^<=-sKF4&n`SB1+rKLgU z>H5?#b@aO6;Vd1B#h+v-B1WWTfcC94)wn;HS%v9KO{oF zqR^WtZEL}|Yg2TZF%lKRW*||X+SkJq8^2F)#VZ{}>^r*hAz)ALifY4g*!VA{H)b7- zI%{LJGH2IHz*~c#VaE%ndRwj8ycr}K=GX@D&1Wz>uJ_O1z1tj>b&F+YSU zQ*nR9g-&~?aUd3j5`tC$tsKzs0ba6+=T-n;y)5x-X|tr z&+M`pcNAq#JN}yemb^4Cx%2OY@DAU_u^a%bSAO+qSp1&=m@#M0jeOR;MraAS^&Kvx zXGbtd%ijc7q4Xm#I#HP*4bRS|9X!V3sE|orPqiIVxZ3daMeEGG&=+xyt8(btiQCFJ zi*W^*BLw(ATWF^pXGd9F%?3)O-_VayGhUEz-KMWapvf||=v!%(`uEZ4bv(1~QbEUB zK1DeMs%##wah){Pr&J-<`&cM}+FKTNcG{L2Oe9gNW2{P5Gh6WCq-Ac9$9=^KX1St* zfEM>c+9&9OPvPXSD71IZfDlIKkqRFhCmSk??+(F!zv%X(1Rl=VL{vcN{pF#x;>+-dRd9lt}GadueWU8@^7jAPdE z+|qlm#nEg*C#}r^X*6*!Xm*&&s;S+e&aD<(2s1<9PK;c>Tt2r7@Q&M zOQYnRtdsBdI+OS9<8#pEOr}@Z4>f4E7jOD2Og?eMlW)ufZ4WmJSKQPColEL@puLO| zOe~K|8e9!qt8P}2Iv!~b*GI8nh+cCGQQHxka>t-;X@@XLm=#P?Xl=j&=|yC*Kf@j- zD|azM`c?W*At-;YqWdDP+%HK%buHnJ`ee^mkJsbqK%pt)SCyUS^O%{iJ^*cQS;k|Id<6W$I@l;R{hlm|B@9g5h zzDP640icH+|lK+^a>Ga2;_9szt}P+X{lj1m%K7-JEK`C<~CO|$!&e9e{R@KA0ro1 zVnH>6<=f0?YSd=Fzb*c4o62D_5&ngfj)~<7tX3}fh-eQX>Di1HaLf73A z;05G@Kc1-Ls3}c>YPzBZT@tuK)g5L3*4|Q(TWK7%a{0=E(xghJ!eH;(G80+x#gnN& zl(s}zP>yTtl>LWtkfxPzoG{1T^j+*HVF}Jk%*w)36tP3IM%qS25|JVfK=Bah6H(F_ zNr`|iqL>kY)@v$Gxg#2!nSD-k)U&g0%JmZNpwrZVxoAG4Q^A^Z=W_9<P8mUaVjsGQ<5heOr-4%SAuOT7Tgvp-O(KOW|CWtHn9UF*czNdB1}MU=TTc zB+PO7)-tK!YEyFYhmeGzum^S#5OMj0K7K%3U03r~=RHBO7r;daVQ%i(9WZ*NWV6h= zCz03isj1X~;)HG4`vqAvssv$8q>CMnK-eVRi*}_Qi+Os|52*=SB@MkliT;cSTLJ@_ z6ss}ypg#=a8B@v6b36^!fD1V+Z48O&udwQOb`?Ol&SHzDAQy~{i=gBZP`|OR?QR@< za1{mEk66Mg5<@Jp_FACgNtg?n=3ZSDwI*St>NA;}pp0Nf9YK$y#USz0hYmN zeki(($RMA}6~BKj$Cqx}XG~W^PtN20ypFPCin-MEAR6J# zghHb@wOAvyE-zvM%rtb+Nq3XYa;v-)27B8aQM=N_!Mp4G=r99D|DNiKF^D-om+6YC z?fS49hcf@Cu@%?L45Y@6_$>je?DopV9lJPz0_Jqda^s`j=3+T%UJ6qEF~1$Nss+hX za~@rYNU;R81G)|3GQg0(6ih&LdW^p1Gy-^PJ2{y*H@*&MDN7pr4^aoXQN*jZn2;RG zMqUHz`oVCKLQ6||DV!UB!^iW-FQh9c%&~}-@Px~Y*Hgh<8*ozx5a9B@I+Q3t=RBJ+)TxHaECv z?0EdcsEFE6z}@oMf+5GbY~J?kA3Ns6nw=n4c;Xv!0W)zYi2m4M)TNJ#34dhrFF~(i z^VQ0j1licWk-!B!p{y!Bt#2}ExM(nK?tB2+x#EQ$g@xL`S?q9oDSFz zI}H+&gH4RcE79gySi@<=ON3`8_eAq9gC7`1^%N;&46CTQ6}W;0S7<~nbaFx zN4^sVP5W?3}R={Pvopdt<3|N zCKXmb-g97HGqJGZ{>(y`ICC=nfT9#Sz4}UXa4aF(c_2zwQ)VG57K)?VtuQx8%YR~~ zX(n3sF9GDNU>ldj8hInc{vO1bMAZgmnts=NQTn;mQlUbI6N@0RZdU=2Ybk4`JtL-9DeTqQ=UHX z$H-PlbbU4Z zh2Bf9m^unCe^JiXR*N`AaJZnOwwTOWn3x-=!ag~QuH|WU0sc`}WI_;nuI<5uTXh*? z8k@zlv??=}L_Jp_NibAS4N`;0$HsEq!#iCx7d}3nbpjrWYqjW#gMe&qM-KQIrasOcZVwN^k@JJvqQYpB$5}TjtXjU5}XXeT+2!>RCA~ahdOt_Gx{ZU-#B|5-Lc<| zu9F`^j2_=3Iecb4ry~8#(UUnQh&*|| z0K%fR_4OzW-+D9T`9AT0Oz);&R{+OVdhAY=@mQ6kp(t3uHg0uNQTJC_|yXA4N z@e{{R8b+kGb@F{i#AiRzWUv?PYLDLCHp9-Gn;if=riy#YUk1pQ&n-^A5o)-V_y^)P zh?6CUvjX#A)RtdaS${0)e>B$+GrWh-RtIY z0~*XpRk2qS<`7Dxl1Dse#MEkX!IEC5w%GAx(fk8-g}v$1U&vj4l&>MLSm!eTWtd!2 zG{jv~!9?rd9{RpayrcWj(lP=RE>giuGDXIS@6^%BS%84%$Mh$^u}Te41Xx?4Vd8q| zuK>AplbC7d+I#aa*uClKcc=n4F>)tj#dviwjv7$a!VG++q29fA8XDG^o%;NY2v7R_ zOG{M4?|VJA*eMFER`jq^Z|E$4oz12wH=lf`caX;Crttaue9c(owV=VQ=|%aFSWzO% zHTdd5A7-vat2}`nA71noPJ!CzTi_p-`|PY9<>)2^PzasO5Y%sy8@_iuyf$Ib0;?HV zUIB%@iApvkRbgL*hp{qXp7F${&>;Yi8-YJV`U9AMe9Z&X5V2JvgCw3C-o`j0DT zr2kG~5zgZ2ukmI}FyvMn5a03&p@#`1qN++TKnLvF#%W7jTpq?0gap!+m`2W(Z2`ZE z@BEz7V~uh8?DXA37*qqT&@`HYeiwO63bDJ}cE*FA;tn8*{eEBWhR`_;c zXHj5_1c<@-v#@O=)(;OBl``xd>s-EXNr469K$S(P)hrE5)Hi*d;evZOkLmbjZFTVr zKVtxiw1$*ncvRQXd6!q{tSSMYkJq6{?_}Jg)P-5UqD@|#Wt2upkymM z_W$zYrIXuwr(uMLvD4Wj5hD__)rFtF29hfyD+>LE9Z3 zZZc$07!8}EK7QCofJke#$B>QyXZD0*V%m5)Dp^kOz08YnuKKoZl)B}H_eaD{V`=-k z94Y;QpYP$NNy8CNwV>{dXX{3E4$yBS6of9Zi-*#5E-yJOx}H%Zw7yDoDK^fX)#6z^ zj%q~NVSxf$4a!5?3qqT|*^Zkt;i8OwQq-^q6&MBQNpxFJAE$WKgseP)XsZS{PVSyP z({7b=G5h)+pw6x&cO0_wdDZT`eiC!g%{j!<{OWDJY@GaC?t?M>Jld7+;yAR9?Kbq`n(ws5a&T4359QIp8cut6*NI{aty& zn%#9oRtaYU0}$Pj1c>&Y16Z!6X(aw+O{wg^o`-p{^ICaviuSx4@3Lq9#BgjEwN~$2 zTl(kg*t`KH<3?RTlK7##l#n8LwGL(nfoAH?Umtov9;LVdr{pEv8tEHbK$Pp?Wl)W( z1Gj->{T(axw=1?>-DUN}kw5ZXi+RAQuP3Gauz5x!-%gdmnk{DGkK&SWxj|C|ldg6K zx6D3t8_#9y^N&%=rUAN(%Pl;vHyIfTk}mv=Vq9fh=S<%F@E34Vwq_<1W~@mbxjUm~ zexc}61v5XuH@e)w7tc$FTCcZPQuH7T+NIhuYUF`V~x6XnanO-Ca72>F7q^C`8 zu0K+=rN46JVgcO;2`s0Jm`dG%+Ag}B+UNl=HlU3KETXF&cqe?_spraQheMn=*5uh; zkCc1UfmYmguY>>?=O@{SV>Yn>^<(Pmz%VlPseI=ER&sG74PHGXDy8IcQVY@PvVzA5%Inllah_~S0j%jAH7L;kB z(DVtFC`#!e>0L)s_L0pL*dc3rf<+FyZ9yU}!x2{uB+{V6V`HPSP76A?WANMNl;vD4 z!*Q;p=YaZ^huMoHubIb@++PV$#g0Y>73&bUXtAzcqx8p3I3lBg;uc$S`$_TInk0t$ zX+4gkT z*hNcv9|~IiDt%ctOlgHlPFT@XMbA>``95n+#h{7XVWO!=%$mU^eh~};%N=M^jqVE* z^Pc5BY#ayI+z_ozc^{*Dujzs@fO8kl{+%eejNaUkSSUd)f?bz9ifa##M4<iOQ`{Xk_ib{>ITK`6}{q=%pRuByPAnv zpy4_tojkO2cd4GaZuGLEn!JNB8lp82MZ$}UKeqeNEIL+!<5Wh`ML-Iq-dp&&C{;4a zckhDn+a#p4DzU)SnUd8uB+5FvwoDY;=I@CfO(L_F3nNUGNIvgz8blVI= zrIwMGUDN}aQi&2FMK0!P3X005wkmg}ydtecwe*F4!?qG#FX(h0`~O*9#j&RH>@d2I|JgDou z{Zqpa->z?We2vH{i$F{c!_oB$ec*z86f)L;>VN}dzO?Qiq`4P45IhUsXs@XOVvNOQ zN`P|VB?@*8we>&BY(bt_M2_WZ-qWh!tTeN}Yo2bTQwt*7mUW4c+D4_dsZXafwL7z1 z<9ISD4URt6PFXJ*)2-Hx_XVb>O3I3(7>T2D@#fUhEWb2lii4y;y_VQ;T~asUa3rTj zWhb?e^>?)v2-E(>pr-u>*8KFZ=M$@HX{5Opg4=MG7Z-)b@U*lhNF~kvLjJf5S#^(u z)L+fnP`lE3{l%hxlTWT;0Gn)Y1*OVYN|*5pel|M!#%B3n=3LI!@^nrhs7tZ|&tjb! zf+nhR8_6jrMa8-yAK?wRl|PR{aPybW-?dQ{pA)$~n^j0}0Xkf?xDF`XN2ZSsGy8jg-QQ$9dUQpSW(iuf$HT)aXk-vr4T$CqJ`8ITw$d8|09m~ zcd51`PBto$`}1_p>e=^r6OWzekyRp#O_0C$9oaaT*E(U|Hx00yfMbms(edBUr znWimsRhrY0Sq62hkbF;)Dp{iCDDnQXl~KKkRe!YUI=nw6)i*V%%&Y=3d=x0uc(To> zJ@DQ`ikX426ooMIGuG}9zABNovO);Yw8Hg(&2(7{&KHa$&FXxOh|66tZxj(v;dqGr z-*FzBH1u24_#zza$>Q)m;g}h$F1-^5T3lK}g7^Wzd%Kph4_Evi*xi(Pkd6;9M^6jKxjK!kw zB!y1x+aou9^wIqaA>6%5#lt#pTp`=e+|0nhMtpGx9#$=fl?TG(djwZOP1QoIqo|~U z1eLD3xE8!&+t>}SNX4dV5!A1Q+Y4$ z7y~C1lg@SdSM#&D>_EJKva^qrJTUfdk=Hj1ITXc+c^{SJONbQEdELz4`IwU6%><}o zm4{|fRh!AtQ6^U|*w>~N93-=vzR|)8h5<+7gj`#pOF<{q1lL2Cx$P~Vc6bKmi%D63c zXd)M`L0NQp<7X~-mp2F1i+_{9CAO3}a9T?K3O_Y%NdpO78%j@nRnWbJDsxu4dVpBH zIuLPqQ17Aa+xy*{Jb-z~z0ObM6H{&sE^!Z-#woRg#YJ}e*(c<*;#w#Wz%Mq57<`eouIn)e!KfKf@myBXknnq6k`xccDaF;%EMB> z7M#O#G!TQ!jdxcY5K6G||9cKQO4p@pIrn+&C}@XvC1AA!&67-(B0%xqlOqf}=qVaC z4E_?FIM-xSNI2J{+ZB^GwG+(+bMN^+JwhzO#Lv%Av2pM+1D@6iwA($D)o6`X zoXCjw<&K^DK3&ts1c=$v$GNZ7P`mdxv_t08CR8-_k;we1+)schNb^ekvN-klASK|% zs`$d3YvrveL#x2U6frBMt(3(9d|Fe}_xkaCuR~jH#o1@%-KmL&fOA!0z#hccnkHO! zHIg6&g?5iHIp8DxvnjAS3R3_I#OL zI`|h%2dJAy68kC9U{Oyu`~#8q?~$G?yDmsO#%u&A81%Flh%W{c*|Z3s9Q??;Yg++o z=><(X2C~+`6=yY%Qtg6~T#B|>LRL#3;CQ+!x>pAdtdWHpXMy#XzeuFu2QyF&=^S*sPAclC;q`YZ4x%$+`~U>bb}F6Kh}FV68^%M!mLAf(xr?w!y)`=_yU`-iD!r% z#Z6wdTty1+h9}CUfNsCUCmbb8BoSA$gwdJiy^t?SUWx|`* zn<3LdrCM+JAI9-#*CoH0x(*XfaARFLK7S8T8@;`tD(UvAXpWfis9WF1ziW0NsMmiL z@^6nWJ(B$(pMSWvIf?z)|46{^lw?TtzujGs24K2}I%^WdA~H={e&zAi0;LW{hea}7 z2R>@`LFiD?v?F{0L|0FZ3OPSxdt!abME;k5VH_JJ|ciShAxb7~HE0H;My1ne8nPsa2K0*uw2qu$2Vq}UFf z>tsySJ;g+;J-`bQA&vXZ^?r8gbsV}%Tni%&7ii~w%Z z9U2xW$f)5T?tXMjMXJ7ojSm?~W2&ttqP~ygXLD&n=HKYJfPFoEr>vD$UC~TRZ`{yL z869*?<=GmMsh04pCVmQXSqFKB9{20K8G7L`@$1OrtZly`&aBbRkqkh?nwzTTY<&Tf z=Y^etP1kBY;q?|Tq!%|uKE{lu>XUsSA}!7{N_#20L|3?ge<;aeT-=UF(qa? zdrKT~^aJ!T$sU32iM;@bYtcmrper6KxThQmlss4T(g`2evIyn}E9K^8B+yiFN|+-< z$=p-F`U%d=BYi9)+rqHWSKo=Xtnx9!TaLa+UD2cN{kSuRccW_mwuUSzP-^KQnAx4@QquWHkec(#-YMT6fAa;I zlr6_!E5fIKp_wy6*7z1+of_-#FiR=DteUQR(cOWfIpkBz6(ENkE#|Rtg5F#up-p|TbD&F8)SyFOqxrE1@h+Bj^X9}Zux78=K`9L$*;$Mnf4g!^AX4D`67fixW-4=d zWL=GgMzH$!lm#IWT zV7OiVg|4gWcm{19s}ga}W#(>1l2pP(4oC~N@38WR(586?Afs3arcrG0&bD~|l})yd zcZ8njfbX!pcJe|Z-M`T#4V8XNAhHj9z=ww78&&2Pj0DihpPcFsMGu%mP|?Sq3eL;~ zAyURHm+IC0sCAMxoJ`_5ZW>YhWT)mwc4-B6Uy%EmW;n5f>swW?IEGzOSDs#&ioamq z;B;v`!tvJRpAL0VJOO&mEvi)`&(G9uo&4jYX&JkHvvOew_^%q9Ev|REPZ~GE^Tj+H zwvk%6HRz6f7uh!81qSe|yvj|+J;9&JZJFa9%++xV;8@BH-MXMXBh?-_5ho5mLMCOk zQD=08ykFvX%vFE(TwHF|zCe%Lhz*~^6uC|Lc^n_o$Aj@jus>)cb788K za)JV@I=u`_IzaJzFzFZlWfCcO6H`XwL#`Wj;@~g(fu;ZJF+pDiCX+mslqGk@V5={s z(ACCF6_lfL?+xgyT7#4X9D^2h6)G%tBOoLn!BQIzl17B}^)X#Sy|t?kBykxpHBMPG z=Z))X0rirFr8(%4KloQT{*TBh8DK}bP}00xp69A#;;Ni7fvJsPJBvsC$IPItHn@>C zbtw}&d|BAlXI7h&rz%jxV+P;c)I@WSFFc2aKIv>6-u@AQwxazgv^{6(QG({w#jb{= z(`p}!WSE1^aVtEL%ZT;0j@Gy$guP4t0UO)j%czIHNW4xi!uxUdtmZV@P)pC7uU~Ka z(SRo&nn)>NDT$f#LduVQ$5<0TX$ghJX9tgZ`_>=m4A<2DbT3!Xia10|i zX<{8on*HF9c?}!c1|EP-*oQo)#|{3PZP;tR$fRE(>=CvnC5)AI zF^1y2V{;rjXw=%LO8z0l=LKTgtXoN{ZX z$w5L{bcS%C6gg8{Wx_?a7Y$ZKoa1V=47A3>!3l30l_)|OByj~4SIup z2rV1tPtd$y3272RWlzdxSbvX~WDDpm5$X!PMd^kb#V}vQ87KSW!PPUh=UKg`Mg|3G zGK|&W2({RGV8DqJs(XJ+VK&N<5+k@iZKvL^OH}d^d0-W+K42Pf-(RqrW94?Ah45Yr zFI5!U*S@Nsv>i}t<{k?|&xrf3v5-1XiIP{bw70f)>-l9G_a&oAI8XhnLklA{o+)cD zVPilEd}al}ZRp4_vun?0>w}CfGicUV>L4j1VQTHOjP62dvXXi z&bR(<&q)PIy}N+Y8?6i{A?FcZSSF|}q+I~hBjq#RUAG=QQ6ekI&PGnNmOuoLd!GCc z(DR5Rb5R5UYWxU1i`QKrNIP#{QX<3tQul;FCwswE7!&mMA!|Z*1&HyP927$`UnkC2 zB2a8}E_yp_B>8}}3POaB3gff4t=6WG zsLsr5K+{49qNBZm%@Y5Km~oIz{L{-0-~s|?&Kj<+QB!mv!(*6>fJk(IsAkNQFExJRd^sfpPIlQg;KTdc^|&`Y0yu z+%8vuzKN+ZJDRf@h7zAa?($NjISr?4 zPmFxhLEW06P9?93^O1N$4ZeTuhaN&5ySVQ46#m}re!KmhfkG6j9L87O_SWwCXzF*f zlR%R+nvg+F+TAV5vD3bVWNV8zU5&!|>>DI@MI+0?Od?c&wlqk{WD^v8j;1(FS99!f zK}k!*;ych&g5HsBik&Ct9;P`H?^m=`^~^H>2?YRdKr!*Q>j3~^EE;d#VmDERk#vnq zcTSol=8ra?-YTiz$Y32E%OixUef`2=4}h`mRPbsv{fn)ysAr%d-5BcO?RE-{@N-?f z&Oe;dm6Uz>1|7>TG_1~_>I*)8&-{llIB0xPj^`<_9wcN0znM>-bWzt)aUbBZn|Lhm+KJ$S;%H+K_%yTMQb);A>0*leWyCn-su`hxPD~TNyI?t1X2R&#*Ssbm-*toz zAU9XNGhk6DChj~fA>}OV#{(vkKvZj^-Zx|uk>DT=e4gH@$MY%0>8b?coJe02a$r{t zJsW=uQ(4j5blgO?3f?3;4BOzmXPTq`1;U++{3ZUxy2CPiVaN*^fM_$G7We-}?mnL) zx;1Om=|KR#TOBbeyZe$;V!BUo*I&H7a$T!Uzt$V5J17o9ulwq}mu!SB`_qF0STd+L zKx#+gnp2Z9VULi{25@q^Dg;z3DtIS{#y0FZRCqGy>o-lnb665sNfjiTq??>M^1q~k`JVDnf2i14xqGm1(s3Iq}%X(ijDrXo@>_GeTd zUk~yY4B|nL#fJnESF2RKq*H6Ympe%!HBXD=67Q6~mgJBfeOu?ZaBP*m8VOweG1V-m{g%^p0+AwxY#-xfzFX5Y z)N3v^6J4Wy{SLpwe1`TD6aX&aHNnZJxip1{4y-4GBJz`c8h(g4MXABw!U`#xqNq-nE{g6Gys#fCMpx;vBt}wBg5#+s$bL4M9E74 z(ppVw8UcIwh2qvi%q=Ct$>+nP2-&!9YvN(BAGpbWJg6}f017zO;@|huGR)nrOu|hQ zja^qz6WrDnLDZlq2q@Jk(n|^z0mrfvbq~CDw|IOT)duQ%Hvmeerd!Mt{tn;#-&T5?ymfS>nFT<4--m^al?FSL! z?)!I+v?OO=h~YAdeHjRlxMv8>Je|!QXP3X_lwCkGaq`)GVFXY7o*p` zYwMdMkOgrV^hZzRcLin^{h8GGIFw`8pK!v@xe}(RlwPqoOHLk@IPuEMG4l@0dbe&D z#XAzNKm4WXRes&9*j?(2m1t7H&#Ox4{u_^GU*`pLr+;`cs|~cZ*6Cx-<>!tQuT8X- z;}TW~ORIw>aqDa~B;j`FkqcZ8UR^vt8lf}o{Yz%`vG56{dvC6IG&M?y+s1I|j$km3;9{38v`&X^Q#we_YyqyROe=r-zaFEuL!4Ca*t9Mt> zDD#2=HGQ+qX}R%a7+x7^oU*ZbYb^<56LkwY6Je23@;dyx{KMqCFH)wtZXSJ|I}>m^LqRtQKa~29UdWJ^U(f`G_Qtsb;D-GNU4xSjS zJ5ZG9;Anz1lY&UYz|v5#7yzX1j(#82wVm( z0fvZx!6Nj&I|PUS)nejqMWuBIN?b^di)EM zB+wM=PNI(n%1A?C5LpE%TviGy4gVYKKM?|T@m^RU6bw-Sp=F@Qkb%xbI}axk)(+_P zf5+j{^b5oQ2*fcd1pE5{2;|?WF!3Q`fgpYR`^Fxw0FWLK1_ppocz2QqPzEgXx2Y!( z3X_5S)43CPTy^oF!v&#S=$s(27=i=#_;Qj5ojF&4_u!I+rM{&W`=jmrxkl^UNkjnc z)jLfUA{VylhKd{S>Ua{Pw>`Mfp7U<$W?g5b zUfvI8Yq8uvi{W|urofcNHKY$UektmbQ|wuNtt@g)W?iMzP3B^cp4yC&j4`C{?P{Tj zQI)vPxr@ClODEG9zh<(-0h!=_;c#u!PpE!!1b>(`g?9oBvnwLi;+q~YNOF-WM<17(Qdg%xR=v3s!WeU!-=|ZrvG0Yd;;A zs@^F)%~xCIYiV4fOk^l~7fDT}CEdvzQpyp0Sp6f7uYI@p6_QU0{fB2GBwo={O}Vx@ zhN??m#ewXkoH6{&7pGV;Na@glX|MP=vyx34w2tAc8Zs1 zCwhLT#ob;?aiiN0v#hp{~43C0Vk${9&Nj>R#Lg zt*TnBiO?gmCwFm|`HeN;CcEukYjICP&3^U@xtZ|UanwFVnpMZpbDqQDuaO1m_7fJKRV!K%bEF&{r_$&T zvi>Ko1~4wDJ~-n-_1El)AuIm68xkw-F`q>yE)sxDxqm$>B2>Nu{ORQRj;{R-m7lze9kXVTSB9S=2 zHfn4vz#;Vkx--my;7OU0mAd?n9EJKkR8(TL(qeUij4-m!DmTyK`iBh_X6-*!szR1meI42UhJal48*-O(GY_$*7kiNI1%&modgF@*E@8U zv%BFq7nZc^69k*$vc4XM5Kh65HY7+veY~EJb@ncK=$Y9BHcWs* z%z7!eE{oxu_mXF~c*K^m5nS7yLKNfChU~*2bvKGsZ9AlSR7@skRmpK#tbBaYrYvYj zcim2$#vY@V3Wpx4)90TT&oy+;fn_%R$5R{#Jz=P9UK1*JezfN$k-4J!oZ0w1|JbZ*R3q$0OQKPWj%^ zO{#0P;b(lO>_Ym)$tFzM`W;#zsze#=!MlF;`Ns#6FD$zmMmGFw-=rS?svepc@bP({ zkVOmBjw_a1j17I7+gfZW(Mk6<1=(DSCz?x;KGtWYt{(>H;f~@I*9wOdly{KJ&0|xD z1F(o~%U8apO9L%R8fmPzO4m5h#y-Lw(*}pvZm+4?w6soOB^uq&`3mI^HWU4?i@1wZ zmMB|BdSSLxy6x>Et`fNP#x;va@#)i-cQ(^qTnT45M_ODr^T++xcH5R)%g?2kme)`w z`4F1=3nF#pr#o#J3pj%j9KmiUaGdcS&cyyN-&WH{U({9M&fV@@h0Akwy+1h~e(N%8 zWM-m}Zzu~>FeB6t2LkFjCywohAo@o@8 zAHt`|?0ItECSQN~w&t;2-q#TWmHd2m3vR{}bP8vcX;}Q`Fu8!r$Z;|QP~25y`ru;Q zy`9jJhuOcvh7>z&jO6+F128$xFe-CKi`mV5N{ibEQ!2SJWW-{z`gKWFWtU;m*SOOP zcDA6hFET!G{GMiVf~#AlMERt+~yBl4o_9dz0t*SK;$<(rw9jY8L;K}XcG%F$+2eGyEISsxxO>I#86vOZbO2l~K{f#XdthV|L|Il%Z?mr^cQ`7&9@@t~ z(%R1`=>c?gTV1QpiyJZtADz21pD-%xYR$jn;T_~#Piy2nN@Qx&54FwVZnQOjUV6W* zyRjXPSS;vS2$_D&pnwdM`Y*y){y)^7nGx0z0Mc@EzJ|ahttm+9k)9Yfbe4#eVibHmP)c}>as9-qykI^CJ%?pqL4BgYBK7o zP&Ij&I!YBKg8=^T7Wx!jtQ*e52?&Kk|D`bh9}<(l9ipeEdWC5``A8}<5~0eb;S&i+ za)NO+e6KyJ-BEMuOawpYM!z?+J%)h6VR6k2B_&T;y$)wusXyF`P80yuc$r-cl1>En ze35w|u7?y}I5!ZMf5-liam{D05y)PI-o~i&JtM6VIB0D&e=|0PwZ{O9UG~4g?w*Uz zHXnaRnp36ODh{{otUq?S?H2m&Z{`6fJ7|{+oge!?yaBI&l@(#)^6Z^x1b?BoAdS<*2jHaq{MdA!Crp?T;>_gg1O&u9%1Qo}AS$-noXFG%vRbNBFe Ur@t9g4k{}P1qcag=%WDt0Mx8`1ONa4 literal 0 HcmV?d00001 diff --git a/docs/Entwicklerhandbuch.pdf b/docs/Entwicklerhandbuch.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7ad9179dfb615d045b9796cddefc892cd6c7aaa3 GIT binary patch literal 368031 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

    P#SQ8S*i! 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%0DU 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

    3lcJm z|CvC{2Q;(r;Uf(4D8QSI!MZLr8c-U{Ch%EeLnP)V5EC~7**d_q@8gbr2@ylu+k-6H z=Us;u3$d}MVGwK=X$Qvt?iC$^x^(kyOujL7OCfP>QktZW5M0WhX1qrc#2!e@JKVO@ z_DuxkEt?9PBIBGzoyn*Uc9i6jmA_KP?V83#9j%MpKZt>b$6gqAi_{hb^winb{OA!W zD-h4UU_%0x^wH*^tk*!)uR&f;*UsjaN5)+tPgrrNC`exmucZ!StU>$md(IY@9*=bb zxj3?+AD@2Q{7}Et$baomeX1EHsYITHI8rp}>Zp!WyKvUB5pv3dE^FQ@EK>g|eMi)$ z+j>)_Ubg7MUE(OtDE4TcS6x-tqJ ze6%0+Wx`@CJ(5RUN(0)B!X;7{V`?yWj+wTNj%{)VIWWOoIo`9Sj8Q73Q6VUD8~&;Z zxUfF4D+Ju!@IskPKE2XvpQl^wED`TaF4{ICp@_dDX<|kUeH!jnK>L|=rRg0K>; z@$yg)Wvd9CI3q*DhA54asxe5zZf~!{B6YmXi4)ChCQS=$t#0q0?6vnhNC-1V)Rc@J_`T|Fa1UPodOm0X-rErY?T_cyG+aCYyURfY)^_h1n`NzsKZk=4 z#7EGQI)KQ<2mOQI{`22E$jrw-K07`QCYm?^X0;4D`DJX%lat{yeqJ1!a31^=bHbPfxh@M?`?SLSRieiJ%+wRS{j9}ec?p(`_`!o@6G@eZP?sj*K;xESn66Z0jFuqKYyI>J0?LH(1Zwv#=9{_UJ(1wEZKv4LP*At`maIrNJr*jnnUUpDTKBzraNPG) z`<@F_8Okn`)Kxl6Db%gC)KW6brOw@9=!e1huK|_FNJS~DtYTw)M+9Gz*IbW2u+ySnMB>|& z)9!YS&^q1J&T=4DB|ooL!T?heeGt73<2FhlyQis(y2#|A?1~k zTtEl82|*(FlJHHUOrQ+epk(H{L#zc0NQQe$GQ6UOjnbOF5{8C_+ZmXaY|6OS4Xfo8z*Z|xgSabad_E46vseMlSN&w?~7EZDG z*gnEZWOjibH+4irSk%L;F8;=ezC7QKdx#2%886hailr+}X`3fi_ItqJyQw}LKQW-p z@~D11&@DjiVs!4LkH}^{KtQD#K}*)fclul{PHeW;%=m*n$I8oi_r>r#w)xzuRN-S$ zvXSK=`=4YbML3ttrUcz_Toza;!!&W6u_1OWQqV0m$HZ({1?aWvb0))JRGKoRL}uFhrVED8zc z$-_lKQfGgQhO@V&V?>LW=3~GV;GfzA^T>FxBkpaS=8Rn zYd|qNyBRaW7!Kr$3rU z0>QiJQM^cHWr6M+jc97KvfUaaPH|aIB`>E}o`kcqQw!l|xEJQJ(X`AZLzk-^g%9Q` zMjPGj8HwTdu8!5(uA`Za!KZJr7GXuN6bkOj^k`@@c50MG+=xzq6m^K9Pkdfj<10+Q zfHo;LT1sTB<2wg5a@#qhG$FcEaQL}R?C*X70^3qMae#VU5C9Crei}J0=k5IAtEUhX}@W6Thy{(Ne{U=XH{G=Dr4lNh`?uTAvyXY3N=|QqLQRbEsefS zzrKLLwY}sqDst36DS6&{3DGt4GJi~6OU=LPG+V$|ZjDX@=HrbNErYB!snMu(6D`sS zmNXZKaPGas=w?x^?AB*-7LzS)R*Yy8tP%w>#%5r16idMH|wY)bJA74yAiQg-+e}(I$;fpMJ5Jp{_!d|EyF`YnaVh(lWe|LrWca}OpTd$T*)pO_Kg@Tb1;(= zi;AV~ImkP)TgJFsl1?0;BzQ!v2b{!DoM)Wa!a%wCf1wswYMl!cIyF}5euL(akqZXa zNvn&s5JB3jI>N-(Yl21&|AUEA4aF|fCvT@^h5n}^j~4XR(8OM4{qN4`oK^b|er}1N z)<#5sIZI^4H*+xI!hwvjd<>&A2b=jZ@_GQ)?}7pw-Acy;hx%#ToaI#`CQZ;}y)6Zy zU+2>g?ORy|s;SfCbgZ0t)8|4(u!aRwi?*qQ1(a~=g7lMQOkX5O;||FMr~S#jF=W5?#M;f z?jjo3+LOC1)xqS+tf=xj{Kp#cim_loSmLCXLE2HQtz||_IoFltfR9EeVlCrcf8%%~ zw<&y}j{laEq?B5i=4J7^E8>rB-G#+=jiUvB5(B>4>B0s4MKOKecHP3eIlBP}?OLk( zD2+O%wb9%f?@rJGEA^g_hIRVht=HOp1j>ET*2!n%UGd!+toyozh0>Z7#fwB@{BgYO z3FEk%K-`H1u-{EUC@FmG39Dkp!WkC4b8fK^{?SMa#2&-V+={WktDv$^AV`QcJ^jHY z0vEwv$+tdjCuNioGm+d4yUs=Zuo)My8F58ZLZMjY7qwFS*4tZd1M;r5#Y^83>gG2c zaYbkgBUO>A>oS)a`8YW#=SB0gN0~B^m82u`>)>o*y23%NOwD$Z8*NY9Y(Ai8j@Z0g zoprCPJhzeFFLK&U*D@`s2BddVx3u+?uZVdjNqD@ZJipM2CAO1<-S{y@G7kFgJYuVOUPVQ^=VlopFZSf~t+ zFN#xp5f%|slCGj$k^D!Za`D#u!kD}NxH0SEYZxMh8wY=}67cEd&spX+dn6G1o?FIs zbhCJ6Uicn}S%brOgAYT&Q+Wp5T-l?|GlYF7>1Kg#Ky3h%|7^i%-PveKI6lWP_vhNF zW_T^XIllC!UX@4f8YT_AuhT(CH$HbzLtgZxP1I++GFL-DuQxfnqgdF zdOwNc*u&DgVZX|OiXxU2FASiw9)Czg8%hA8h*M7er0f(z1XZ}-h{Tk#R=*I_guE7k z)7*VU*o&U}^!_n>b>CJoR}M!*o9CJC)A8g_;-<_nLWa_z^Vm?f^EoUgtQ4cmGL88{ zJ)zyY>*8@RiE8WS#P_zCY3Rx>#zN5$sH0nmDYO79$Frlnczp~h=O3mpQNYlF<{ja! zw)xd2WWR}#ilruNpJk(Hf0*?g^dNM8@_PuGfbvhV76mH~0>@V2Fn7EXOdgy(uQ-~| z6KeX>a*-bK5Hn)y?B#BW#0zi%?9NutUw zJD!gA9{MLjj&q24@jG7xyC-_kYrnQkChvPG9@(oO8=8eKTCnZ7oXwq1S3RY=*hmpjj2jc<6lv zNZd3I4j9D0jMdhGF!~1Z5Z;(}DV-wYf%n93(eBIumh6}|1GM95Lnq>6MPdT?j9R7wG~URz~tWh)ISC>b z>AJkytn@xSk=!aItL@A<=63F+x4%sHkT{a1Ps%V#kiOF+j6np|k>NxA0S@qk8bhqi z!`}r9i)b^bY`Jf~ZuT>02vAvPqfxKEwLk&Y+N*|Iq(e#VNEr9b;Y##-{`59(XG%<; z^qzjr{eI1L%)uh2Ccvx{N%K}9YRj-9gCU$4w-*!-(Qm*p0wR217dB;MI(AnW=z*m( z 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