From bc04ae543669f86a9dd5d4dcffea3893eca9a7a5 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Wed, 20 Jan 2021 21:30:41 -0800 Subject: [PATCH 1/3] Save current work --- CMakeLists.txt | 4 +- apps/CMakeLists.txt | 2 +- apps/Editor/CMakeLists.txt | 4 ++ .../src/main_Editor.cpp} | 2 +- apps/Struct/CMakeLists.txt | 4 -- library/CMakeLists.txt | 2 +- library/{Struct => Editor}/CMakeLists.txt | 0 library/Editor/README.MD | 23 ++++++++ library/Editor/include/Editor/Document.h | 8 +++ library/Editor/include/Editor/DocumentType.h | 10 ++++ library/Editor/include/Editor/Editor.h | 21 ++++++++ library/Editor/include/Editor/IDocument.h | 0 library/Editor/include/Editor/IEditor.h | 25 +++++++++ library/Editor/src/Editor.cpp | 1 + .../{Struct => Editor}/test/CMakeLists.txt | 0 .../test/src/test_Editor.cpp} | 4 +- library/Struct/README.MD | 52 ------------------- library/Struct/include/Struct/Struct.h | 2 - library/Struct/src/Struct.cpp | 1 - scripts/deploy.sh | 4 +- 20 files changed, 101 insertions(+), 68 deletions(-) create mode 100644 apps/Editor/CMakeLists.txt rename apps/{Struct/src/main_Struct.cpp => Editor/src/main_Editor.cpp} (70%) delete mode 100644 apps/Struct/CMakeLists.txt rename library/{Struct => Editor}/CMakeLists.txt (100%) create mode 100644 library/Editor/README.MD create mode 100644 library/Editor/include/Editor/Document.h create mode 100644 library/Editor/include/Editor/DocumentType.h create mode 100644 library/Editor/include/Editor/Editor.h create mode 100644 library/Editor/include/Editor/IDocument.h create mode 100644 library/Editor/include/Editor/IEditor.h create mode 100644 library/Editor/src/Editor.cpp rename library/{Struct => Editor}/test/CMakeLists.txt (100%) rename library/{Struct/test/src/test_Struct.cpp => Editor/test/src/test_Editor.cpp} (75%) delete mode 100644 library/Struct/README.MD delete mode 100644 library/Struct/include/Struct/Struct.h delete mode 100644 library/Struct/src/Struct.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b91b16e..eba2aba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,9 +20,9 @@ option(ENABLE_DOXYGEN "Build documentation" OFF) # ================ Project ======================== # Project name and a few useful settings -project(struct +project(editor VERSION 0.0.$ENV{TRAVIS_BUILD_NUMBER} - DESCRIPTION "OTUS c++ homeworks: struct" + DESCRIPTION "OTUS c++ homeworks: editor" LANGUAGES CXX ) diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 21a8617..b8a4d1c 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(Struct) \ No newline at end of file +add_subdirectory(Editor) \ No newline at end of file diff --git a/apps/Editor/CMakeLists.txt b/apps/Editor/CMakeLists.txt new file mode 100644 index 0000000..5effe1f --- /dev/null +++ b/apps/Editor/CMakeLists.txt @@ -0,0 +1,4 @@ +add_and_install_project_app(editor + DEPEND + lib_Editor +) \ No newline at end of file diff --git a/apps/Struct/src/main_Struct.cpp b/apps/Editor/src/main_Editor.cpp similarity index 70% rename from apps/Struct/src/main_Struct.cpp rename to apps/Editor/src/main_Editor.cpp index 7b393bc..4e1bf82 100644 --- a/apps/Struct/src/main_Struct.cpp +++ b/apps/Editor/src/main_Editor.cpp @@ -1,7 +1,7 @@ /** * \brief Main application */ -#include +#include int main() { return 0; diff --git a/apps/Struct/CMakeLists.txt b/apps/Struct/CMakeLists.txt deleted file mode 100644 index 0e04147..0000000 --- a/apps/Struct/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -add_and_install_project_app(matrix - DEPEND - lib_Struct -) \ No newline at end of file diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 21a8617..b8a4d1c 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory(Struct) \ No newline at end of file +add_subdirectory(Editor) \ No newline at end of file diff --git a/library/Struct/CMakeLists.txt b/library/Editor/CMakeLists.txt similarity index 100% rename from library/Struct/CMakeLists.txt rename to library/Editor/CMakeLists.txt diff --git a/library/Editor/README.MD b/library/Editor/README.MD new file mode 100644 index 0000000..61eacde --- /dev/null +++ b/library/Editor/README.MD @@ -0,0 +1,23 @@ +# OTUS course: "C++ Developer. Professional" + +## Домашнее Задание 4 + +Спроектировать простейший графический векторный редактор. Подготовить макеты классов, отражающих структуру будущего проекта. + +Функционал для макетирования следующий: - создание нового документа + +- импорт документа из файла +- экспорт документа в файл +- создание графического примитива - удаление графического примитива + +Основной упор сделать на шаблон контроллера (MVC) и полиморфизм. Функции, являющиеся обработчиками GUI, собрать в одном файле с функцией `main`. + +Внимание должно быть сосредоточено на декларациях, реализация только в крайнем случае для минимальной демонстрации необходимых вызовов. Проект должен компилироваться, все заголовки должны пройти стадию компиляции. + +Задание считается выполненным успешно, если все файлы прошли стадию компиляции, все классы охвачены диаграммами, код успешно прошел анализ. +Дополнительные рекомендации + +1. Заложить в интерфейсы использование умных указателей, тем самым решив вопрос владения объектами. +2. Помнить про принцип единственности ответственности, разделить код на логические модули (классы, функции). +3. Избегать дублирования кода. + \ No newline at end of file diff --git a/library/Editor/include/Editor/Document.h b/library/Editor/include/Editor/Document.h new file mode 100644 index 0000000..baeb731 --- /dev/null +++ b/library/Editor/include/Editor/Document.h @@ -0,0 +1,8 @@ +#pragma once + +#include + + +class BMP : public IDocument {}; + +class JPG : public IDocument {}; \ No newline at end of file diff --git a/library/Editor/include/Editor/DocumentType.h b/library/Editor/include/Editor/DocumentType.h new file mode 100644 index 0000000..e9164f4 --- /dev/null +++ b/library/Editor/include/Editor/DocumentType.h @@ -0,0 +1,10 @@ +#pragma once + +/** + * @brief Supported type of documents for Graphic Editor + * + */ +enum class DocumentType { + PGN, + JPG +}; \ No newline at end of file diff --git a/library/Editor/include/Editor/Editor.h b/library/Editor/include/Editor/Editor.h new file mode 100644 index 0000000..7587ca3 --- /dev/null +++ b/library/Editor/include/Editor/Editor.h @@ -0,0 +1,21 @@ +/** + * \file Editor.h + * \brief Declaration of Simple Vector Graphics Editor + * \version 0.1 + * + * \copyright Copyright (c) 2021 + * + */ + +#pragma once + +#include + +class GraphicEditor: public IEditor { +public: + void CreateNewDocument() override; + void ImportDocument() override; + void ExportDocument() override; + void CreateGraphicalPrimitive() override; + void RemoveGraphicalPrimitive() override; +}; \ No newline at end of file diff --git a/library/Editor/include/Editor/IDocument.h b/library/Editor/include/Editor/IDocument.h new file mode 100644 index 0000000..e69de29 diff --git a/library/Editor/include/Editor/IEditor.h b/library/Editor/include/Editor/IEditor.h new file mode 100644 index 0000000..d8d75d7 --- /dev/null +++ b/library/Editor/include/Editor/IEditor.h @@ -0,0 +1,25 @@ +/** + * \file IEditor.h + * \author Vladislav Kozlov + * \brief Interface for Editor + * \version 0.1 + * + * @copyright Copyright (c) 2021 + * + */ + +#pragma once + +#include + +class IEditor { +public: + virtual void CreateNewDocument(const std::string& path) = 0; + virtual void ImportDocument() = 0; + virtual void ExportDocument() = 0; + virtual void CreateGraphicalPrimitive() = 0; + virtual void RemoveGraphicalPrimitive() = 0; + + virtual ~IEditor(); +private: +}; \ No newline at end of file diff --git a/library/Editor/src/Editor.cpp b/library/Editor/src/Editor.cpp new file mode 100644 index 0000000..f32ef4d --- /dev/null +++ b/library/Editor/src/Editor.cpp @@ -0,0 +1 @@ +#include \ No newline at end of file diff --git a/library/Struct/test/CMakeLists.txt b/library/Editor/test/CMakeLists.txt similarity index 100% rename from library/Struct/test/CMakeLists.txt rename to library/Editor/test/CMakeLists.txt diff --git a/library/Struct/test/src/test_Struct.cpp b/library/Editor/test/src/test_Editor.cpp similarity index 75% rename from library/Struct/test/src/test_Struct.cpp rename to library/Editor/test/src/test_Editor.cpp index e8e8c20..7299f00 100644 --- a/library/Struct/test/src/test_Struct.cpp +++ b/library/Editor/test/src/test_Editor.cpp @@ -1,8 +1,8 @@ -#include +#include #include -TEST(Struct, DummyTest) +TEST(Editor, DummyTest) { ASSERT_TRUE(true); } diff --git a/library/Struct/README.MD b/library/Struct/README.MD deleted file mode 100644 index 91ea7dd..0000000 --- a/library/Struct/README.MD +++ /dev/null @@ -1,52 +0,0 @@ -# OTUS course: "C++ Developer. Professional" - -## Домашнее Задание 5 - -В это самостоятельной работе создаём проект бесконечной разряженной матрицы с использованием паттернов проектирования, не забываем про принципы и документацию. -Спроектировать 2-мерную разреженную бесконечную матрицу, заполненную значениями по умолчанию. Матрица должна хранить только занятые элементы - значения которых хотя бы раз присваивались. Присвоение в ячейку значения по умолчанию освобождает ячейку. -Необходимо уметь отвечать на вопрос - сколько ячеек реально занято? -Необходимо уметь проходить по всем занятым ячейкам. Порядок не имеет значения. Возвращается позиция ячейки и ее значение. -При чтении элемента из свободной ячейки возвращать значение по умолчанию. - -## Пример - -```c++ -// бесконечная матрица int заполнена значениями -1 -Matrix matrix; assert(matrix.size() == -auto a = matrix[0][0]; -assert(a == -1); -assert(matrix.size() == 0); // все ячейки свободны -matrix[100][100] = 314; -assert(matrix[100][100] == 314); -assert(matrix.size() == 1); - -// выведется одна строка -// 100100314 -for(auto c: matrix) { - int x; - int y; - int v; - std::tie(x, y, v) = c; - std::cout << x << y << v << std::endl; -} -``` - -При запуске программы необходимо создать матрицу с пустым значением 0, заполнить главную диагональ матрицы (от [0,0] до [9,9]) значениями от 0 до 9. - -Второстепенную диагональ (от [0,9] до [9,0]) значениями от 9 до 0. - -Необходимо вывести фрагмент матрицы от [1,1] до [8,8]. Между столбцами пробел. Каждая строка матрицы на новой строке консоли. -Вывести количество занятых ячеек. - -Вывести все занятые ячейки вместе со своими позициями. Опционально реализовать N-мерную матрицу. - -Опционально реализовать каноническую форму оператора `=`, допускающую выражения `((matrix[100][100] = 314) = 0) = 217` - -## Самоконтроль -- индексация оператором `[]` -- количество занятых ячеек должно быть 18 -- пакет `matrix` с бинарным файлом `matrix` опубликован на bintray - -## Проверка - -Задание считается выполненным успешно, если после анализа кода, установки пакета и запуска приложения появился фрагмент матрицы, количество ячеек и список всех значений с позициями. \ No newline at end of file diff --git a/library/Struct/include/Struct/Struct.h b/library/Struct/include/Struct/Struct.h deleted file mode 100644 index a87ed57..0000000 --- a/library/Struct/include/Struct/Struct.h +++ /dev/null @@ -1,2 +0,0 @@ -// empty struct for future projects -#pragma once \ No newline at end of file diff --git a/library/Struct/src/Struct.cpp b/library/Struct/src/Struct.cpp deleted file mode 100644 index eabc7f4..0000000 --- a/library/Struct/src/Struct.cpp +++ /dev/null @@ -1 +0,0 @@ -#include \ No newline at end of file diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 5e89cac..b3cc6bd 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,5 +1,5 @@ -project=Struct -binary_name=struct +project=Editor +binary_name=editor cmake . -DENABLE_GTEST=ON -DENABLE_DOXYGEN=ON # build lib cmake --build . --target lib_$project From a1fd9cbaf23a216aa165d510237c3eac9e12401a Mon Sep 17 00:00:00 2001 From: Vladislav Date: Sun, 31 Jan 2021 14:49:12 -0800 Subject: [PATCH 2/3] trigger build --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 607a702..b00ee99 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ before_deploy: - sed -i "s/__VERSION__/$TRAVIS_BUILD_NUMBER/g" bintray-spec.json deploy: - - provider: pages + - provider: pages skip_cleanup: true github_token: $GITHUB_TOKEN keep-history: true From 7a5fdbfaab116d1531afd84d7596fb650e2fe306 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Sun, 31 Jan 2021 20:36:48 -0800 Subject: [PATCH 3/3] Fix test --- library/Editor/test/src/test_Editor.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/Editor/test/src/test_Editor.cpp b/library/Editor/test/src/test_Editor.cpp index 7299f00..e13aff4 100644 --- a/library/Editor/test/src/test_Editor.cpp +++ b/library/Editor/test/src/test_Editor.cpp @@ -1,10 +1,10 @@ -#include +#include #include -TEST(Editor, DummyTest) +TEST(Editor, Ctor) { - ASSERT_TRUE(true); + GraphicEditor editor; } int main(int argc, char** argv) {