Framework Structure


In this article we describe the framework 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 installed the framework.



Directory structure

In the integration with Visual Studio 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\10.0.0 if you install 10.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.
    • NTL contains the Nitisa Template Library project.
    • Platform contains the Platform package 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.
      • ARM contains 32-bit ARM binaries.
        • Debug contains debug binaries.
        • Release contains release binaries.
      • ARM64 contains 64-bit ARM binaries.
        • Debug contains debug binaries.
        • Release contains release binaries.
      • 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.
    • NTL contains the Nitisa Template Library project.
    • Platform contains the Platform package project.
    • Standard contains project for the Standard package.
  • Nitisa - the framework core directory.
    • BuiltInControls - here is all default built-in controls are located.
      • DropDown contains built-in drop down implementation.
      • MonthCalendar contains built-in month calendar implementation.
      • Scroll contains built-in scroll implementation.
      • TextArea contains built-in text area implementation.
      • TextInput contains built-in text input implementation.
    • Core contains all base and default classes, types definitions and useful functions.
    • Db contains all database related features.
    • Image contains objects for working with images.
    • Interfaces contains all core interfaces used by framework.
    • Math contains mathematical subroutines.
    • Modules is a directory where all modules are located.
    • Package contains all package related code.
      • Core contains common classes and object.
      • EventLists contains event lists for standard objects.
      • Interfaces contains interfaces related to package entities.
      • Properties contains classes implementing properties.
      • PropertyHandlers contains default property handler implementation.
      • PropertyLists contains property lists for standard objects.
    • Render contains helper code for rendering.
  • NTL contains Nitisa Template Library.
  • 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.Platform contains project for building dll(which is used by Form Builder) for Platform 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 descriptions 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.
      • Primitives contains 2D and 3D geometry primitive construction classes.
        • 2D contains 2D primitive classes.
        • 3D contains 3D primitive classes.
      • Shaders contains GLSL vertex and fragment shader code.
    • Platform - Platform package directory.
      • Android contains Android platform code.
      • Core contains package core and commonly used files.
      • Data contains data embedded into source code.
      • Linux contains Linux platform code.
      • OpenGL contains code for working with OpenGL and GLES native graphics.
      • Package contains descriptions for Form Builder.
      • Windows contains Windows platform code.
    • Standard - standard package directory.
      • 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 descriptions of forms.
        • Interfaces contains interfaces of new properties.
        • ListItems contains descriptions of list items.
        • Properties contains new properties.
        • PropertyHandlers contains implementation of property handlers.

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 paths 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.