Difference between revisions of "Developer Documentation"
From Synfig Studio :: Documentation
m (typo) |
(→Complete coding tutorials) |
||
(32 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
+ | <!-- Page info --> | ||
+ | {{Title|Developer Documentation}} | ||
+ | {{TOCright}} | ||
+ | <!-- end Page info --> | ||
The Developer Documentation part of this wiki is primarily for the following groups of people: | The Developer Documentation part of this wiki is primarily for the following groups of people: | ||
Line 5: | Line 9: | ||
*Those interested in bug filing and generating ideas | *Those interested in bug filing and generating ideas | ||
− | + | = Main pages = | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | * {{l|Dev:Build Instructions}} | ||
+ | * {{l|Dev:Building Documentation}} | ||
+ | * {{l|Dev:Source code}} description and workflow | ||
+ | * {{l|Dev:Action System}} : structure of the action system, good entry-point into Synfig. | ||
+ | * IDE Setup {{l|Dev:IDE_Linux|under Linux}} | {{l|Dev:IDE_Windows| under Windows}} | ||
+ | * {{l|Dev:Roadmap}} | ||
+ | * {{l|Dev:Contribute to Code}} | ||
+ | * {{l|Dev:Translation}} | ||
+ | * {{l|Dev:Wish list}} | ||
+ | * {{l|Dev:Coding_Conventions}} | ||
+ | * {{l|Dev:UI/UX Redesign}} | ||
+ | * {{l|Dev:ETL_replacement}} | ||
+ | =Synfig components= | ||
Synfig is divided into three main components: etl, synfig-core and synfig-studio. | Synfig is divided into three main components: etl, synfig-core and synfig-studio. | ||
− | * ETL is the extended template library. One of its most important components is the shared object class, which is the base class for most other parts of the application. Using "handles" to shared objects instead of c++ pointers provides garbage collection via reference counting. | + | * '''[http://download.tuxfamily.org/synfig/api/ETL/annotated.html ETL]''' is the extended template library. One of its most important components is the shared object class, which is the base class for most other parts of the application. Using "handles" to shared objects instead of c++ pointers provides garbage collection via reference counting. |
− | * | + | * '''[http://download.tuxfamily.org/synfig/api/synfig-core/annotated.html Synfig-core]''' is the core/command-line (cli) renderer ("synfig") contains the document data structure for the application: valuenodes, layers, and canvases. |
− | * Synfig Studio ("synfig-studio") provides the gui for the application. | + | * '''[http://download.tuxfamily.org/synfig/api/synfig-studio/annotated.html Synfig Studio]''' ("synfig-studio") provides the gui for the application. |
− | * See also: {{l|Dev: | + | * See also: {{l|Dev:How Synfig Works}} |
+ | = External libs = | ||
+ | == Synfig use several external libs== | ||
+ | * [https://developer.gnome.org/gtkmm-tutorial/2.24/ Gtkmm 2], some work on branchs has been started to reach [https://developer.gnome.org/gtk3/ Gtkmm 3] ([https://developer.gnome.org/gtk3/3.4/gtk-migrating-2-to-3.html Migrating 2to3]) | ||
+ | * [https://developer.gnome.org/gtkmm/2.24/namespaceGdk_1_1Cairo.html Cairo] (Cairo render mode) | ||
+ | * [http://freetype.org/ Freetype2] library (Text layer rendering in software render mode) | ||
+ | * [http://libxmlplusplus.sourceforge.net/ libxmlplusplus] (to parse the project files) | ||
+ | * [http://www.boost.org/doc/libs/1_54_0/doc/html/program_options.html Boost Program Options] (synfig cli) | ||
+ | * [http://www.mltframework.org/ MLT Framework - Media Loving Toolkit] (Sound Layer) | ||
+ | * [http://www.libpng.org/pub/png/libpng.html libpng] (load and write .png files) | ||
− | + | ==Optionally you will also need== | |
− | * | + | * [http://www.imagemagick.org/Magick++/ Magick++] the ImageMagick API (to build mod_magickpp, the magick++ module from synfig-core) |
− | * | + | * libavcodec (to build mod_libavcodec, from synfig-core) |
+ | * libmng (to build mod_mng, from synfig-core) | ||
+ | ... check the {{l|Dev:Build Instructions}} page for more detailed informations. | ||
− | + | =Complete coding tutorials= | |
+ | * {{l|Dev:Adding a Layer}} | ||
+ | * Adding a Panel, {{l|Dev:Adding a Panel - Part I|Part I}} and {{l|Dev:Adding a Panel - Part II|Part II}}. '''Note: these are highly out of date''' please note that the directory "gtkmm" has been renamed to "gui", Panel is now know has Dock. Also, some files were moved into subfolders (take a look inside the "gui/docks" folder for example). | ||
+ | * {{l|Dev:Adding a Sound notification}} | ||
+ | * {{l|Dev:Adding a Render progress bar}} | ||
+ | =Other links= | ||
+ | * [http://download.tuxfamily.org/synfig/api/index.html ETL, Synfig, SynfigStudio Api documentation] | ||
* [http://synfig.org/wiki/index.php?title=Special:PrefixIndex&from=&namespace=102 All Dev namespace pages] | * [http://synfig.org/wiki/index.php?title=Special:PrefixIndex&from=&namespace=102 All Dev namespace pages] | ||
* {{l|Dev:Translation|Translate the application}} | * {{l|Dev:Translation|Translate the application}} | ||
* {{l|Dev:Release|Release procedure}} | * {{l|Dev:Release|Release procedure}} | ||
* {{l|Dev:GoogleSoC|Google Summer of Code}} | * {{l|Dev:GoogleSoC|Google Summer of Code}} | ||
+ | * [http://sourceforge.net/p/synfig/mailman/synfig-devl/ Synfig Developer Mailing List] | ||
+ | * [https://github.com/synfig/synfig/issues Synfig Issue Tracker] | ||
+ | * [http://www.synfig.org/forums/viewtopic.php?f=2&t=6097 Genete free stuff...] | ||
+ | * {{l|Dev:C%2B%2B11_Migration|C++11 Migration}} |
Latest revision as of 20:14, 3 January 2019
The Developer Documentation part of this wiki is primarily for the following groups of people:
- Current developers of the code
- Future and potential developers
- Those interested in bug filing and generating ideas
Main pages
- Build Instructions
- Building Documentation
- Source code description and workflow
- Action System : structure of the action system, good entry-point into Synfig.
- IDE Setup under Linux | under Windows
- Roadmap
- Contribute to Code
- Translating
- Wish list
- Coding Conventions
- UI/UX Redesign
- ETL replacement
Synfig components
Synfig is divided into three main components: etl, synfig-core and synfig-studio.
- ETL is the extended template library. One of its most important components is the shared object class, which is the base class for most other parts of the application. Using "handles" to shared objects instead of c++ pointers provides garbage collection via reference counting.
- Synfig-core is the core/command-line (cli) renderer ("synfig") contains the document data structure for the application: valuenodes, layers, and canvases.
- Synfig Studio ("synfig-studio") provides the gui for the application.
- See also: How Synfig Works
External libs
Synfig use several external libs
- Gtkmm 2, some work on branchs has been started to reach Gtkmm 3 (Migrating 2to3)
- Cairo (Cairo render mode)
- Freetype2 library (Text layer rendering in software render mode)
- libxmlplusplus (to parse the project files)
- Boost Program Options (synfig cli)
- MLT Framework - Media Loving Toolkit (Sound Layer)
- libpng (load and write .png files)
Optionally you will also need
- Magick++ the ImageMagick API (to build mod_magickpp, the magick++ module from synfig-core)
- libavcodec (to build mod_libavcodec, from synfig-core)
- libmng (to build mod_mng, from synfig-core)
... check the Build Instructions page for more detailed informations.
Complete coding tutorials
- Adding a Layer
- Adding a Panel, Part I and Part II. Note: these are highly out of date please note that the directory "gtkmm" has been renamed to "gui", Panel is now know has Dock. Also, some files were moved into subfolders (take a look inside the "gui/docks" folder for example).
- Dev:Adding a Sound notification
- Dev:Adding a Render progress bar