Kage Studio 0.7.240121
A Simple Free and Open Source 2D Animation Software
Loading...
Searching...
No Matches
kage.h
Go to the documentation of this file.
1/*
2 * Kage Studio - a simple free and open source vector-based 2D animation software
3 * Copyright (C) 2011~2024 Mj Mendoza IV
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18 * MA 02110-1301, USA. Or, see <https://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef GTKMM_KAGE_H
23 #define GTKMM_KAGE_H
24
25 #include <gtkmm/togglebutton.h>
26 #include <gtkmm/paned.h>
27 #include <gtkmm/scrolledwindow.h>
28 #include <gtkmm/separator.h>
29 #include <gtkmm/scrollbar.h>
30 #include <gtkmm/uimanager.h>
31 #include <gtkmm/statusbar.h>
32 #include <gtkmm/radioaction.h>
33 #include <gtkmm/messagedialog.h>
34 #include <gtkmm/filechooserdialog.h>
35 #include <gtkmm/cssprovider.h>
36 #include "kage/timeline/layers.h"
37 #include "kage/timeline/scenes.h"
39 #include "kage/stage/stage.h"
41 #include "kage/library/library.h"
48 #include "kage/data/frame.h"
49 #include "kage/data/layer.h"
50 #include "kage/data/scene.h"
51 #include "kage/document.h"
52 #include "kage/project.h"
53 #include "about.h"
54// #include "register.h" -- not implemented yet; this is to gather users for support group
55
56 #include "kage/unre/unre.h"
57
58 #include "util/xml/xmltoken.h"
60 #include "util/xml/xmltag.h"
61 #include "util/xml/xml.h"
64
65 #include <fstream> //ofstream
66 #include <iostream> //cerr
67 #include <filesystem>
68
69 #include <gdkmm/cursor.h>
70 #include <gdkmm/frameclock.h>
71
72 #include "form_new.h"
73
74 class Kage : public Gtk::Window {
75 public:
76 Kage(std::string p_filePath);
77 virtual ~Kage();
78
79 void addDataToFrame(VectorDataManager v, bool p_force = false);
80 VectorDataManager getFrameData(bool p_force = false);
81 VectorDataManager getFrameDataAt(unsigned int p_frame);
82 void setFrameData(VectorDataManager p_vectorsData);
83 void setFrameData(VectorDataManager p_vectorsData, bool p_force);
84 bool isFrameEmpty();
85 void forceRenderFrames();
86 void renderOnionFrames();
87 void renderFrames();
90 std::string saveFrame();
91 std::string dumpFrame(bool bKS);
92 std::string dumpFrameToSvg();
93
94 unsigned int getTween();
95
96 std::string int255ToHex(unsigned int p);
97 char int15ToHex(unsigned int p);
98 unsigned int hexToInt255(std::string p);
99 unsigned int hexToInt15(char p);
100
102
106
107 protected:
108 //Signal handlers:
109 void updateStatus(Glib::ustring status_msg);
110 void Quit_onClick();
111 void SceneAdd_onClick();
112 void SceneDel_onClick();
113 void SceneRename_onClick();
118 void LayerAdd_onClick();
119 void LayerRename_onClick();
122 void LayerDel_onClick();
124 void LayerMoveUp_onClick();
129 void ToggleOnion_onClick();
130 void ToolButtons_onClick(Gtk::ToggleButton *p_sourceButton);
131 void onActionActivate();
132 public:
133 void Undo_onClick();
134 void Redo_onClick();
135 void Cut_onClick();
136 void Copy_onClick();
137 void Paste_onClick();
138 void Delete_onClick();
139 void Duplicate_onClick();
140 void SelectAll_onClick();
141 void Deselect_onClick();
142 protected:
148 void ShapeGroup_onClick();
150 void Raise_onClick();
151 void Lower_onClick();
152 void RaiseToTop_onClick();
156
158 void Tween_onClick();
159
161 void NextFrame_onClick();
162 void ToggleLoop_onClick();
163
164 void AddFrame_onClick();
165 void ExtendFrame_onClick();
167 void RemoveFrame_onClick();
168 void CutFrame_onClick();
169 void CopyFrame_onClick();
170 void PasteFrame_onClick();
171 void DeleteFrame_onClick();
172 void TweenFrame_onClick();
174// void New_onClick();
175 void OpenKAGE_onClick();
176 std::string svgPath;
177 void ImportSVG_onClick();
178 void ExportKS_onClick();
179 void ExportHTML5_onClick();
180 void ExportSVG_onClick();
181 void ExportPNG_onClick();
185 void ExportVideo_onClick();
186 void ProjectSave_onClick();
188 void ImportAsset_onClick();
189
190 virtual bool on_delete_event(GdkEventAny* any_event);
191 virtual bool on_key_press_event(GdkEventKey *e) override;
192 virtual bool on_key_release_event(GdkEventKey *e) override;
193
194 void doOpenKAGE();
195 void doOpenKSF();
196 void doImportSVG();
197 void doSaveProjectDialog(std::string p_title);
198 void doSaveProject(std::string p_filename);
199 void doSaveDialog(std::string p_title);
200 bool doSaveKSF(std::string p_filename);
201
202 void doExportPNGDialog(std::string p_title, bool p_transparent);
203
204 //Member widgets:
205 Gtk::VBox m_VBoxRoot;
206 Gtk::HBox m_HBoxToolbar;
208 Gtk::HPaned m_Timeline_HPaned;
212
216 Gtk::Button _btnLayerAdd;
218 Glib::RefPtr<Gdk::Pixbuf> _btnLayerAdd_pixbuf;
219 Gtk::Button _btnLayerDelete;
221 Glib::RefPtr<Gdk::Pixbuf> _btnLayerDelete_pixbuf;
222 Gtk::Button _btnLayerMoveTop;
224 Glib::RefPtr<Gdk::Pixbuf> _btnLayerMoveTop_pixbuf;
225 Gtk::Button _btnLayerMoveUp;
227 Glib::RefPtr<Gdk::Pixbuf> _btnLayerMoveUp_pixbuf;
228 Gtk::Button _btnLayerMoveDown;
230 Glib::RefPtr<Gdk::Pixbuf> _btnLayerMoveDown_pixbuf;
233 Glib::RefPtr<Gdk::Pixbuf> _btnLayerMoveBottom_pixbuf;
234
236
239 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineFrameAdd_pixbuf;
242 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineFrameRemove_pixbuf;
245 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineFrameCut_pixbuf;
248 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineFrameCopy_pixbuf;
251 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineFramePaste_pixbuf;
254 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineFrameClear_pixbuf;
255
257
260 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineRewind_pixbuf;
263 Glib::RefPtr<Gdk::Pixbuf> _btnTimelinePrevious_pixbuf;
264 Gtk::Button _btnTimelinePlay;
266 Glib::RefPtr<Gdk::Pixbuf> _btnTimelinePlay_pixbuf;
267 Gtk::Button _btnTimelineNext;
269 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineNext_pixbuf;
270 Gtk::Button _btnTimelineStop;
272 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineStop_pixbuf;
273 Gtk::ToggleButton _btnTimelineLoop;
275 Glib::RefPtr<Gdk::Pixbuf> _btnTimelineLoop_pixbuf;
276 public:
277 Gtk::ToggleButton _toggleOnion;
278 protected:
280 Glib::RefPtr<Gdk::Pixbuf> _toggleOnion_pixbuf;
281 public:
282 Gtk::ToggleButton _toggleOnionLayer;
283 protected:
285 Glib::RefPtr<Gdk::Pixbuf> _toggleOnionLayer_pixbuf;
286
287 Gtk::Button _btnSceneAdd;
289 Glib::RefPtr<Gdk::Pixbuf> _btnSceneAdd_pixbuf;
290 Gtk::Button _btnSceneRemove;
292 Glib::RefPtr<Gdk::Pixbuf> _btnSceneRemove_pixbuf;
293 Gtk::Button _btnSceneToNext;
295 Glib::RefPtr<Gdk::Pixbuf> _btnSceneToNext_pixbuf;
298 Glib::RefPtr<Gdk::Pixbuf> _btnSceneToPrevious_pixbuf;
299 Gtk::Button _btnSceneToFirst;
301 Glib::RefPtr<Gdk::Pixbuf> _btnSceneToFirst_pixbuf;
302 Gtk::Button _btnSceneToLast;
304 Glib::RefPtr<Gdk::Pixbuf> _btnSceneToLast_pixbuf;
305
311 Gtk::Label m_LabelScene;
316 Gtk::VBox m_VBoxTimelineFrame; //to be deleted
320 Gtk::HBox m_Box1;
321 Gtk::VBox m_PropertyBox;
322 Gtk::HSeparator m_Separator;
323 Gtk::HSeparator m_Separator_Toolbar1;
324 Gtk::HSeparator m_Separator_Toolbar2;
325 Gtk::HSeparator m_Separator_Toolbar3;
326 Gtk::HSeparator m_Separator_Toolbar4;
327 Gtk::HSeparator m_Separator_Scene1;
328 Gtk::HSeparator m_Separator_Scene2;
329 Gtk::HSeparator m_Separator_Library1;
330 Gtk::HSeparator m_Separator_Library2;
331 Gtk::Label m_LabelProp;
334 Gtk::Label m_LabelLibrary;
335
337 Gtk::ScrolledWindow m_Stage_Pane_ScrolledWindow;
338 Glib::RefPtr<Gtk::UIManager> m_refUIManager;
339 Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup;
340
341 void addToolButton(const Glib::ustring &label);
342 Gtk::ToggleButton m_ToggleBtnSelect;
343 public:
344 void btnDebug_onClick();
345 protected:
346 void btnAbout_onClick();
347 void CheckUpdate_onClick();
348 void Website_onClick();
349 void openWebsite(std::string p_url);
350 std::vector<Gtk::ToggleButton*> toggleButtons;
351 std::vector<Glib::RefPtr<Gdk::Pixbuf>> toggleButtons_pixbuf;
352 std::vector<Gtk::Image> toggleButtons_img;
353 std::vector<Gtk::Tooltip*> tooltips;
354 Gtk::ToggleButton* currentTool;
355
357 Gtk::HScrollbar m_Timeline_HScrollbar;
358 Gtk::VScrollbar m_Timeline_VScrollbar;
360
361 Gtk::VPaned m_VPane_Timeline;
363 Gtk::Statusbar m_Statusbar;
365
366 unsigned m_ContextId;
367
369 std::string kagePath;
370 std::ofstream kageFile;
371
373 std::string ksfPath;
374 std::ofstream ksfFile;
375
377 std::string expPath;
378 std::ofstream expFile;
379 bool dtrace(std::string p_msg);
380 bool saveKageStudio(std::string p_path, std::string p_msg);
381 bool saveKageStudioFile(std::string p_path, std::string p_msg);
382 bool exportHtml5(std::string p_path, std::string p_msg);
383 bool exportSvg(std::string p_path, std::string p_msg);
384 bool exportKonsolScript(std::string p_path, std::string p_msg);
385 bool dump(std::string p_path, std::string p_msg);
386 bool fileWrite(std::string p_path, std::string p_msg, std::ofstream &p_file, bool &p_flag);
387
388 std::string openTextFile(std::string p_path);
389 std::vector<double> parseNumbers(std::string p_numbers);
390 std::vector<int> parseColorString(std::string p_color);
391 void parseKAGE_Children(std::vector<XmlTag> p_children);
392 void parseKAGE(std::string p_content);
393 bool parseKSF_Children(std::vector<XmlTag> p_children);
394 bool parseKSF(std::string p_content);
395 void parseSVG_ChildrenPathStyle(ColorData &p_pathColor, StrokeColorData &p_pathStrokeColor, XmlTagProperty &p_graphProperty);
396 void parseSVG_ChildrenPath(double p_centerX, double p_centerY, ColorData &p_pathColor, StrokeColorData &p_pathStrokeColor, XmlTag &p_graphTag);
397 void parseSVG_Children(std::vector<XmlTag> p_children);
398 void parseSVG(std::string p_content);
399 std::string runExternalGetResult(std::string p_cmd, std::string p_param);
400 bool runExternal(std::string p_cmd, std::string p_param);
401
402 void Play_onClick();
403 void PlayFrame_onClick();
404// void Stop_onClick();
405// void ToolSelect_onClick();
406 void ToolNode_onClick();
407 void ToolPoly_onClick();
408 void ToolPencil_onClick();
409 void ToolOval_onClick();
411 void ToolStroke_onClick();
412 void ToolFill_onClick();
413 void ToolEyedrop_onClick();
414 void ToolZoom_onClick();
415
416 bool on_tick(const Glib::RefPtr<Gdk::FrameClock>& frame_clock);
417 guint m_tick_id = 0;
418 gint64 m_start_time = 0;
419 const gint64 cycle_time = 3000000; // microseconds
420
421 unsigned int tickCounter;
423 //bool _isPlaying;
424
425 std::vector<VectorData> _undoBase;
426
427 bool handleUnsavedWork();
428
432
433 bool m_LabelLibrary_onClick(GdkEventButton *event);//, gpointer user_data);
434 public:
435 void Library_onDragStart(const Glib::RefPtr<Gdk::DragContext>&context, Gtk::SelectionData& selection_data, guint p_info, guint time);
436 void Stage_onDragStop(const Glib::RefPtr<Gdk::DragContext>& context, int p_destX, int p_destY, const Gtk::SelectionData& selection_data, guint p_info, guint time);
437
440 bool _propFillVisible = false;
441 bool _propStrokeVisible = false;
449 Gdk::Color m_Color; //fill or stroke?
450 void Stop_onClick();
452
453 void toolsButtonToggle(std::string p_toolTip);
454
455 void ToolSelect_onClick();
456
457 static void timestamp();
458 static void timestamp_IN();
459 static void timestamp_OUT();
460 static unsigned int TAB_COUNT;
461
462 static gboolean NotDarkMode;
463
466
467 void propStageSetVisible(bool p_visible);
468 void propFillStrokeSetVisible(bool p_visible);
469 void propDisplayObjectPropertiesSetVisible(bool p_visible);
471 void propShapePropertiesSetVisible(bool p_visible);
472 void propAssetPropertiesSetVisible(bool p_visible);
473 void propNodeXYSetVisible(bool p_visible);
474 void propFrameTweenSetVisible(bool p_visible);
475 void updateColors();
478 void updateNodeXY();
479 void updateSelectedShapeColor(bool p_doFill = true, bool p_doStroke = true);
480
482 void stackDo();
483
484 void New_onClick();
485 void cleanupInterface();
486 bool doDeleteFrame();
487
488 bool isLayerLocked();
489 unsigned int getDocumentCurrentScene();
490 bool setDocumentCurrentScene(unsigned int p_scene);
491 unsigned int getDocumentSceneCurrentLayer();
492 void setDocumentSceneCurrentLayer(unsigned int p_layer, bool p_addSelected);
494 void setCurrentLayerByID(unsigned int p_layerID);
495 void setDocumentSceneLayerCurrentFrame(unsigned int p_frame, bool p_addSelected);
496
497 void displayMouseXY(double p_x, double p_y);
498
500
501 void refreshUI();
502 void focusOnStage();
503
506 std::vector<VectorData> g_copiedData;
507 std::vector<unsigned int> g_selectedItems;
508
509 void setStageBG(Gdk::Color p_Color);
510 Gdk::Color getStageBG();
511 };
512
513 //from Timeline -- for use by Timeline and LayersUI
514 const unsigned int FRAME_WIDTH = 12;
515 const unsigned int FRAME_WIDTH_OFFSET = 8;
516 const unsigned int FRAME_HEIGHT = 23;
517 const unsigned int FRAME_HEIGHT_OFFSET = 23;
518 //from Timeline -- for use by Timeline and LayersUI
519 extern unsigned int g_layerSelectIndex;
520 extern unsigned int g_frameSelectIndex;
521
522
523#endif //GTKMM_KAGE_H
Definition color.h:28
Definition assetmanager.h:36
Definition document.h:69
bool dump(std::string p_path, std::string p_msg)
Definition kage.cpp:4078
PropertyFrameTween m_propFrameTween
Definition kage.h:447
void LayerDel_onClick()
Definition kage.cpp:2161
std::ofstream ksfFile
Definition kage.h:374
unsigned int getDocumentSceneCurrentLayer()
Definition kage.cpp:2755
Gtk::Button _btnTimelinePrevious
Definition kage.h:261
PropertyLocationSize m_propLocationSize
Definition kage.h:443
void ToolEyedrop_onClick()
Definition kage.cpp:2400
const gint64 cycle_time
Definition kage.h:419
void ToolSelect_onClick()
Definition kage.cpp:2302
int _area_timeline_pane
Definition kage.h:429
void parseKAGE_Children(std::vector< XmlTag > p_children)
Definition kage.cpp:4678
void ToggleOnionLayer_onClick()
Definition kage.cpp:2233
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineFrameAdd_pixbuf
Definition kage.h:239
void Duplicate_onClick()
Definition kage.cpp:1346
std::vector< double > parseNumbers(std::string p_numbers)
Definition kage.cpp:4622
Glib::RefPtr< Gdk::Pixbuf > _btnLayerAdd_pixbuf
Definition kage.h:218
bool parseKSF(std::string p_content)
Definition kage.cpp:5021
void parseSVG_Children(std::vector< XmlTag > p_children)
Definition kage.cpp:5490
unsigned int tickCounter
Definition kage.h:421
void propStageSetVisible(bool p_visible)
Definition kage.cpp:2426
bool sceneLayerSwitchToPreviousFrame()
Definition kage.cpp:2041
KageAssetManager _assetManager
Definition kage.h:104
void doSaveDialog(std::string p_title)
Definition kage.cpp:3011
std::ofstream expFile
Definition kage.h:378
bool runExternal(std::string p_cmd, std::string p_param)
Definition kage.cpp:5739
Glib::RefPtr< Gdk::Pixbuf > _btnSceneRemove_pixbuf
Definition kage.h:292
std::string ksfPath
Definition kage.h:373
std::vector< Gtk::Tooltip * > tooltips
Definition kage.h:353
std::ofstream kageFile
Definition kage.h:370
void addToolButton(const Glib::ustring &label)
Definition kage.cpp:4004
void Raise_onClick()
Definition kage.cpp:1473
void doExportPNGDialog(std::string p_title, bool p_transparent)
Definition kage.cpp:3310
Gtk::VBox m_VBoxTimelineLayer
Definition kage.h:207
KageDocument _documentCopyBuffer
Definition kage.h:505
Kage(std::string p_filePath)
Definition kage.cpp:43
bool exportHtml5(std::string p_path, std::string p_msg)
Definition kage.cpp:4098
KageScenesUI _scenes
Definition kage.h:101
void PasteFrame_onClick()
Definition kage.cpp:1898
void ToggleProperties_onClick()
Definition kage.cpp:1407
void setDocumentSceneCurrentLayer(unsigned int p_layer, bool p_addSelected)
Definition kage.cpp:2764
void Paste_onClick()
Definition kage.cpp:1331
Gtk::Button _btnTimelinePlay
Definition kage.h:264
void Deselect_onClick()
Definition kage.cpp:1374
void RemoveTweenFrame_onClick()
Definition kage.cpp:2022
Glib::RefPtr< Gdk::Pixbuf > _btnLayerMoveUp_pixbuf
Definition kage.h:227
unsigned int getDocumentSceneLayerCurrentFrame()
Definition kage.cpp:2775
bool doDeleteFrame()
Definition kage.cpp:1962
Gtk::Button _btnTimelineFrameAdd
Definition kage.h:237
Gtk::HSeparator m_Separator
Definition kage.h:322
void propNodeXYSetVisible(bool p_visible)
Definition kage.cpp:2457
Gtk::HSeparator m_Separator_Toolbar1
Definition kage.h:323
bool on_tick(const Glib::RefPtr< Gdk::FrameClock > &frame_clock)
Definition kage.cpp:3966
Gtk::VBox m_Timeline_Layer_VBox2
Definition kage.h:211
Gtk::HPaned m_HPane_DrawingArea
Definition kage.h:362
Gtk::Button _btnTimelineFrameCopy
Definition kage.h:246
Gtk::VScrollbar m_Timeline_Scene_VScrollbar
Definition kage.h:309
PropertyNodeXY m_propNodeXY
Definition kage.h:446
void doOpenKAGE()
Definition kage.cpp:2934
std::string svgPath
Definition kage.h:176
void forceRenderFrames()
Definition kage.cpp:2623
void Library_onDragStart(const Glib::RefPtr< Gdk::DragContext > &context, Gtk::SelectionData &selection_data, guint p_info, guint time)
Definition kage.cpp:1213
KageTimeline _timeline
Definition kage.h:105
std::string runExternalGetResult(std::string p_cmd, std::string p_param)
Gtk::HSeparator m_Separator_Toolbar4
Definition kage.h:326
virtual ~Kage()
Definition kage.cpp:1253
PropertyAsset m_propAsset
Definition kage.h:444
Glib::RefPtr< Gdk::Pixbuf > _toggleOnionLayer_pixbuf
Definition kage.h:285
void updateShapeProperties()
Definition kage.cpp:2493
Glib::RefPtr< Gdk::Pixbuf > _btnSceneToPrevious_pixbuf
Definition kage.h:298
void Cut_onClick()
Definition kage.cpp:1301
void ExportPNG_onClick()
Definition kage.cpp:3302
void SceneMoveToFirst_onClick()
Definition kage.cpp:2120
Gtk::HBox m_HBoxToolbar
Definition kage.h:206
void updateColors()
We're updating the GUI's colors based on KageStage's Fill and Stroke colors.
Definition kage.cpp:2469
Gtk::Image _btnTimelineRewind_img
Definition kage.h:259
Gtk::Button _btnSceneAdd
Definition kage.h:287
void Play_onClick()
Definition kage.cpp:3943
KageStage _stage
Definition kage.h:438
Gtk::HBox m_Timeline_Scene_Controls_HBox
Definition kage.h:310
void setCurrentLayerByID(unsigned int p_layerID)
Definition kage.cpp:2783
void doOpenKSF()
Definition kage.cpp:2950
unsigned int getDocumentCurrentScene()
Definition kage.cpp:2740
void cleanupInterface()
Definition kage.cpp:2827
void ImportAsset_onClick()
Definition kage.cpp:3514
void LayerRename_onClick()
Definition kage.cpp:2141
static void timestamp_IN()
Definition kage.cpp:5803
bool m_LabelLibrary_onClick(GdkEventButton *event)
Definition kage.cpp:1234
void LayerMoveTop_onClick()
Definition kage.cpp:2175
Gtk::Image _btnSceneToLast_img
Definition kage.h:303
Gtk::Button _btnSceneToLast
Definition kage.h:302
std::vector< Glib::RefPtr< Gdk::Pixbuf > > toggleButtons_pixbuf
Definition kage.h:351
void TweenFrame_onClick()
Definition kage.cpp:2001
void setDocumentSceneLayerCurrentFrame(unsigned int p_frame, bool p_addSelected)
Definition kage.cpp:2791
void parseSVG(std::string p_content)
Definition kage.cpp:5701
void SceneRename_onClick()
Definition kage.cpp:2095
std::vector< Gtk::Image > toggleButtons_img
Definition kage.h:352
void ToolStroke_onClick()
Definition kage.cpp:2374
Glib::RefPtr< Gdk::Pixbuf > _btnTimelinePlay_pixbuf
Definition kage.h:266
void LayerAdd_onClick()
Definition kage.cpp:2127
void Redo_onClick()
Definition kage.cpp:1284
bool _UPDATE_SHAPE_COLORS
Definition kage.h:439
virtual bool on_key_release_event(GdkEventKey *e) override
Definition kage.cpp:1243
Glib::RefPtr< Gdk::Pixbuf > _toggleOnion_pixbuf
Definition kage.h:280
virtual bool on_key_press_event(GdkEventKey *e) override
Definition kage.cpp:1239
Gtk::Label m_Timeline_Layer_Label
Definition kage.h:215
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineRewind_pixbuf
Definition kage.h:260
unsigned int hexToInt15(char p)
Definition kage.cpp:4592
void refreshUI()
Definition kage.cpp:1684
Gtk::Image _btnLayerMoveDown_img
Definition kage.h:229
void setStageBG(Gdk::Color p_Color)
Definition kage.cpp:5822
Gtk::ScrolledWindow m_Timeline_Layer_ScrolledWindow
Definition kage.h:317
void LayerMoveUp_onClick()
Definition kage.cpp:2188
void updateNodeXY()
Definition kage.cpp:2509
bool handleUnsavedWork()
Definition kage.cpp:2871
std::string dumpFrame(bool bKS)
Definition kage.cpp:4231
bool expInited
Definition kage.h:376
void ToolZoom_onClick()
Definition kage.cpp:2413
Gtk::Button _btnLayerDelete
Definition kage.h:219
unsigned int hexToInt255(std::string p)
Definition kage.cpp:4547
void ExportPNGSequence_onClick()
Definition kage.cpp:3426
Glib::RefPtr< Gdk::Pixbuf > _btnSceneToLast_pixbuf
Definition kage.h:304
Gtk::Button _btnTimelineStop
Definition kage.h:270
void renderFramesBelowCurrentLayer()
Definition kage.cpp:2695
Gtk::HPaned m_Timeline_Scene_HPaned
Definition kage.h:306
KageLayersUI _layers
Definition kage.h:103
Gtk::Button _btnLayerMoveUp
Definition kage.h:225
Gtk::ScrolledWindow m_Timeline_Frame_ScrolledWindow
Definition kage.h:318
bool dtrace(std::string p_msg)
Definition kage.cpp:4124
void Stage_onDragStop(const Glib::RefPtr< Gdk::DragContext > &context, int p_destX, int p_destY, const Gtk::SelectionData &selection_data, guint p_info, guint time)
Definition kage.cpp:1218
static void timestamp_OUT()
Definition kage.cpp:5810
Gtk::Button _btnSceneToFirst
Definition kage.h:299
int _area_properties_pane1
Definition kage.h:430
void propAssetPropertiesSetVisible(bool p_visible)
Definition kage.cpp:2452
void renderFramesAboveCurrentLayer()
Definition kage.cpp:2718
void propShapePropertiesSetVisible(bool p_visible)
Definition kage.cpp:2447
void SceneMoveToLast_onClick()
Definition kage.cpp:2113
void ExportPNGSpritesheet_onClick()
Definition kage.cpp:3350
bool kageInited
Definition kage.h:368
Gtk::Image _btnSceneToFirst_img
Definition kage.h:300
Gtk::Label m_Timeline_Label
Definition kage.h:235
bool saveKageStudioFile(std::string p_path, std::string p_msg)
Definition kage.cpp:4089
Gtk::Button _btnTimelineNext
Definition kage.h:267
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineStop_pixbuf
Definition kage.h:272
std::vector< VectorData > g_copiedData
will contain copied Scene/s, its Layer/s, it's Frames
Definition kage.h:506
void PreviousFrame_onClick()
Definition kage.cpp:1627
void PlayFrame_onClick()
Definition kage.cpp:3953
void ExportHTML5_onClick()
Definition kage.cpp:3143
void ToolFill_onClick()
Definition kage.cpp:2387
Gtk::ScrolledWindow m_Property_Pane_ScrolledWindow
Definition kage.h:332
void SceneMoveToPrevious_onClick()
Definition kage.cpp:2106
void ToggleOnionSkin_onClick()
Definition kage.cpp:2228
void ShowHideLayer_onClick()
Definition kage.cpp:2145
Gtk::Image _btnTimelineFrameAdd_img
Definition kage.h:238
void ToolRectangle_onClick()
Definition kage.cpp:2362
void ToggleTimeline_onClick()
Definition kage.cpp:1395
void doSaveProjectDialog(std::string p_title)
Definition kage.cpp:3913
Gtk::HSeparator m_Separator_Toolbar2
Definition kage.h:324
void ToolNode_onClick()
Definition kage.cpp:2313
Gtk::Image _toggleOnion_img
Definition kage.h:279
Gtk::HBox m_Box1
Definition kage.h:320
bool isLayerLocked()
Definition kage.cpp:2737
Glib::RefPtr< Gdk::Pixbuf > _btnSceneToNext_pixbuf
Definition kage.h:295
void focusOnStage()
Definition kage.cpp:5817
Gtk::Button _btnTimelineFrameClear
Definition kage.h:252
void propDisplayObjectPropertiesSetVisible(bool p_visible)
Definition kage.cpp:2434
Gtk::ToggleButton _toggleOnion
Definition kage.h:277
void ToolPencil_onClick()
Definition kage.cpp:2338
std::vector< Gtk::ToggleButton * > toggleButtons
Definition kage.h:350
Gtk::Label m_Timeline_Playback_Label
Definition kage.h:256
void ExtendFrame_onClick()
Definition kage.cpp:1650
Gtk::Image _btnTimelinePlay_img
Definition kage.h:265
VectorDataManager getFrameDataAt(unsigned int p_frame)
Definition kage.cpp:2575
void TogglePropertiesFill_onClick()
Definition kage.cpp:1418
Glib::RefPtr< Gtk::UIManager > m_refUIManager
Definition kage.h:338
void RecenterRotationPoint_onClick()
Definition kage.cpp:1587
Gtk::Image _btnTimelineStop_img
Definition kage.h:271
Gdk::Color m_Color
Definition kage.h:449
Gtk::Image _btnTimelineFrameCut_img
Definition kage.h:244
Gtk::Image _toggleOnionLayer_img
Definition kage.h:284
Gtk::VBox m_Timeline_Layer_VBox1
Definition kage.h:210
void FlipVertical_onClick()
Definition kage.cpp:1568
bool fileWrite(std::string p_path, std::string p_msg, std::ofstream &p_file, bool &p_flag)
Definition kage.cpp:4059
void Stop_onClick()
Definition kage.cpp:3959
void CheckUpdate_onClick()
Definition kage.cpp:4040
Gtk::HSeparator m_Separator_Toolbar3
Definition kage.h:325
void NextFrame_onClick()
Definition kage.cpp:1631
void ImportSVG_onClick()
Definition kage.cpp:2971
bool setDocumentCurrentScene(unsigned int p_scene)
Definition kage.cpp:2743
Glib::RefPtr< Gdk::Pixbuf > _btnLayerMoveDown_pixbuf
Definition kage.h:230
Gtk::VBox m_Timeline_Layer_VBox
Definition kage.h:209
void btnDebug_onClick()
Definition kage.cpp:4024
Gtk::VBox m_Timeline_Frame_VBox2
Definition kage.h:315
void Copy_onClick()
Definition kage.cpp:1313
void doImportSVG()
Definition kage.cpp:2998
Gtk::HSeparator m_Separator_Library2
Definition kage.h:330
static void timestamp()
Definition kage.cpp:5760
void ShapeUngroup_onClick()
Definition kage.cpp:1452
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineFrameRemove_pixbuf
Definition kage.h:242
void ProjectSave_onClick()
Definition kage.cpp:3817
Gtk::Label m_LabelScene
Definition kage.h:311
void RemoveFrame_onClick()
Definition kage.cpp:1672
Gtk::Image _btnTimelineFrameCopy_img
Definition kage.h:247
void propFrameTweenSetVisible(bool p_visible)
Definition kage.cpp:2462
Gtk::VPaned m_VPane_Timeline
Definition kage.h:361
Gtk::Image _btnLayerDelete_img
Definition kage.h:220
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineLoop_pixbuf
Definition kage.h:275
VectorDataManager getFrameData(bool p_force=false)
Definition kage.cpp:2557
Gtk::VBox m_VBoxRoot
Definition kage.h:205
void parseSVG_ChildrenPathStyle(ColorData &p_pathColor, StrokeColorData &p_pathStrokeColor, XmlTagProperty &p_graphProperty)
Definition kage.cpp:5056
void ToggleLoop_onClick()
Definition kage.cpp:1635
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineFrameCopy_pixbuf
Definition kage.h:248
Gtk::Image _btnTimelineLoop_img
Definition kage.h:274
KageLibrary _library
Definition kage.h:448
Gtk::Label _labelStatusMouseXY
Definition kage.h:364
unsigned m_ContextId
Definition kage.h:366
std::vector< unsigned int > g_selectedItems
Definition kage.h:507
std::string openTextFile(std::string p_path)
Definition kage.cpp:4612
std::string int255ToHex(unsigned int p)
Definition kage.cpp:4532
PropertyStage m_PropStage
Definition kage.h:442
void updateAssetProperties()
Definition kage.cpp:2500
void Undo_onClick()
Definition kage.cpp:1264
void FlipHorizontal_onClick()
Definition kage.cpp:1550
Glib::RefPtr< Gdk::Pixbuf > _btnLayerMoveTop_pixbuf
Definition kage.h:224
void LayerMoveBottom_onClick()
Definition kage.cpp:2214
void toolsButtonToggle(std::string p_toolTip)
Definition kage.cpp:2244
void Quit_onClick()
Definition kage.cpp:2519
void DuplicateFrame_onClick()
Definition kage.cpp:1661
void LowerToBottom_onClick()
Definition kage.cpp:1530
Gtk::Label m_TimelineFrame_Label
Definition kage.h:314
Glib::RefPtr< Gdk::Pixbuf > _btnSceneToFirst_pixbuf
Definition kage.h:301
bool _displayObjectIsShape
Definition kage.h:470
void renderFrames()
Definition kage.cpp:2669
Gtk::Button _btnSceneRemove
Definition kage.h:290
bool exportSvg(std::string p_path, std::string p_msg)
Definition kage.cpp:4106
void setFrameData(VectorDataManager p_vectorsData)
Definition kage.cpp:2591
bool _isPlaying
Definition kage.h:451
void registerPropertiesPane()
Definition kage.cpp:1248
void btnAbout_onClick()
Definition kage.cpp:4034
Gtk::Image _btnLayerMoveTop_img
Definition kage.h:223
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineNext_pixbuf
Definition kage.h:269
Gtk::Image _btnTimelineFrameRemove_img
Definition kage.h:241
bool exportKonsolScript(std::string p_path, std::string p_msg)
Definition kage.cpp:4115
Gtk::ToggleButton * currentTool
Definition kage.h:354
guint m_tick_id
Definition kage.h:417
Gtk::VBox m_Timeline_Frame_VBox1
Definition kage.h:313
Gtk::ScrolledWindow m_Timeline_Scene_ScrolledWindow
Definition kage.h:308
void displayMouseXY(double p_x, double p_y)
Definition kage.cpp:1257
void LockUnlockLayer_onClick()
Definition kage.cpp:2153
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineFrameClear_pixbuf
Definition kage.h:254
Gtk::Image _btnTimelineNext_img
Definition kage.h:268
void openWebsite(std::string p_url)
Definition kage.cpp:4049
void TogglePropertiesStroke_onClick()
Definition kage.cpp:1421
void ExportVideo_onClick()
Definition kage.cpp:3601
Gtk::Image _btnSceneAdd_img
Definition kage.h:288
Gtk::VBox m_VBoxTimelineFrame
Definition kage.h:316
Gtk::Image _btnLayerMoveUp_img
Definition kage.h:226
void Tween_onClick()
Definition kage.cpp:1973
Gtk::VScrollbar m_Timeline_VScrollbar
Definition kage.h:358
std::string kagePath
Definition kage.h:369
Glib::RefPtr< Gdk::Pixbuf > _btnLayerDelete_pixbuf
Definition kage.h:221
void AddFrame_onClick()
Definition kage.cpp:1638
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineFramePaste_pixbuf
Definition kage.h:251
Gtk::ToggleButton _toggleOnionLayer
Definition kage.h:282
void SceneAdd_onClick()
Definition kage.cpp:2069
bool saveKageStudio(std::string p_path, std::string p_msg)
Definition kage.cpp:4081
KageProject _document
Definition kage.h:504
bool doSaveKSF(std::string p_filename)
Definition kage.cpp:3033
void ProjectSaveAs_onClick()
Definition kage.cpp:3824
Gtk::Label m_LabelLibrary
Definition kage.h:334
Gtk::Image _btnSceneToNext_img
Definition kage.h:294
int _area_properties_pane2
Definition kage.h:431
void onActionActivate()
Definition kage.cpp:3939
void CopyFrame_onClick()
Definition kage.cpp:1819
void stackDo()
Definition kage.cpp:2514
void Website_onClick()
Definition kage.cpp:4045
Glib::RefPtr< Gtk::ActionGroup > m_refActionGroup
Definition kage.h:339
Gtk::HSeparator m_Separator_Scene1
Definition kage.h:327
std::string expPath
Definition kage.h:377
Gtk::Image _btnLayerMoveBottom_img
Definition kage.h:232
Gtk::VScrollbar m_Property_Pane_VScrollbar
Definition kage.h:333
Gtk::Button _btnTimelineFrameCut
Definition kage.h:243
void updateSelectedShapeColor(bool p_doFill=true, bool p_doStroke=true)
Used by Fill and Stroke tools.
Definition kage.cpp:4134
gint64 m_start_time
Definition kage.h:418
Glib::RefPtr< Gdk::Pixbuf > _btnSceneAdd_pixbuf
Definition kage.h:289
Gtk::Image _btnSceneToPrevious_img
Definition kage.h:297
void ExportSVG_onClick()
Definition kage.cpp:3230
Gtk::Button _btnTimelineFrameRemove
Definition kage.h:240
Gtk::HBox m_Timeline_Controls_HBox
Definition kage.h:214
bool sceneLayerSwitchToNextFrame()
Definition kage.cpp:2055
void DeleteFrame_onClick()
Definition kage.cpp:1956
PropertyFillStroke m_propFillStroke
Definition kage.h:445
Glib::RefPtr< Gdk::Pixbuf > _btnTimelinePrevious_pixbuf
Definition kage.h:263
void ExportPNGTransparent_onClick()
Definition kage.cpp:3306
Gtk::Button _btnLayerMoveDown
Definition kage.h:228
Gtk::HBox m_Timeline_HBox
Definition kage.h:359
Gdk::Color getStageBG()
Definition kage.cpp:5829
void SceneMoveToNext_onClick()
Definition kage.cpp:2099
Gtk::Image _btnSceneRemove_img
Definition kage.h:291
Gtk::Statusbar m_Statusbar
Definition kage.h:363
void ToolPoly_onClick()
Definition kage.cpp:2326
bool _propStrokeVisible
Definition kage.h:441
Gtk::Button _btnTimelineFramePaste
Definition kage.h:249
void Delete_onClick()
Definition kage.cpp:1606
void Lower_onClick()
Definition kage.cpp:1492
void SelectAll_onClick()
Definition kage.cpp:1364
virtual bool on_delete_event(GdkEventAny *any_event)
Definition kage.cpp:2526
Gtk::VBox m_PropertyBox
Definition kage.h:321
UnRe _undoRedoManager
Definition kage.h:481
void doSaveProject(std::string p_filename)
Definition kage.cpp:3828
bool ksfInited
Definition kage.h:372
Gtk::Button _btnLayerMoveTop
Definition kage.h:222
Gtk::HPaned m_Timeline_HPaned
Definition kage.h:208
Gtk::ScrolledWindow m_Stage_Pane_ScrolledWindow
Definition kage.h:337
static gboolean NotDarkMode
Definition kage.h:462
bool parseKSF_Children(std::vector< XmlTag > p_children)
Definition kage.cpp:4820
guint frameCounter
Definition kage.h:422
void updateStatus(Glib::ustring status_msg)
Definition kage.cpp:1260
Gtk::Label m_LabelProp
Definition kage.h:331
void SceneDel_onClick()
Definition kage.cpp:2082
void New_onClick()
Definition kage.cpp:2806
static unsigned int TAB_COUNT
Definition kage.h:460
void ToggleDarkTheme_onClick()
Definition kage.cpp:1426
void parseKAGE(std::string p_content)
Definition kage.cpp:4793
bool _propFillVisible
Definition kage.h:440
Gtk::HBox m_Timeline_Scene_HBox
Definition kage.h:307
Gtk::Image _btnTimelineFramePaste_img
Definition kage.h:250
Gtk::Image _btnLayerAdd_img
Definition kage.h:217
unsigned int getTween()
Definition kage.cpp:2605
Gtk::HScrollbar m_Timeline_HScrollbar
Definition kage.h:357
Gtk::HBox m_Timeline_Layer_Controls_HBox
Definition kage.h:213
Gtk::VBox m_Timeline_Scene_VBox
Definition kage.h:312
void OpenKAGE_onClick()
Definition kage.cpp:2886
void RaiseToTop_onClick()
Definition kage.cpp:1511
std::vector< int > parseColorString(std::string p_color)
Definition kage.cpp:4630
Gtk::VBox m_VBoxToolbar_Holder
Definition kage.h:319
Gtk::Image _btnTimelineFrameClear_img
Definition kage.h:253
void addDataToFrame(VectorDataManager v, bool p_force=false)
Definition kage.cpp:2542
bool isFrameEmpty()
Definition kage.cpp:2614
Gtk::HSeparator m_Separator_Scene2
Definition kage.h:328
void renderOnionFrames()
Definition kage.cpp:2632
Gtk::Image _btnTimelinePrevious_img
Definition kage.h:262
std::string dumpFrameToSvg()
Definition kage.cpp:4373
Gtk::Button _btnTimelineRewind
Definition kage.h:258
char int15ToHex(unsigned int p)
Definition kage.cpp:4569
void ToolOval_onClick()
Definition kage.cpp:2350
Gtk::ToggleButton _btnTimelineLoop
Definition kage.h:273
void propFillStrokeSetVisible(bool p_visible)
Definition kage.cpp:2430
void ToolButtons_onClick(Gtk::ToggleButton *p_sourceButton)
Definition kage.cpp:2260
Gtk::HSeparator m_Separator_Library1
Definition kage.h:329
std::string saveFrame()
Definition kage.cpp:4156
Gtk::Button _btnLayerAdd
Definition kage.h:216
Gtk::ToggleButton m_ToggleBtnSelect
Definition kage.h:342
Gtk::Label m_LblHolder_Toolbar
Definition kage.h:336
Glib::RefPtr< Gdk::Pixbuf > _btnLayerMoveBottom_pixbuf
Definition kage.h:233
void LayerMoveDown_onClick()
Definition kage.cpp:2201
void CutFrame_onClick()
Definition kage.cpp:1736
void ShapeGroup_onClick()
Definition kage.cpp:1435
Glib::RefPtr< Gdk::Pixbuf > _btnTimelineFrameCut_pixbuf
Definition kage.h:245
Gtk::Button _btnLayerMoveBottom
Definition kage.h:231
void ToggleOnion_onClick()
Definition kage.cpp:2238
Gtk::Button _btnSceneToPrevious
Definition kage.h:296
std::vector< VectorData > _undoBase
Definition kage.h:425
void ExportKS_onClick()
Definition kage.cpp:3097
Gtk::HScrollbar m_Timeline_Layer_HScrollbar
Definition kage.h:356
Gtk::Button _btnSceneToNext
Definition kage.h:293
void parseSVG_ChildrenPath(double p_centerX, double p_centerY, ColorData &p_pathColor, StrokeColorData &p_pathStrokeColor, XmlTag &p_graphTag)
Definition kage.cpp:5151
forward declaration
Definition layers.h:34
forward declaration
Definition library.h:31
Definition project.h:70
forward declaration
Definition scenes.h:32
Definition stage.h:39
forward declaration
Definition timeline.h:32
Definition asset.h:34
Definition fillstroke.h:35
Definition frametween.h:32
Definition locationsize.h:33
Definition nodexy.h:33
Definition stage.h:33
Definition strokecolor.h:27
Definition unre.h:35
Definition vectordatamanager.h:35
Definition xmltag.h:32
Definition xmltagproperty.h:30
unsigned int g_frameSelectIndex
Definition kage.cpp:41
unsigned int g_layerSelectIndex
Definition kage.cpp:40
const unsigned int FRAME_WIDTH
Definition kage.h:514
const unsigned int FRAME_HEIGHT_OFFSET
Definition kage.h:517
const unsigned int FRAME_WIDTH_OFFSET
Definition kage.h:515
const unsigned int FRAME_HEIGHT
Definition kage.h:516