Difference between revisions of "Branding"

From FreeCAD Documentation
Jump to: navigation, search
m ([[ | ]])
 
(33 intermediate revisions by 12 users not shown)
Line 1: Line 1:
This article describes the '''Branding''' of FreeCAD. Branding means to start your own application on base of FreeCAD. That can be only your on executable or splash screen till a complete reworked program. On base of the flexible architecture of FreeCAD its easy to use it as base for your own special purpose program.
+
<languages/>
 +
<translate>
 +
<!--T:11-->
 +
{{docnav
 +
|[[Continuous Integration|Continuous Integration]]
 +
|[[Localisation|Localisation]]
 +
}}
  
== General ==
+
<!--T:1-->
Most of the branding is done in the '''MainCmd.cpp''' or ''MainGui.cpp'''. This Projects generates the executable files of FreeCAD. To make your own Brand just copy the Main or MainGui projets and give the executable an own name, e.g. FooApp.exe.  
+
This article describes the '''Branding''' of FreeCAD. Branding means to start your own application on base of FreeCAD. That can be only your own executable or [[Splash screen|splash screen]] till a complete reworked program. On base of the flexible architecture of FreeCAD it's easy to use it as base for your own special purpose program.
 +
 
 +
=== General === <!--T:2-->
 +
Most of the branding is done in the {{FileName|MainCmd.cpp}} or {{FileName|MainGui.cpp}}. These Projects generate the executable files of FreeCAD. To make your own Brand just copy the Main or MainGui projects and give the executable an own name, e.g. {{FileName|FooApp.exe}}.  
 
The most important settings for a new look can be made in one place in the main() function. Here is the code section that controls the branding:
 
The most important settings for a new look can be made in one place in the main() function. Here is the code section that controls the branding:
  
 +
</translate>
 +
<!-- WARNING Do not modify the <syntaxhighligh> tag because of "{}" or pipe characters "|" included in the source code of the macro -->
 +
<syntaxhighlight>
 
  int main( int argc, char ** argv )
 
  int main( int argc, char ** argv )
 
  {
 
  {
 
   // Name and Version of the Application
 
   // Name and Version of the Application
   App::Application::Config()["ExeName"] = "FooApp.exe";
+
   App::Application::Config()["ExeName"] = "FooApp";
 
   App::Application::Config()["ExeVersion"] = "0.7";
 
   App::Application::Config()["ExeVersion"] = "0.7";
 
+
 
   // set the banner (for loging and console)
 
   // set the banner (for loging and console)
   App::Application::Config()["ConsoleBanner"] = sBanner;
+
   App::Application::Config()["CopyrightInfo"] = sBanner;
   App::Application::Config()["AppIcon"] = "FCIcon";
+
   App::Application::Config()["AppIcon"] = "FooAppIcon";
   App::Application::Config()["SplashPicture"] = "FooAppSplasher";
+
   App::Application::Config()["SplashScreen"] = "FooAppSplasher";
 
   App::Application::Config()["StartWorkbench"] = "Part design";
 
   App::Application::Config()["StartWorkbench"] = "Part design";
   //App::Application::Config()["HiddenDockWindow"] = "Property editor";
+
   App::Application::Config()["HiddenDockWindow"] = "Property editor";
 
   App::Application::Config()["SplashAlignment" ] = "Bottom|Left";
 
   App::Application::Config()["SplashAlignment" ] = "Bottom|Left";
 
   App::Application::Config()["SplashTextColor" ] = "#000000"; // black
 
   App::Application::Config()["SplashTextColor" ] = "#000000"; // black
 
+
 +
  // Inits the Application
 
   App::Application::Config()["RunMode"] = "Gui";
 
   App::Application::Config()["RunMode"] = "Gui";
  // Inits the Application
 
 
   App::Application::init(argc,argv);
 
   App::Application::init(argc,argv);
 
+
 
   Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
 
   Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
 
   
 
   
 
   Gui::Application::initApplication();
 
   Gui::Application::initApplication();
 
 
   Gui::Application::runApplication();
 
   Gui::Application::runApplication();
 
 
   App::Application::destruct();
 
   App::Application::destruct();
 
+
 
   return 0;
 
   return 0;
}
+
}
 
+
</syntaxhighlight>
The first command in line 2 defines the Program name. This is not the executable name, which can be changed by renaming or by compiler settings, but the name that is displayed in the task bar on windows or in the program list on Unix systems.
+
<translate>
 
 
Line 5 defines a text string that contains the console banner that is shown on startup. Lines 6 and 7 define the program icon image and the [[splash screen]] image.
 
 
 
If you wonder about the <nowiki>"[Non-Commercial]"</nowiki> text in the window title this is due to the missing licence for [[wikipedia:Qt (toolkit)|Qt]]. See the [[Licence]] article for more info on that.
 
  
== Images ==
+
<!--T:3-->
All image resources are compiled into FreeCAD. This reduces delayed loading and keeps the installation compact. The images are included in XPM-Format which is basically a text format that uses C-syntax. You can basically draw this images with a text editor, but it is more comfortable to create the images with your favorite graphics program and convert it later to XPM format.  
+
The first Config entry defines the program name. This is not the executable name, which can be changed by renaming or by compiler settings, but the name that is displayed in the task bar on windows or in the program list on Unix systems.
  
The GNU image program [http://gimp.org/ Gimp] can save XPM file.
+
<!--T:4-->
 +
The next lines define the Config entries of your FooApp Application. A description of the Config and its entries you find in [[Start up and Configuration]].
  
For conversion you can use the ''[[ImageConv]]'' tool wich is included with freecad. You can find it under
+
=== Images === <!--T:5-->
 +
Image resources are compiled into FreeCAD using [http://qt-project.org/doc/qt-4.8/resources.html Qt's resource system]. Therefore you have to write a {{FileName|.qrc}} file, an XML-based file format that lists image files on the disk but also any other kind of resource files. To load the compiled resources inside the application you have to add a line
  
  /trunk/src/Tools/ImageTools/ImageConv
+
</translate>
 +
{{Code|code=
 +
  Q_INIT_RESOURCE(FooApp);
 +
}}
 +
<translate>
  
It can not only convert images but also automatically update the ''BmpFactoryIcons.cpp'' file, where the images are registered. The typical usage is as simple like the following example:
+
<!--T:6-->
 +
into the main() function. Alternatively, if you have an image in XPM format you can directly include it into your {{FileName|main.cpp}} and add the following line to register it:
  
ImageConv -i InputImage.png -o OutputImage.xpm
+
</translate>
 
+
{{Code|code=
This converts the file ''InputImage.png'' in XPM-format and writes the result to file ''OutputImage.xpm''.
 
 
 
The line:
 
 
 
  Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
 
  Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
 +
}}
 +
<translate>
  
in the main() then include the image in the BitmapFactory of FreeCAD.
+
=== Branding XML === <!--T:7-->
 
+
In FreeCAD there is also a method supported without writing a customized main() function. For this method you must write a file name called {{FileName|branding.xml}} and put it into the installation directory of FreeCAD. Here is an example with all supported tags:
=== Icons ===
 
The main application icon ''FCIcon'' that appears in window titles and other places is defined in
 
 
 
/trunk/src/Gui/Icons/images.cpp
 
 
 
and starts with the line
 
 
 
<nowiki>static const char *FCIcon[]={</nowiki>
 
  
Replace it with your favourite icon, recompile freecad and the next step to create your own brand is done. There are many other icons in this file that you might change to your gusto.
+
</translate>
 +
<!-- WARNING Do not modify the <syntaxhighligh> tag because of "{}" or pipe characters "|" included in the source code of the macro -->
 +
<syntaxhighlight>
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<Branding>
 +
<Application>FooApp</Application>
 +
<WindowTitle>Foo App in title bar</WindowTitle>
 +
<BuildVersionMajor>1</BuildVersionMajor>
 +
<BuildVersionMinor>0</BuildVersionMinor>
 +
<BuildRevision>1234</BuildRevision>
 +
<BuildRevisionDate>2014/1/1</BuildRevisionDate>
 +
<CopyrightInfo>(c) My copyright</CopyrightInfo>
 +
<MaintainerUrl>Foo App URL</MaintainerUrl>
 +
<ProgramLogo>Path to logo (appears in bottom right corner)</ProgramLogo>
 +
<WindowIcon>Path to icon file</WindowIcon>
 +
<ProgramIcons>Path to program icons</ProgramIcons>
 +
<SplashScreen>splashscreen.png</SplashScreen>
 +
<SplashAlignment>Bottom|Left</SplashAlignment>
 +
<SplashTextColor>#ffffff</SplashTextColor>
 +
<SplashInfoColor>#c8c8c8</SplashInfoColor>
 +
<StartWorkbench>PartDesignWorkbench</StartWorkbench>
 +
</Branding>
 +
</syntaxhighlight>
 +
<translate>
  
If you need to add new icons, you have to register it in
+
<!--T:8-->
/trunk/src/Gui/Icons/BmpFactoryIcons.cpp
+
All of the listed tags are optional.
so that you can access from FreeCAD.
 
  
=== Splash Screen ===
+
<!--T:9-->
The [[splash screen]] image, that is also used as background for the ''About Box'' is located in the file
+
{{docnav
/trunk/src/Gui/Icons/developers.h
+
|[[Continuous Integration|Continuous Integration]]
and starts with the line
+
|[[Localisation|Localisation]]
<nowiki>static const char* const splash_screen[] = {</nowiki>
+
}}
Replace the contents of this static array with an XPM image of your choice to make FreeCAD looking more how you like it.
 
  
=== Background Image ===
+
<!--T:12-->
The background image appears, when no document window is open. Like the splash screen it is defined in ''developers.h'' in the section starting with:
+
{{Userdocnavi}}
static const char* const background[]={
 
You should choose a low contrast image for the background. Otherwise it might irritate the user.
 
  
{{Devdocnavi}}
+
<!--T:10-->
 +
[[Category:Developer Documentation]]
 +
</translate>
 +
{{clear}}

Latest revision as of 11:15, 4 November 2019

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎română • ‎русский • ‎svenska • ‎Türkçe

This article describes the Branding of FreeCAD. Branding means to start your own application on base of FreeCAD. That can be only your own executable or splash screen till a complete reworked program. On base of the flexible architecture of FreeCAD it's easy to use it as base for your own special purpose program.

General

Most of the branding is done in the MainCmd.cpp or MainGui.cpp. These Projects generate the executable files of FreeCAD. To make your own Brand just copy the Main or MainGui projects and give the executable an own name, e.g. FooApp.exe. The most important settings for a new look can be made in one place in the main() function. Here is the code section that controls the branding:

 int main( int argc, char ** argv )
 {
   // Name and Version of the Application
   App::Application::Config()["ExeName"] = "FooApp";
   App::Application::Config()["ExeVersion"] = "0.7";
 
   // set the banner (for loging and console)
   App::Application::Config()["CopyrightInfo"] = sBanner;
   App::Application::Config()["AppIcon"] = "FooAppIcon";
   App::Application::Config()["SplashScreen"] = "FooAppSplasher";
   App::Application::Config()["StartWorkbench"] = "Part design";
   App::Application::Config()["HiddenDockWindow"] = "Property editor";
   App::Application::Config()["SplashAlignment" ] = "Bottom|Left";
   App::Application::Config()["SplashTextColor" ] = "#000000"; // black
 
   // Inits the Application 
   App::Application::Config()["RunMode"] = "Gui";
   App::Application::init(argc,argv);
 
   Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);
 
   Gui::Application::initApplication();
   Gui::Application::runApplication();
   App::Application::destruct();
 
   return 0;
 }

The first Config entry defines the program name. This is not the executable name, which can be changed by renaming or by compiler settings, but the name that is displayed in the task bar on windows or in the program list on Unix systems.

The next lines define the Config entries of your FooApp Application. A description of the Config and its entries you find in Start up and Configuration.

Images

Image resources are compiled into FreeCAD using Qt's resource system. Therefore you have to write a .qrc file, an XML-based file format that lists image files on the disk but also any other kind of resource files. To load the compiled resources inside the application you have to add a line

Q_INIT_RESOURCE(FooApp);

into the main() function. Alternatively, if you have an image in XPM format you can directly include it into your main.cpp and add the following line to register it:

Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);

Branding XML

In FreeCAD there is also a method supported without writing a customized main() function. For this method you must write a file name called branding.xml and put it into the installation directory of FreeCAD. Here is an example with all supported tags:

 <?xml version="1.0" encoding="utf-8"?>
 <Branding>
 	<Application>FooApp</Application>
 	<WindowTitle>Foo App in title bar</WindowTitle>
 	<BuildVersionMajor>1</BuildVersionMajor>
 	<BuildVersionMinor>0</BuildVersionMinor>
 	<BuildRevision>1234</BuildRevision>
 	<BuildRevisionDate>2014/1/1</BuildRevisionDate>
 	<CopyrightInfo>(c) My copyright</CopyrightInfo>
 	<MaintainerUrl>Foo App URL</MaintainerUrl>
 	<ProgramLogo>Path to logo (appears in bottom right corner)</ProgramLogo>
 	<WindowIcon>Path to icon file</WindowIcon>
 	<ProgramIcons>Path to program icons</ProgramIcons>
 	<SplashScreen>splashscreen.png</SplashScreen>
 	<SplashAlignment>Bottom|Left</SplashAlignment>
 	<SplashTextColor>#ffffff</SplashTextColor>
 	<SplashInfoColor>#c8c8c8</SplashInfoColor>
 	<StartWorkbench>PartDesignWorkbench</StartWorkbench>
 </Branding>

All of the listed tags are optional.