Framework Structure


In this article we describe the framefork core and Standard Package directory structure. You may take it as example when creating your own packages. The following are the names relative to the directory where you have the framework installed.



Directory structure

In the integration mode the structure is the same as described below except for the removed in such a case some folders and both binaries and intermediary files are placed in the application data folder(usually C:\ProgramData) inside Nitisa\VERSION subfolder, where VERSION is the installed extension version(for example the directory will be C:\ProgramData\Nitisa\9.0.0 if you install 9.0.0 release). There will be bin and obj subdirectories inside with the same structure as corresponding ones described below. The source code is also installed in one of Visual Studio extensions folder. Anyway, when using extension to create projects you don't have to worry about it as all include and library directories are set automatically to the correct ones and needed static libraries are built automatically as well.

The Nitisa framework standalone installation has the following directory structure. This is a complete directory structure after building all configurations for all available platforms. Some folders are created automatically and do not exist after unpacking.

  • Android contains projects for core and packages for Android platform.
    • Charts contains the Charts package project.
    • Dependencies contains third-party libraries project uses in the Android part of the framework.
    • Extended contains the Extended package project.
    • Ide contains the Ide package project.
    • Nitisa contains the framework Core project.
    • Standard contains the Standard package project.
  • bin contains binary outputs like static libraries and Form Builder executable.
    This folder is created automatically when you build Nitisa solution.
    • Android contains Android binaries after building android projects.
      • x86 contains 32-bit binaries.
        • Debug contains debug binaries.
        • Release contains release binaries.
      • x64 contains 64-bit binaries.
        • Debug contains debug binaries.
        • Release contains release binaries.
    • Linux contains Linux binaries after building linux projects projects.
      • x86 contains 32-bit binaries.
        • Debug contains debug binaries.
        • Release contains release binaries.
      • x64 contains 64-bit binaries.
        • Debug contains debug binaries.
        • Release contains release binaries.
    • Windows contains Windows binaries after building windows projects.
      • x86 contains 32-bit binaries.
        • Debug contains debug binaries.
        • DebugRT contains debug binaries.
        • Release contains release binaries.
        • ReleaseRT contains release binaries.
      • x64 contains 64-bit binaries.
        • Debug contains debug binaries.
        • DebugRT contains debug binaries.
        • Release contains release binaries.
        • ReleaseRT contains release binaries.
  • Dependencies - directory where third-party libraries source code is placed.
  • FormBuilder - directory where Visual Form Builder source code is.
  • FormLayouts - directory with the Form Builder's form layouts.
  • Linux contains projects for Linux platform.
    • Charts contains the Charts package project.
    • Dependencies contains third-party libraries project uses in the Linux part of the framework.
    • Extended contains project for the Extended package.
    • Ide contains project for the Ide package.
    • Nitisa contains the framework Core project.
    • Standard contains project for the Standard package.
  • Nitisa - the framework core directory.
    • BuiltInControls - here is all default built-in controls are located.
    • Core contains all base and default classes, types definitions and useful functions.
    • Helpers is a directory where all helpers are located.
    • Interfaces contains all core interfaces used by framework.
    • Modules contains the framework modules.
    • Properties is a directory where all default often used properties are located.
    • PropertyHandlers contains a default empty property handler implementation.
  • obj contains intermediary files generated during Nitisa solution building.
  • Package.Charts contains project for building dll(which is used by Form Builder) for Charts package.
  • Package.Extended contains project for building dll(which is used by Form Builder) for Extended package.
  • Package.Ide contains project for building dll(which is used by Form Builder) for Ide package.
  • Package.OpenGL contains project for building dll(which is used by Form Builder) for OpenGL package.
  • Package.Standard contains project for building dll(which is used by Form Builder) for Standard package.
  • Packages - a directory where all packages should be.
    • Charts - Charts package directory.
      • Controls contains controls.
      • Core contains package core files.
      • Forms contains forms.
      • Interfaces contains common interfaces.
      • Package contains description of all package entities for the Form Builder.
        • Controls contains descriptions of controls.
        • Core contains some common code.
        • Forms contains descrptions of forms.
        • Interfaces contains interfaces of new properties.
        • Properties contains new properties.
        • PropertyHandlers contains implementation of property handlers.
    • Extended - Extended package directory.
      • Package contains description of all package entities for the Form Builder.
    • Ide - Ide package directory.
      • Controls contains controls.
      • Package contains description of all package entities for the Form Builder.
        • Controls contains descriptions of controls.
    • OpenGL - OpenGL package directory.
      • Controls contains controls.
      • Core contains package core files.
      • Interfaces contains common interfaces.
      • Package contains description of all package entities for the Form Builder.
        • Controls contains descriptions of controls.
        • Core contains some common code.
        • Interfaces contains interfaces of new properties.
        • Properties contains new properties.
        • PropertyHandlers contains implementation of property handlers.
      • Shaders contains GLSL vertex and fragment shader code.
    • Standard - standard package directory.
      • BuiltInControls - here is all default built-in controls are located.
      • Components contains components.
      • Controls contains controls.
      • Forms contains forms.
      • ListItems contains list items.
      • Package contains description of all package entities for the Form Builder.
        • Components contains descriptions of components.
        • Controls contains descriptions of controls.
        • Core contains some common code.
        • Forms contains descrptions of forms.
        • Interfaces contains interfaces of new properties.
        • ListItems contains descriptions of list items.
        • Properties contains new properties.
        • PropertyHandlers contains implementation of property handlers.
        • Renderers contains descriptions of renderers.
      • Platform contains a platform-specific code.
        • Android contains implementation of platform dependent classes for Android platform.
          • OpenGL contains OpenGL renderer implementation.
        • Base contains implementation of basic common features.
        • Data contains static data included into the Package.
        • Linux contains implementation of platform dependent classes for Linux platform.
          • OpenGL contains OpenGL renderer implementation.
        • OpenGL contains OpenGL header files.
        • Windows contains Windows operating system specific implementation.
          • OpenGL contains OpenGL renderer implementation.

Important note about Packages directory. We recommend install a source code of packages here but it is not mandatory. Packages may also be installed in their own directories. In this case you will need to add those directories to your project include pathes or to include them by absolute path(which is a bad idea).

Dependencies(Android)

The Android part of the project depends on several third-party libraries which are placed inside Dependencies directory. They are

  • FreeType library used for loading fonts.
  • libjpeg library used for loading JPEG images.
  • libpng library used for loading PNG images.

Dependencies(Linux)

The Linux part of the project depends on several third-party libraries which should be installed on the Linux machine you use for building. They are

  • libz-dev
  • libjpeg-dev
  • libpng16-16
  • libfreetype6-dev
  • mesa-common-dev

The names can be different on different linuxes. Please use search if there are no available for your Linux packages with the names above.