Структура Фреймверка


В этой статье мы опишем файловую структуру фреймверка. Вы можете использовать ее как пример когда создаете Ваши собственные пакеты. Далее все имена указаны относительно папки в которую Вы распаковали фреймверк.



Структура папок

В режиме интеграции структура такая же как описано ниже, за тем исключением, что некоторые папки отсутствуют и все скомпилированные и промежуточные файлы размещаются в папке данных приложений(обычно это C:\ProgramData) в подпапке Nitisa\VERSION, где VERSION - установленная версия расширения(например, папка будет C:\ProgramData\Nitisa\10.0.0, если Вы установили релиз 10.0.0). Там будут папки bin и obj с такой же структурой как у соответствующих папок описанных ниже. Так же исходный код устанавливается в одну из папок для расширений Visual Studio. В любом случае, при использовании расширения для создания проектов, Вам не нужно волноваться об этом, так как все пути для заголовочных файлов и скомпилированных библиотек настраиваются автоматически и необходимые статические библиотеки компилируются так же автоматически.

Установка фреймверка Nitisa в виде простого скачивания архива с исходным кодом обладает такой структурой папок. Здесь показана полная структура папок после сборки всех доступных конфигураций-платформ. Некоторые папки создаются автоматически при сборке и отсутствуют сразу после распаковки.

  • Android содержит проекты ядра и пакетов для платформы Android.
    • Charts содержит проект пакета Графиков.
    • Dependencies содержит проекты для компиляции сторонних библиотек используемых в Android части фреймверка.
    • Extended содержит проект пакета Extended.
    • Ide содержит проект для пакета Ide.
    • Nitisa содержит проект ядра фреймверка.
    • NTL содержит проект Библиотеки Шаблонов Nitisa (Nitisa Template Library).
    • Platform содержит проект пакета Platform.
    • Standard содержит проект Стандартного Пакета.
  • bin содержит скомпилированные проекты, а именно статические библиотеки и исполняемые файлы Конструктора Форм.
    Эта папка создается автоматически при сборке решения Nitisa.
    • Android содержит двоичные файлы после сборки Android проектов.
      • ARM64 содержит скомпилированные файлы для 32-битной платформы ARM.
        • Debug содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
      • ARM64 содержит скомпилированные файлы для 64-битной платформы ARM.
        • Debug содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
      • x86 содержит 32-битные скомпилированные проекты.
        • Debug содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
      • x64 содержит 64-битные скомпилированные проекты.
        • Debug содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
    • Linux содержит скомпилированные проекты для Linux.
      • x86 содержит 32-битные скомпилированные проекты.
        • Debug содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
      • x64 содержит 64-битные скомпилированные проекты.
        • Debug содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
    • Windows содержит скомпилированные проекты для Windows.
      • x86 содержит 32-битные скомпилированные проекты.
        • Debug содержит отладочные скомпилированные проекты.
        • DebugRT содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
        • ReleaseRT содержит скомпилированные в режиме релиза проекты.
      • x64 содержит 64-битные скомпилированные проекты.
        • Debug содержит отладочные скомпилированные проекты.
        • DebugRT содержит отладочные скомпилированные проекты.
        • Release содержит скомпилированные в режиме релиза проекты.
        • ReleaseRT содержит скомпилированные в режиме релиза проекты.
  • Dependencies - папка с исходным кодом сторонних баблиотек.
  • FormBuilder - папка с исходным кодом визуального Конструктора Форм.
  • FormLayouts - папка со шкурками для Конструктора Форм.
  • Linux содержит проекты для платформы Linux.
    • Charts содержит проект пакета Графиков.
    • Dependencies содержит проекты для сторонних библиотек, использующихся в Linux части фреймверка.
    • Extended содержит проект пакета Extended.
    • Ide содержит проект для пакета Ide.
    • Nitisa содержит проект ядра фреймверка.
    • NTL содержит проект Библиотеки Шаблонов Nitisa (Nitisa Template Library).
    • Platform содержит проект пакета Platform.
    • Standard содержит проект Стандартного Пакета.
  • Nitisa - папка с ядром фреймверка.
    • BuiltInControls - здесь находятся все встроенные элементы управления.
      • DropDown содержит реализацию встроенного выпадающего списка.
      • MonthCalendar содержит реализацию встроенного календаря.
      • Scroll содержит реализацию встроенной прокрутки.
      • TextArea содержит реализацию встроенной текстовой области.
      • TextInput содержит реализацию встроенного поля ввода.
    • Core содержит все базовые и дефолтные классы, определения типов и полезные функции.
    • Image содержит обьекты для работы с картинками и графикой.
    • Interfaces содержит все интерфейсы ядра фреймверка.
    • Math содержит математические обьекты и функции.
    • Modules - это папка, в которой находятся все модули.
    • Package содержит весь код, относящийся к пакетам.
      • Core содержит общие классы и объекты.
      • EventLists содержит списки событий стандартных объектов.
      • Interfaces содержит интерфейсы относящиеся к пакетным сущностям.
      • Properties содержит классы с реализацией свойств.
      • PropertyHandlers содержит реализацию дефолтного обработчика свойств.
      • PropertyLists содержит списки свойств стандартных объектов
    • Render содержит вспомогательный код для рисования.
  • NTL содержит Библиотеку Шиблонов Nitisa (Nitisa Template Library).
  • obj содержит промежуточные файлы компиляции, сгенерированные во время сборки решения Nitisa.
  • Package.Charts содержит проект для компиляции dll(которая используется Редактором Форм) пакета Графиков.
  • Package.Extended содержит проект для сборки dll(которая используется Конструктором Форм) пакета Extended.
  • Package.Ide содержит проект для сборки dll(которая используется Конструктором Форм) пакета Ide.
  • Package.OpenGL содержит проект для компиляции dll(которая используется Редактором Форм) OpenGL пакета.
  • Package.Platform содержит проект для сборки dll (который используется Конструктором Форм) для пакета Platform.
  • Package.Standard содержит проект для компиляции dll(который используется Конструктором Форм) Стандартного пакета.
  • Packages - здесь располагаются все пакеты.
    • Charts - папка с пакетом Графиков.
      • Controls содержит элементы управления.
      • Core содержит базовые файлы пакета.
      • Forms содержит формы.
      • Interfaces содержит общие интерфейсы.
      • Package содержит описания всех сущностей пакета для Конструктора Форм.
        • Controls содержит описания элементов управления.
        • Core содержит некоторый общий код.
        • Forms содержит описания форм.
        • Interfaces содержит интерфейсы новых свойств.
        • Properties содержит новые свойства.
        • PropertyHandlers содержит реализацию обработчиков свойств.
    • Extended - Папка пакета Extended.
      • Package содержит описания всех сущностей пакета для Конструктора Форм.
    • Ide - папка с пакетом Ide.
      • Controls содержит элементы управления.
      • Package содержит описания всех сущностей пакета для Конструктора Форм.
        • Controls содержит описания элементов управления.
    • OpenGL - папка с пакетом OpenGL.
      • Controls содержит элементы управления.
      • Core содержит базовые файлы пакета.
      • Interfaces содержит общие интерфейсы.
      • Package содержит описания всех сущностей пакета для Конструктора Форм.
        • Controls содержит описания элементов управления.
        • Core содержит некоторый общий код.
        • Interfaces содержит интерфейсы новых свойств.
        • Properties содержит новые свойства.
        • PropertyHandlers содержит реализацию обработчиков свойств.
      • Primitives содержит классы для создания 2D и 3D примитивов.
        • 2D содержит классы 2D примитивов.
        • 3D содержит классы 3D примитивов.
      • Shaders содежит код вершинных и фрагментных шейдеров на языке GLSL.
    • Platform - папка с пакетом Platform.
      • Android содержит код для платформы Android.
      • Core содержит базовый код пакета.
      • Data содержит данные встроенные в исходный код.
      • Linux содержит код для работы с Linux.
      • OpenGL содержит код для работы с графикой через OpenGL и GLES.
      • Package содержит описания для Конструктора Форм.
      • Windows содержит код для платформы Windows.
    • Standard - папка Стандартного Пакета.
      • Components содержит компоненты.
      • Controls содержит элементы управления.
      • Forms содержит формы.
      • ListItems содержит реализацию элементов списка.
      • Package содержит описания всех сущностей пакета для Конструктора Форм.
        • Components содержит описания компонентов.
        • Controls содержит описания элементов управления.
        • Core содержит некоторый общий код.
        • Forms содержит описания форм.
        • Interfaces содержит интерфейсы новых свойств.
        • ListItems содержит описания элементов списка.
        • Properties содержит новые свойства.
        • PropertyHandlers содержит реализацию обработчиков свойств.

Важное замечание касательно папки Packages. Мы рекомендуем устанавливать исходный код всех пакетов в нее. Однако это не обязательно. Пакеты так же могут быть установлены в их собственные папки. В этом случае Вам придется добавить эти папки во включаемые пути Вашего проекта или включать их по абсолютному пути(не очень хорошая идея).

Зависимости(Android)

Часть проекта под Android зависит от нескольких сторонних библиотек, которые размещаются в папке Dependencies. Это

  • FreeType библиотека используется для загрузки шрифтов.
  • libjpeg библиотека используется за работы с JPEG картинками.
  • libpng библиотека используется для работы с PNG картинками.

Зависимости(Linux)

Linux часть проекта зависит от нескольких сторонних библиотек, которые нужно установить на машине с Linux, на которой будет происходить сборка. Вот они

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

Имена могут отличаться на разных линуксах. Используйте поиск, если пакетов с именами указанными выше нет для Вашей Linux.