From 8f96b6467a81d6884441f8ab8127d73952f54715 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Fri, 1 Nov 2019 11:33:42 +0000 Subject: [PATCH 01/31] + ci-config with clang-tidy --- .ci/clang-tidy.sh | 32 ++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++ CMakeLists.txt | 1 - 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 .ci/clang-tidy.sh create mode 100644 .gitlab-ci.yml diff --git a/.ci/clang-tidy.sh b/.ci/clang-tidy.sh new file mode 100644 index 0000000..8b7c6f2 --- /dev/null +++ b/.ci/clang-tidy.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +echo "Doing clang-tidy..." +bool=false +# explicitly set IFS to contain only a line feed +IFS=' +' +filelist="$(find . -not -not \( -path './client/cpptoml/*' -prune \) -type f ! -name "$(printf "*\n*")")" +for file in $filelist; do + if echo "$file" | grep -q -E ".*\.cpp$" ; then + #Extra check missing dependencies due to clang-tidy doesn't toggle exit code. + clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' -checks='*,-llvm-header-guard,-fuchsia-statically-constructed-objects,-fuchsia-default-arguments,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init' "$file" -- -I. -std=c++14 2>&1)" + for tidy_line in $clang_tidy_lib_check; do + echo "$tidy_line" | grep -q -v -E "^Error while processing*" + if [ $? -eq 1 ]; then + bool=true + fi + echo "$tidy_line" | grep -q -v -E ".* error: .*" + if [ $? -eq 1 ]; then + bool=true + fi + echo "$tidy_line" + done + fi +done +if $bool; then + exit 1 +else + echo "No clang-tidy errors found." +fi + +exit 0 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..e731c7f --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,47 @@ +--- + +image: samueldebruyn/debian-git:latest + +stages: + - style + - test + - build + + +yamllint: + image: sdesbure/yamllint:latest + stage: lint + tags: + - docker-ci + script: + - apk update + - apk add --no-cache git + - git config --file=.gitmodules submodule.client.url ../client/client.git + - git config --file=.gitmodules submodule.shared-memory.url ../shared-memory/Shared-Memory.git + - git config --file=.gitmodules submodule.fltk.url ../fltk/fltk.git + - git submodule sync --recursive + - git submodule update --init client shared-memory fltk + - "#################################################################" + - yamllint --version + - "#################################################################" + - sh .ci/yamllint.sh + +clang_tidy: + image: jhase/ + tags: + - docker-ci + script: + - clang-tidy;-header-filter=.;-checks=*; + +make_test: + stage: test + tags: + - docker-ci + script: + - apt-get update + - apt-get install -y make cmake clang-tidy + - mkdir build + - cd build + - cmake .. + - make + - make test diff --git a/CMakeLists.txt b/CMakeLists.txt index 232b66e..4fbc7e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,6 @@ project(Terminal) set(CMAKE_CXX_STANDARD 14) # enable clang_tidy -set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*") set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;-checks=*;) file(GLOB_RECURSE SOURCES src/*.cpp) From f7c5279a9c17633556ae4e2664dffd005d60fcb8 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Sun, 3 Nov 2019 16:53:35 +0000 Subject: [PATCH 02/31] + build ~ testing library checkout --- .gitlab-ci.yml | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e731c7f..16ad6c3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,30 +8,12 @@ stages: - build -yamllint: - image: sdesbure/yamllint:latest - stage: lint - tags: - - docker-ci - script: - - apk update - - apk add --no-cache git - - git config --file=.gitmodules submodule.client.url ../client/client.git - - git config --file=.gitmodules submodule.shared-memory.url ../shared-memory/Shared-Memory.git - - git config --file=.gitmodules submodule.fltk.url ../fltk/fltk.git - - git submodule sync --recursive - - git submodule update --init client shared-memory fltk - - "#################################################################" - - yamllint --version - - "#################################################################" - - sh .ci/yamllint.sh - clang_tidy: image: jhase/ tags: - docker-ci script: - - clang-tidy;-header-filter=.;-checks=*; + - sh .ci/clang-tidy.sh; make_test: stage: test @@ -40,8 +22,28 @@ make_test: script: - apt-get update - apt-get install -y make cmake clang-tidy + - cd .. + - ls + - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git + - mkdir library/build + - cd library/build + - cmake .. + - make + - cd ../../terminal - mkdir build - cd build - cmake .. - make - make test + +cmake_build: + stage: build + tags: + - docker-ci + script: + - apt-get update + - apt-get install -y make cmake clang-tidy + - mkdir build + - cd build + - cmake .. + - make \ No newline at end of file From d1b05c89a7b51a43309db828200c9ec9d0f8f7c4 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Wed, 6 Nov 2019 17:39:21 +0000 Subject: [PATCH 03/31] ~ generalize for all modules --- .gitlab-ci.yml | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 16ad6c3..86f1a24 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,10 +10,11 @@ stages: clang_tidy: image: jhase/ + stage: style tags: - - docker-ci + - docker-ci script: - - sh .ci/clang-tidy.sh; + - sh .ci/clang-tidy.sh; make_test: stage: test @@ -22,14 +23,14 @@ make_test: script: - apt-get update - apt-get install -y make cmake clang-tidy - - cd .. - - ls + - mkdir current + - mv !(current) current - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git - mkdir library/build - cd library/build - cmake .. - make - - cd ../../terminal + - cd ../../current - mkdir build - cd build - cmake .. @@ -41,9 +42,17 @@ cmake_build: tags: - docker-ci script: - - apt-get update - - apt-get install -y make cmake clang-tidy - - mkdir build - - cd build - - cmake .. - - make \ No newline at end of file + - apt-get update + - apt-get install -y make cmake clang-tidy + - mkdir current + - mv !(current) current + - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git + - mkdir library/build + - cd library/build + - cmake .. + - make + - cd ../../current + - mkdir build + - cd build + - cmake .. + - make \ No newline at end of file From 8591bca9def0bacbcfe37388d6ed69e75a465560 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 11:48:25 +0000 Subject: [PATCH 04/31] ~ fixing incorrect docker image name --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86f1a24..f27d106 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ stages: clang_tidy: - image: jhase/ + image: jhase/clang-tidy stage: style tags: - docker-ci From e95cdec818c7a6a664e77cca6567d3e34ec41803 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 11:50:35 +0000 Subject: [PATCH 05/31] ~ fixing incorrect docker image name part2 --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f27d106..9e3b0b0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ stages: clang_tidy: - image: jhase/clang-tidy + image: jhasse/clang-tidy stage: style tags: - docker-ci From 5f687fe9219aee1796cd214f302fa7039cd4855e Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 11:58:13 +0000 Subject: [PATCH 06/31] ~ move method for building --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9e3b0b0..7d65458 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,7 @@ make_test: - apt-get update - apt-get install -y make cmake clang-tidy - mkdir current - - mv !(current) current + - ls | grep -v current | xargs mv -t current - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git - mkdir library/build - cd library/build From d5b944f2daefe6c4830ea036249878e64c73fcb3 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 12:49:18 +0000 Subject: [PATCH 07/31] ~ installing a compiler for ci pipeline --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7d65458..6c8327b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ make_test: - docker-ci script: - apt-get update - - apt-get install -y make cmake clang-tidy + - apt-get install -y gcc make cmake clang-tidy - mkdir current - ls | grep -v current | xargs mv -t current - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git @@ -43,7 +43,7 @@ cmake_build: - docker-ci script: - apt-get update - - apt-get install -y make cmake clang-tidy + - apt-get install -y gcc make cmake clang-tidy - mkdir current - mv !(current) current - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git From 26794cab17eb2f266542c419db4945f1024b19af Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 12:53:41 +0000 Subject: [PATCH 08/31] ~ wrong compiler --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6c8327b..14ae0a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ make_test: - docker-ci script: - apt-get update - - apt-get install -y gcc make cmake clang-tidy + - apt-get install -y g++ make cmake clang-tidy - mkdir current - ls | grep -v current | xargs mv -t current - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git @@ -43,7 +43,7 @@ cmake_build: - docker-ci script: - apt-get update - - apt-get install -y gcc make cmake clang-tidy + - apt-get install -y g++ make cmake clang-tidy - mkdir current - mv !(current) current - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git From 9d01748297355c033b00cf34f0fb371d92341c62 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 12:58:36 +0000 Subject: [PATCH 09/31] ~ adding catch2 to ci env --- .gitlab-ci.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 14ae0a5..21f3ca5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,6 +25,11 @@ make_test: - apt-get install -y g++ make cmake clang-tidy - mkdir current - ls | grep -v current | xargs mv -t current + - git clone https://github.com/catchorg/Catch2.git + - cd Catch2 + - cmake -Bbuild -H. -DBUILD_TESTING=OFF + - sudo cmake --build build/ --target install + - cd .. - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git - mkdir library/build - cd library/build @@ -45,7 +50,12 @@ cmake_build: - apt-get update - apt-get install -y g++ make cmake clang-tidy - mkdir current - - mv !(current) current + - ls | grep -v current | xargs mv -t current + - git clone https://github.com/catchorg/Catch2.git + - cd Catch2 + - cmake -Bbuild -H. -DBUILD_TESTING=OFF + - sudo cmake --build build/ --target install + - cd .. - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git - mkdir library/build - cd library/build From 6d157034533fc73aa51e4395cd8a938bedf199d3 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 13:02:46 +0000 Subject: [PATCH 10/31] ~ remove sudo --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 21f3ca5..eb1309a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ make_test: - git clone https://github.com/catchorg/Catch2.git - cd Catch2 - cmake -Bbuild -H. -DBUILD_TESTING=OFF - - sudo cmake --build build/ --target install + - cmake --build build/ --target install - cd .. - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git - mkdir library/build @@ -54,7 +54,7 @@ cmake_build: - git clone https://github.com/catchorg/Catch2.git - cd Catch2 - cmake -Bbuild -H. -DBUILD_TESTING=OFF - - sudo cmake --build build/ --target install + - cmake --build build/ --target install - cd .. - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git - mkdir library/build From f8c9ca5b8d38a61896155ed723d4b83ea9723477 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 7 Nov 2019 13:41:24 +0000 Subject: [PATCH 11/31] ~ remove dangling -not --- .ci/clang-tidy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/clang-tidy.sh b/.ci/clang-tidy.sh index 8b7c6f2..eae5b12 100644 --- a/.ci/clang-tidy.sh +++ b/.ci/clang-tidy.sh @@ -5,7 +5,7 @@ bool=false # explicitly set IFS to contain only a line feed IFS=' ' -filelist="$(find . -not -not \( -path './client/cpptoml/*' -prune \) -type f ! -name "$(printf "*\n*")")" +filelist="$(find . -not \( -path './client/cpptoml/*' -prune \) -type f ! -name "$(printf "*\n*")")" for file in $filelist; do if echo "$file" | grep -q -E ".*\.cpp$" ; then #Extra check missing dependencies due to clang-tidy doesn't toggle exit code. From 684b65ace4941e6f761ee0b9f59fe346dccb0088 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Tue, 12 Nov 2019 06:26:24 +0000 Subject: [PATCH 12/31] Update CI build to contain catch2 and fltk librarys in style stage --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eb1309a..dadc08e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ stages: clang_tidy: - image: jhasse/clang-tidy + image: joethei/clang-tidy stage: style tags: - docker-ci From 768fbaa22b90057da0d3552c74b7189a242d556a Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Tue, 12 Nov 2019 06:27:46 +0000 Subject: [PATCH 13/31] wrong docker image name in last commit. --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dadc08e..522f05f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,7 +9,7 @@ stages: clang_tidy: - image: joethei/clang-tidy + image: joethei/clang_tidy stage: style tags: - docker-ci From 324c1a86c975de07d4723c878d3068d565a3d199 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Tue, 12 Nov 2019 11:44:53 +0000 Subject: [PATCH 14/31] ~ default argument calls are now allowed --- .ci/clang-tidy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/clang-tidy.sh b/.ci/clang-tidy.sh index eae5b12..c20c8fb 100644 --- a/.ci/clang-tidy.sh +++ b/.ci/clang-tidy.sh @@ -9,7 +9,7 @@ filelist="$(find . -not \( -path './client/cpptoml/*' -prune \) -type f ! -name for file in $filelist; do if echo "$file" | grep -q -E ".*\.cpp$" ; then #Extra check missing dependencies due to clang-tidy doesn't toggle exit code. - clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' -checks='*,-llvm-header-guard,-fuchsia-statically-constructed-objects,-fuchsia-default-arguments,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init' "$file" -- -I. -std=c++14 2>&1)" + clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' -checks='*,-llvm-header-guard,-fuchsia-statically-constructed-objects,-fuchsia-default-arguments,-fuchsia-default-argument-calls,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init' "$file" -- -I. -std=c++14 2>&1)" for tidy_line in $clang_tidy_lib_check; do echo "$tidy_line" | grep -q -v -E "^Error while processing*" if [ $? -eq 1 ]; then From 752b20be507ad0043748a0d1e35e8ba804586ded Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Tue, 12 Nov 2019 15:25:12 +0100 Subject: [PATCH 15/31] ~clang tidy checks all fies now --- .ci/clang-tidy.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/clang-tidy.sh b/.ci/clang-tidy.sh index c20c8fb..913c79a 100644 --- a/.ci/clang-tidy.sh +++ b/.ci/clang-tidy.sh @@ -5,11 +5,11 @@ bool=false # explicitly set IFS to contain only a line feed IFS=' ' -filelist="$(find . -not \( -path './client/cpptoml/*' -prune \) -type f ! -name "$(printf "*\n*")")" +filelist="$(find . -not \( -path './*build*' -prune \) -type f ! -name "$(printf "*\n*")")" for file in $filelist; do - if echo "$file" | grep -q -E ".*\.cpp$" ; then + if echo "$file" | grep -q -E ".*(\.cpp|\.h|\.hpp)$" ; then #Extra check missing dependencies due to clang-tidy doesn't toggle exit code. - clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' -checks='*,-llvm-header-guard,-fuchsia-statically-constructed-objects,-fuchsia-default-arguments,-fuchsia-default-argument-calls,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init' "$file" -- -I. -std=c++14 2>&1)" + clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' -checks='*,-llvm-header-guard,-fuchsia-statically-constructed-objects,-fuchsia-default-arguments,-fuchsia-default-arguments-calls,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init' "$file" -- -I. -std=c++14 2>&1)" for tidy_line in $clang_tidy_lib_check; do echo "$tidy_line" | grep -q -v -E "^Error while processing*" if [ $? -eq 1 ]; then From e7f3a684966d423ffb067ff4d5be81402b4ad81b Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Sat, 16 Nov 2019 18:30:30 +0000 Subject: [PATCH 16/31] ~ update clang tidy checks --- .ci/clang-tidy.sh | 2 +- .clang-tidy | 2 ++ CMakeLists.txt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 .clang-tidy diff --git a/.ci/clang-tidy.sh b/.ci/clang-tidy.sh index 913c79a..1c3d7b3 100644 --- a/.ci/clang-tidy.sh +++ b/.ci/clang-tidy.sh @@ -9,7 +9,7 @@ filelist="$(find . -not \( -path './*build*' -prune \) -type f ! -name "$(printf for file in $filelist; do if echo "$file" | grep -q -E ".*(\.cpp|\.h|\.hpp)$" ; then #Extra check missing dependencies due to clang-tidy doesn't toggle exit code. - clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' -checks='*,-llvm-header-guard,-fuchsia-statically-constructed-objects,-fuchsia-default-arguments,-fuchsia-default-arguments-calls,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init' "$file" -- -I. -std=c++14 2>&1)" + clang_tidy_lib_check="$(clang-tidy -warnings-as-errors='*' -header-filter='.*,-cpptoml.hpp' "$file" -- -I. -std=c++14 2>&1)" for tidy_line in $clang_tidy_lib_check; do echo "$tidy_line" | grep -q -v -E "^Error while processing*" if [ $? -eq 1 ]; then diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..b0965ca --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,2 @@ +Checks: '*,-llvm-header-guard,-fuchsia*,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init,-google-readability-namespace-comments,-llvm-namespace-comment,-cppcoreguidelines-pro-type-vararg,-hicpp-vararg,-modernize-use-trailing-return-type' +WarningsAsErrors: 'true' diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fbc7e2..79bd132 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ project(Terminal) set(CMAKE_CXX_STANDARD 14) # enable clang_tidy -set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;-checks=*;) +set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;) file(GLOB_RECURSE SOURCES src/*.cpp) file(GLOB_RECURSE HEADERS src/*.h) From 367c1c884c7cfebd494555fac4d3eaeb5690f05c Mon Sep 17 00:00:00 2001 From: yukun Date: Mon, 2 Dec 2019 14:27:11 +0100 Subject: [PATCH 17/31] dev --- CMakeLists.txt | 2 +- main/main.cpp | 18 ++++++++++++++++-- src/Buchstaben.cpp | 14 ++++++++++++++ src/Buchstaben.hpp | 13 +++++++++++++ 4 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 src/Buchstaben.cpp create mode 100644 src/Buchstaben.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 232b66e..9689675 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ file(GLOB_RECURSE TESTS test/*.cpp) set(LIB_PATH "${CMAKE_SOURCE_DIR}/../library") include_directories(${LIB_PATH}/include) -add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp) +add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp src/Buchstaben.hpp src/Buchstaben.cpp) target_link_libraries(Terminal ${LIB_PATH}/lib/liblibrary.a) diff --git a/main/main.cpp b/main/main.cpp index 53edc26..fb26601 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1,5 +1,19 @@ -#include "../src/demo.h" +#include "vkvm.hpp" +#include +#include +#include "internal.hpp" +#include "../src/Buchstaben.hpp" + int main() { - return test(); + vkvm::initialize(0); + while(1){ + vkvm::KeyCode keycode = buchstabeneinlesen(); + char c = keycode + 65256; + std::cout<< c<vkvm::KeyCode { + vkvm::KeyCode keycode; + keycode = vkvm::getLastPressedKey(); + return keycode; +} + +auto buchstabenschreiben(std::string s) ->void { + vkvm::setText(s); +} \ No newline at end of file diff --git a/src/Buchstaben.hpp b/src/Buchstaben.hpp new file mode 100644 index 0000000..a748681 --- /dev/null +++ b/src/Buchstaben.hpp @@ -0,0 +1,13 @@ +// +// Created by yukun on 29.11.19. +// + +#ifndef TERMINAL_BUCHSTABEN_HPP +#define TERMINAL_BUCHSTABEN_HPP + +#include "vkvm.hpp" + +auto buchstabeneinlesen() ->vkvm::KeyCode ; + +auto buchstabenschreiben(std::string s) ->void; +#endif //TERMINAL_BUCHSTABEN_HPP From cec4c8322b1a220a52ab9719674ab6a4bffd6725 Mon Sep 17 00:00:00 2001 From: yukun Date: Mon, 2 Dec 2019 14:46:30 +0100 Subject: [PATCH 18/31] dev --- main/main.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index fb26601..4a628d6 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -8,12 +8,13 @@ int main() { vkvm::initialize(0); while(1){ - vkvm::KeyCode keycode = buchstabeneinlesen(); - char c = keycode + 65256; - std::cout<< c< Date: Thu, 5 Dec 2019 07:45:01 +0000 Subject: [PATCH 19/31] ~ update ci to latest version --- .ci/clang-tidy.sh | 2 +- .clang-tidy | 2 +- .gitlab-ci.yml | 13 +++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.ci/clang-tidy.sh b/.ci/clang-tidy.sh index 1c3d7b3..13b2ac7 100644 --- a/.ci/clang-tidy.sh +++ b/.ci/clang-tidy.sh @@ -5,7 +5,7 @@ bool=false # explicitly set IFS to contain only a line feed IFS=' ' -filelist="$(find . -not \( -path './*build*' -prune \) -type f ! -name "$(printf "*\n*")")" +filelist="$(find . -not \( -path './*build*' -prune \) -not \( -path './include' -prune \) -not \( -path './lib' -prune \) -type f ! -name "$(printf "*\n*")")" for file in $filelist; do if echo "$file" | grep -q -E ".*(\.cpp|\.h|\.hpp)$" ; then #Extra check missing dependencies due to clang-tidy doesn't toggle exit code. diff --git a/.clang-tidy b/.clang-tidy index b0965ca..6e8db98 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,2 +1,2 @@ -Checks: '*,-llvm-header-guard,-fuchsia*,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init,-google-readability-namespace-comments,-llvm-namespace-comment,-cppcoreguidelines-pro-type-vararg,-hicpp-vararg,-modernize-use-trailing-return-type' +Checks: '*,-llvm-header-guard,-fuchsia*,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-bounds-constant-array-index,-bugprone-narrowing-conversions,-cppcoreguidelines-narrowing-conversions,-cppcoreguidelines-pro-type-const-cast,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-signed-bitwise,-bugprone-exception-escape,-cppcoreguidelines-pro-type-member-init,-cppcoreguidelines-pro-type-cstyle-cast,-hicpp-member-init,-google-readability-namespace-comments,-llvm-namespace-comment,-cppcoreguidelines-pro-type-vararg,-hicpp-vararg,-modernize-use-trailing-return-type,-readability-magic-numbers,-cppcoreguidelines-avoid-magic-numbers' WarningsAsErrors: 'true' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 522f05f..6492961 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,16 @@ clang_tidy: tags: - docker-ci script: - - sh .ci/clang-tidy.sh; + - mkdir current + - ls -d .[!.]* | grep -v current | xargs mv -t current + - git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.repo.digitech.hs-emden-leer.de/link/projekte/ws19/vkvm-new/library.git + - mkdir library/build + - cd library/build + - cmake .. + - make + - cd ../../current/.ci + - sh clang-tidy.sh + make_test: stage: test @@ -65,4 +74,4 @@ cmake_build: - mkdir build - cd build - cmake .. - - make \ No newline at end of file + - make From 559016f787d5cc6dac569ce1e0a1e855252035ff Mon Sep 17 00:00:00 2001 From: yukun Date: Thu, 12 Dec 2019 11:59:07 +0100 Subject: [PATCH 20/31] dev --- CMakeLists.txt | 7 +++- README.md | 12 ++++++ main/main.cpp | 101 +++++++++++++++++++++++++++++++++++++++++---- src/Bitmap.cpp | 63 ++++++++++++++++++++++++++++ src/Bitmap.h | 67 ++++++++++++++++++++++++++++++ src/Buchstaben.cpp | 14 ------- src/Buchstaben.hpp | 13 ------ src/Font.cpp | 79 +++++++++++++++++++++++++++++++++++ src/Font.h | 51 +++++++++++++++++++++++ src/Terminal.cpp | 32 ++++++++++++++ src/Terminal.h | 23 +++++++++++ 11 files changed, 426 insertions(+), 36 deletions(-) create mode 100644 src/Bitmap.cpp create mode 100644 src/Bitmap.h delete mode 100644 src/Buchstaben.cpp delete mode 100644 src/Buchstaben.hpp create mode 100644 src/Font.cpp create mode 100644 src/Font.h create mode 100644 src/Terminal.cpp create mode 100644 src/Terminal.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 879671d..2e26241 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,11 +17,16 @@ set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;) file(GLOB_RECURSE SOURCES src/*.cpp) file(GLOB_RECURSE HEADERS src/*.h) file(GLOB_RECURSE TESTS test/*.cpp) +include_directories(src) +include_directories(test) + +#toml +include_directories(lib/toml) set(LIB_PATH "${CMAKE_SOURCE_DIR}/../library") include_directories(${LIB_PATH}/include) -add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp src/Buchstaben.hpp src/Buchstaben.cpp) +add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp src/Terminal.h src/Terminal.cpp src/Bitmap.cpp src/Bitmap.h src/Font.cpp src/Font.h) target_link_libraries(Terminal ${LIB_PATH}/lib/liblibrary.a) diff --git a/README.md b/README.md index 509e398..61c3404 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,17 @@ # vKVM Terminal +Terminal calls the methods from library in order to get data from shared memory +and control the output content in GUI. + +## Features + +- If all the lines of the screen are occupied and a new line is added, all lines +will be moved up. +- Terminal can handle the backspace. +- If a line is too long for the screen, terminal will word wrap. +- A cursor can be simulated to insert text anywhere. +- Terminal can use the arrow keys to move the cursor. +- The input from terminal will be wise selected. ## Installation Use the installation script provided in the Scripts repository diff --git a/main/main.cpp b/main/main.cpp index 4a628d6..6d9c9b8 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -2,19 +2,104 @@ #include #include #include "internal.hpp" -#include "../src/Buchstaben.hpp" +#include "../src/Terminal.h" int main() { vkvm::initialize(0); - while(1){ - vkvm::registerEvent(vkvm::KeyDown, []() { - vkvm::KeyCode keycode = buchstabeneinlesen(); - char c = keycode + 65256; - std::cout << c << std::endl; - std::string s(1, c); - buchstabenschreiben(s); + + Terminal terminal = Terminal(); + + vkvm::registerEvent(vkvm::KeyDown, [&terminal]() { + vkvm::KeyCode keycode = vkvm::getLastPressedKey(); + std::cout << keycode << std::endl; + + if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){ + terminal.shiftpressed(); + } + + if(((vkvm::KeyCode::Zero & 0xfff) <= keycode) && (keycode <= (vkvm::Nine & 0xfff))){ + char ch = keycode - (vkvm::KeyCode::Zero & 0xfff) + '0'; + std::cout << ch << std::endl; + terminal.setString(ch); + vkvm::setText(terminal.getString()); + std::cout<< vkvm::getText()<< std::endl; + vkvm::callEvent(vkvm::EventType::RenderText); + } + + if(((vkvm::KeyCode::A & 0xfff) <= keycode) && (keycode <= (vkvm::KeyCode::Z & 0xfff))){ + int status = terminal.getstatus(); + char ch; + if(status == 0){ + ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'a'; + } + else{ + ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A'; + } + std::cout << ch << std::endl; + terminal.setString(ch); + vkvm::setText(terminal.getString()); + std::cout<< vkvm::getText()<< std::endl; + vkvm::callEvent(vkvm::EventType::RenderText); + } + + if((vkvm::KeyCode::Space & 0xfff) == keycode){ + char ch = keycode - (vkvm::KeyCode::Space & 0xfff) + ' '; + std::cout << ch << std::endl; + terminal.setString(ch); + vkvm::setText(terminal.getString()); + std::cout<< vkvm::getText()<< std::endl; + vkvm::callEvent(vkvm::EventType::RenderText); + } + + if((vkvm::KeyCode::Backspace & 0xfff) == keycode){ + char ch = keycode - (vkvm::KeyCode::Backspace & 0xfff) + ' '; + std::cout << ch << std::endl; + terminal.subString(); + vkvm::setText(terminal.getString()); + std::cout<< vkvm::getText()<< std::endl; + vkvm::callEvent(vkvm::EventType::RenderText); + } + + if((vkvm::KeyCode::Tab & 0xfff) == keycode){ + char ch = keycode - (vkvm::KeyCode::Tab & 0xfff) + ' '; + for(int i = 0; i < 3; i++) { + std::cout << ch << std::endl; + terminal.setString(ch); + } + vkvm::setText(terminal.getString()); + std::cout<< vkvm::getText()<< std::endl; + vkvm::callEvent(vkvm::EventType::RenderText); + } + + if((vkvm::KeyCode::Enter & 0xfff) == keycode){ + char ch = '\n'; + std::cout << ch << std::endl; + terminal.setString(ch); + vkvm::setText(terminal.getString()); + std::cout<< vkvm::getText()<< std::endl; + vkvm::callEvent(vkvm::EventType::RenderText); + } + }); + + vkvm::registerEvent(vkvm::KeyUp, [&terminal]() { + vkvm::KeyCode keycode = vkvm::getLastPressedKey(); + if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){ + terminal.shiftup(); + } +// char ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A'; +// std::cout << ch << std::endl; +// terminal.setString(ch); +// vkvm::setText(terminal.getString()); +// std::cout<< vkvm::getText()<< std::endl; +// vkvm::callEvent(vkvm::EventType::RenderText); + }); + + + + while(1){ + sleep(0.1); } } \ No newline at end of file diff --git a/src/Bitmap.cpp b/src/Bitmap.cpp new file mode 100644 index 0000000..a264e50 --- /dev/null +++ b/src/Bitmap.cpp @@ -0,0 +1,63 @@ +#include "Bitmap.h" +#include +#include + +Bitmap::Bitmap() { + offset = 0; + width = 0; + height = 0; + bpp = 0; +} + +Bitmap::Bitmap(const std::string &file) { + offset = 0; + width = 0; + height = 0; + bpp = 0; + load(file); +} + +void Bitmap::load(const std::string &file) { + std::ifstream stream; + stream.open(file); + if(stream.is_open()){ + std::string str((std::istreambuf_iterator(stream)),std::istreambuf_iterator()); + data.resize(str.size()); + for(int i = 0; i < str.size();i++){ + data[i] = str[i]; + } + + offset = (int)*(unsigned int*)(&data[10]); + width = (int)*(unsigned int*)(&data[18]); + height = (int)*(unsigned int*)(&data[22]); + bpp = (int)*(unsigned short*)(&data[28]); + } +} + +int Bitmap::getWidth() { + return width; +} + +int Bitmap::getHeight() { + return height; +} + +char *Bitmap::getData() { + return &data[offset]; +} + +int Bitmap::getBitsPerPixel() { + return bpp; +} + +unsigned int Bitmap::getPixel(int x, int y) { + unsigned int pixel = 0; + char *ptr = getData() + ((getHeight() - 1 - y) * getWidth() + x) * (getBitsPerPixel() / 8); + for(int i = 0; i < getBitsPerPixel() / 8;i++){ + *((char*)&pixel+i) = ptr[i]; + } + if(pixel != 0){ + return pixel; + } + return pixel; +} diff --git a/src/Bitmap.h b/src/Bitmap.h new file mode 100644 index 0000000..e1b61a9 --- /dev/null +++ b/src/Bitmap.h @@ -0,0 +1,67 @@ +#ifndef TERMINAL_BITMAP_H +#define TERMINAL_BITMAP_H + +#include +#include + +/** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @brief: Used to load a Bitmap from a file. + */ +class Bitmap { +public: + Bitmap(); + explicit Bitmap(const std::string &file); + + /** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @brief: Used to load a Bitmap from a file. + */ + void load(const std::string &file); + + /** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @return: the width of the image. + */ + int getWidth(); + + /** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @return: the height of the image + */ + int getHeight(); + + /** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @return: the pixel data as an byte array + */ + char *getData(); + + /** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @return: the number of bits uses per pixel + */ + int getBitsPerPixel(); + + /** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @return: the pixel value by coordinates, (0,0) is on the top left + */ + unsigned int getPixel(int x, int y); + +private: + int width; + int height; + int offset; + int bpp; + std::vector data; +}; + +#endif //TERMINAL_BITMAP_H diff --git a/src/Buchstaben.cpp b/src/Buchstaben.cpp deleted file mode 100644 index 9d243e5..0000000 --- a/src/Buchstaben.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// -// Created by yukun on 29.11.19. -// -#include "vkvm.hpp" - -auto buchstabeneinlesen() ->vkvm::KeyCode { - vkvm::KeyCode keycode; - keycode = vkvm::getLastPressedKey(); - return keycode; -} - -auto buchstabenschreiben(std::string s) ->void { - vkvm::setText(s); -} \ No newline at end of file diff --git a/src/Buchstaben.hpp b/src/Buchstaben.hpp deleted file mode 100644 index a748681..0000000 --- a/src/Buchstaben.hpp +++ /dev/null @@ -1,13 +0,0 @@ -// -// Created by yukun on 29.11.19. -// - -#ifndef TERMINAL_BUCHSTABEN_HPP -#define TERMINAL_BUCHSTABEN_HPP - -#include "vkvm.hpp" - -auto buchstabeneinlesen() ->vkvm::KeyCode ; - -auto buchstabenschreiben(std::string s) ->void; -#endif //TERMINAL_BUCHSTABEN_HPP diff --git a/src/Font.cpp b/src/Font.cpp new file mode 100644 index 0000000..e9cb8ea --- /dev/null +++ b/src/Font.cpp @@ -0,0 +1,79 @@ +#include "Font.h" +#include + + +Font::Font() { + xOffset = 0; + yOffset = 0; + xSize = 0; + ySize = 0; + xCount = 0; + yCount = 0; + xStart = 0; + yStart = 0; + fillValue = 0; + firstChar = ' '; +} + +Font::Font(const std::string &file, const std::string &configFile) : Font() { + load(file, configFile); +} + +void Font::load(const std::string &file, const std::string &configFile) { + bitmap.load(file); + auto config = cpptoml::parse_file(configFile); + xOffset = config->get_as("xOffset").value_or(0); + yOffset = config->get_as("yOffset").value_or(0); + xSize = config->get_as("xSize").value_or(0); + ySize = config->get_as("ySize").value_or(0); + xCount = config->get_as("xCount").value_or(0); + yCount = config->get_as("yOffset").value_or(0); + xStart = config->get_as("xStart").value_or(0); + yStart = config->get_as("yStart").value_or(0); + fillValue = config->get_as("fillValue").value_or(0); + firstChar = (char)config->get_as("firstChar").value_or(0); + pixelSize = config->get_as("pixelSize").value_or(0); + gap = config->get_as("gap").value_or(-1); + invertedColors = config->get_as("invertedColors").value_or(0); +} + +int Font::width() { + return xSize; +} + +int Font::height() { + return ySize; +} + +bool Font::getPixel(char character, int x, int y) { + //index of character(x and y) + int index = (character - firstChar); + + if(gap != -1){ + if (index >= gap){ + index++; + } + } + + int xIndex = index % xCount; + int yIndex = index / xCount; + + if(index < 0){ + yIndex--; + xIndex += xCount; + } + + //character index to pixel index conversion + int xPos = xIndex * (xSize + xOffset) + xStart; + int yPos = yIndex * (ySize + yOffset) + yStart; + + bool value = bitmap.getPixel((xPos + x) * pixelSize, (yPos + y) * pixelSize) == fillValue; + if(invertedColors){ + return !value; + }else{ + return value; + } +} + + + diff --git a/src/Font.h b/src/Font.h new file mode 100644 index 0000000..8274834 --- /dev/null +++ b/src/Font.h @@ -0,0 +1,51 @@ +// +// Created by yukun on 05.12.19. +// + +#ifndef TERMINAL_FONT_H +#define TERMINAL_FONT_H +#include "Bitmap.h" + +/** + * @author: Julian Hinxlage + * @since: v0.0.0 + * @brief: this class provides pixel access based on characters + */ +class Font { +public: + Bitmap bitmap; + + //space between characters + int xOffset; + int yOffset; + + //size of a character + int xSize; + int ySize; + + //count of characters per row + int xCount; + //count of rows + int yCount; + + //pixel offset of first character + int xStart; + int yStart; + + unsigned int fillValue; + char firstChar; + int pixelSize; + int gap; + + bool invertedColors; + + Font(); + explicit Font(const std::string &file, const std::string &configFile); + void load(const std::string &file, const std::string &configFile); + + int width(); + int height(); + bool getPixel(char character, int x, int y); +}; + +#endif //TERMINAL_FONT_H diff --git a/src/Terminal.cpp b/src/Terminal.cpp new file mode 100644 index 0000000..1ad63ff --- /dev/null +++ b/src/Terminal.cpp @@ -0,0 +1,32 @@ +// +// Created by yukun on 29.11.19. +// +#include "vkvm.hpp" +#include "Terminal.h" + +std::string Terminal::getString() { + return s; +} + +void Terminal::setString(char c) { + s = s + c; +} + +void Terminal::subString(){ + s = s.substr(0, s.length() - 1); +} + +void Terminal::shiftpressed() { + status = 1; + +} + +void Terminal::shiftup() { + status = 0; + +} + +int Terminal::getstatus() { + return status; +} + diff --git a/src/Terminal.h b/src/Terminal.h new file mode 100644 index 0000000..7ad1ed7 --- /dev/null +++ b/src/Terminal.h @@ -0,0 +1,23 @@ +// +// Created by yukun on 29.11.19. +// + +#ifndef TERMINAL_TERMINAL_H +#define TERMINAL_TERMINAL_H + +#include "vkvm.hpp" + +class Terminal { +public: + std::string getString(); + void setString(char c); + void subString(); + void shiftpressed(); + void shiftup(); + int getstatus(); + +private: + std::string s=""; + int status = 0; +}; +#endif //TERMINAL_TERMINAL_H From 680ed3a1adc29624dc4b45c6cd4228222b20788f Mon Sep 17 00:00:00 2001 From: yukun Date: Wed, 18 Dec 2019 13:26:59 +0100 Subject: [PATCH 21/31] dev --- main/main.cpp | 46 ++++++++++++++++++++++++++----------- src/Terminal.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++-- src/Terminal.h | 7 +++++- 3 files changed, 96 insertions(+), 16 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index 6d9c9b8..205182d 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -9,78 +9,98 @@ int main() { vkvm::initialize(0); Terminal terminal = Terminal(); + terminal.init(); + std::cout << terminal.getString() << std::endl; vkvm::registerEvent(vkvm::KeyDown, [&terminal]() { vkvm::KeyCode keycode = vkvm::getLastPressedKey(); std::cout << keycode << std::endl; - if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){ + if((vkvm::KeyCode::ShiftLeft == keycode) ||(vkvm::KeyCode::ShiftRight == keycode)){ terminal.shiftpressed(); } - if(((vkvm::KeyCode::Zero & 0xfff) <= keycode) && (keycode <= (vkvm::Nine & 0xfff))){ - char ch = keycode - (vkvm::KeyCode::Zero & 0xfff) + '0'; + if((vkvm::KeyCode::Zero <= keycode) && (keycode <=vkvm::Nine)){ + char ch = keycode - vkvm::KeyCode::Zero + '0'; std::cout << ch << std::endl; terminal.setString(ch); vkvm::setText(terminal.getString()); + std::cout << terminal.getString() << std::endl; std::cout<< vkvm::getText()<< std::endl; vkvm::callEvent(vkvm::EventType::RenderText); } - if(((vkvm::KeyCode::A & 0xfff) <= keycode) && (keycode <= (vkvm::KeyCode::Z & 0xfff))){ + if((vkvm::KeyCode::A <= keycode) && (keycode <= vkvm::KeyCode::Z)){ int status = terminal.getstatus(); char ch; if(status == 0){ - ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'a'; + ch = keycode - vkvm::KeyCode::A + 'a'; } else{ - ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A'; + ch = keycode - vkvm::KeyCode::A + 'A'; } std::cout << ch << std::endl; terminal.setString(ch); vkvm::setText(terminal.getString()); + std::cout << terminal.getString() << std::endl; std::cout<< vkvm::getText()<< std::endl; vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Space & 0xfff) == keycode){ - char ch = keycode - (vkvm::KeyCode::Space & 0xfff) + ' '; + if(vkvm::KeyCode::Space == keycode){ + char ch = keycode - vkvm::KeyCode::Space + ' '; std::cout << ch << std::endl; terminal.setString(ch); vkvm::setText(terminal.getString()); + std::cout << terminal.getString() << std::endl; std::cout<< vkvm::getText()<< std::endl; vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Backspace & 0xfff) == keycode){ - char ch = keycode - (vkvm::KeyCode::Backspace & 0xfff) + ' '; + if(vkvm::KeyCode::Backspace == keycode){ + char ch = keycode - vkvm::KeyCode::Backspace + ' '; std::cout << ch << std::endl; terminal.subString(); vkvm::setText(terminal.getString()); + std::cout << terminal.getString() << std::endl; std::cout<< vkvm::getText()<< std::endl; vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Tab & 0xfff) == keycode){ - char ch = keycode - (vkvm::KeyCode::Tab & 0xfff) + ' '; + if(vkvm::KeyCode::Tab == keycode){ + char ch = keycode - vkvm::KeyCode::Tab + ' '; for(int i = 0; i < 3; i++) { std::cout << ch << std::endl; terminal.setString(ch); } vkvm::setText(terminal.getString()); + std::cout << terminal.getString() << std::endl; std::cout<< vkvm::getText()<< std::endl; vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Enter & 0xfff) == keycode){ + if(vkvm::KeyCode::Enter == keycode){ char ch = '\n'; std::cout << ch << std::endl; terminal.setString(ch); vkvm::setText(terminal.getString()); + std::cout << terminal.getString() << std::endl; std::cout<< vkvm::getText()<< std::endl; vkvm::callEvent(vkvm::EventType::RenderText); } + if(vkvm::KeyCode::Arrow_Left == keycode){ + terminal.moveleft(); + std::cout << terminal.getString() << std::endl; + } + + if(vkvm::KeyCode::Arrow_Right == keycode){ + terminal.moveright(); + std::cout << terminal.getString() << std::endl; + } + + + }); diff --git a/src/Terminal.cpp b/src/Terminal.cpp index 1ad63ff..525644e 100644 --- a/src/Terminal.cpp +++ b/src/Terminal.cpp @@ -1,6 +1,7 @@ // // Created by yukun on 29.11.19. // +#include #include "vkvm.hpp" #include "Terminal.h" @@ -8,12 +9,41 @@ std::string Terminal::getString() { return s; } +void Terminal::init(){ + s = s + cursor; +} + void Terminal::setString(char c) { - s = s + c; +// s.erase(s.end() - 1); +// s = s + c + cursor; + int i = s.find(cursor); + std::cout << i << std::endl; + std::cout<< s.length() -1 < i + 1; l--){ + s[l] = s[l-1]; + } + s[i+1] = c; + } + else{ + s = s + cursor; + std::cout << "else1 " + s << std::endl; + s[s.length()-2] = c; + std::cout << "else2 " + s << std::endl; + + } } void Terminal::subString(){ - s = s.substr(0, s.length() - 1); +// if(s.length() > 1) +// s.erase(s.end() - 1); +// s.erase(s.end() - 1); +// s = s + cursor; + int i = s.find(cursor); + s.erase(i-1, 1); + } void Terminal::shiftpressed() { @@ -30,3 +60,28 @@ int Terminal::getstatus() { return status; } +void Terminal::moveleft(){ + int i = s.find(cursor); + if(i > 0){ + char c = s[i-1]; + s[i-1] = cursor; + s[i] = c; + } +} + +void Terminal::moveright() { + int i = s.find(cursor); + if(i < (s.length() - 1)){ + char c = s[i+1]; + s[i+1] = cursor; + s[i] = c; + } +} + +void Terminal::movedown() { + +} + +void Terminal::moveup() { + +} diff --git a/src/Terminal.h b/src/Terminal.h index 7ad1ed7..2ef05ae 100644 --- a/src/Terminal.h +++ b/src/Terminal.h @@ -9,15 +9,20 @@ class Terminal { public: + void init(); std::string getString(); void setString(char c); void subString(); void shiftpressed(); void shiftup(); int getstatus(); - + void moveleft(); + void moveright(); + void moveup(); + void movedown(); private: std::string s=""; int status = 0; + char cursor = -127; }; #endif //TERMINAL_TERMINAL_H From 4cb4fcd5623853ed578168c3d4bb142c94b22621 Mon Sep 17 00:00:00 2001 From: yukun Date: Wed, 18 Dec 2019 13:46:36 +0100 Subject: [PATCH 22/31] dev --- CMakeLists.txt | 2 +- src/Bitmap.cpp | 63 ---------------------------------------- src/Bitmap.h | 67 ------------------------------------------ src/Font.cpp | 79 -------------------------------------------------- src/Font.h | 51 -------------------------------- 5 files changed, 1 insertion(+), 261 deletions(-) delete mode 100644 src/Bitmap.cpp delete mode 100644 src/Bitmap.h delete mode 100644 src/Font.cpp delete mode 100644 src/Font.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e26241..0d3419f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ include_directories(lib/toml) set(LIB_PATH "${CMAKE_SOURCE_DIR}/../library") include_directories(${LIB_PATH}/include) -add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp src/Terminal.h src/Terminal.cpp src/Bitmap.cpp src/Bitmap.h src/Font.cpp src/Font.h) +add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp src/Terminal.h src/Terminal.cpp) target_link_libraries(Terminal ${LIB_PATH}/lib/liblibrary.a) diff --git a/src/Bitmap.cpp b/src/Bitmap.cpp deleted file mode 100644 index a264e50..0000000 --- a/src/Bitmap.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "Bitmap.h" -#include -#include - -Bitmap::Bitmap() { - offset = 0; - width = 0; - height = 0; - bpp = 0; -} - -Bitmap::Bitmap(const std::string &file) { - offset = 0; - width = 0; - height = 0; - bpp = 0; - load(file); -} - -void Bitmap::load(const std::string &file) { - std::ifstream stream; - stream.open(file); - if(stream.is_open()){ - std::string str((std::istreambuf_iterator(stream)),std::istreambuf_iterator()); - data.resize(str.size()); - for(int i = 0; i < str.size();i++){ - data[i] = str[i]; - } - - offset = (int)*(unsigned int*)(&data[10]); - width = (int)*(unsigned int*)(&data[18]); - height = (int)*(unsigned int*)(&data[22]); - bpp = (int)*(unsigned short*)(&data[28]); - } -} - -int Bitmap::getWidth() { - return width; -} - -int Bitmap::getHeight() { - return height; -} - -char *Bitmap::getData() { - return &data[offset]; -} - -int Bitmap::getBitsPerPixel() { - return bpp; -} - -unsigned int Bitmap::getPixel(int x, int y) { - unsigned int pixel = 0; - char *ptr = getData() + ((getHeight() - 1 - y) * getWidth() + x) * (getBitsPerPixel() / 8); - for(int i = 0; i < getBitsPerPixel() / 8;i++){ - *((char*)&pixel+i) = ptr[i]; - } - if(pixel != 0){ - return pixel; - } - return pixel; -} diff --git a/src/Bitmap.h b/src/Bitmap.h deleted file mode 100644 index e1b61a9..0000000 --- a/src/Bitmap.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef TERMINAL_BITMAP_H -#define TERMINAL_BITMAP_H - -#include -#include - -/** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @brief: Used to load a Bitmap from a file. - */ -class Bitmap { -public: - Bitmap(); - explicit Bitmap(const std::string &file); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @brief: Used to load a Bitmap from a file. - */ - void load(const std::string &file); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the width of the image. - */ - int getWidth(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the height of the image - */ - int getHeight(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the pixel data as an byte array - */ - char *getData(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the number of bits uses per pixel - */ - int getBitsPerPixel(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the pixel value by coordinates, (0,0) is on the top left - */ - unsigned int getPixel(int x, int y); - -private: - int width; - int height; - int offset; - int bpp; - std::vector data; -}; - -#endif //TERMINAL_BITMAP_H diff --git a/src/Font.cpp b/src/Font.cpp deleted file mode 100644 index e9cb8ea..0000000 --- a/src/Font.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "Font.h" -#include - - -Font::Font() { - xOffset = 0; - yOffset = 0; - xSize = 0; - ySize = 0; - xCount = 0; - yCount = 0; - xStart = 0; - yStart = 0; - fillValue = 0; - firstChar = ' '; -} - -Font::Font(const std::string &file, const std::string &configFile) : Font() { - load(file, configFile); -} - -void Font::load(const std::string &file, const std::string &configFile) { - bitmap.load(file); - auto config = cpptoml::parse_file(configFile); - xOffset = config->get_as("xOffset").value_or(0); - yOffset = config->get_as("yOffset").value_or(0); - xSize = config->get_as("xSize").value_or(0); - ySize = config->get_as("ySize").value_or(0); - xCount = config->get_as("xCount").value_or(0); - yCount = config->get_as("yOffset").value_or(0); - xStart = config->get_as("xStart").value_or(0); - yStart = config->get_as("yStart").value_or(0); - fillValue = config->get_as("fillValue").value_or(0); - firstChar = (char)config->get_as("firstChar").value_or(0); - pixelSize = config->get_as("pixelSize").value_or(0); - gap = config->get_as("gap").value_or(-1); - invertedColors = config->get_as("invertedColors").value_or(0); -} - -int Font::width() { - return xSize; -} - -int Font::height() { - return ySize; -} - -bool Font::getPixel(char character, int x, int y) { - //index of character(x and y) - int index = (character - firstChar); - - if(gap != -1){ - if (index >= gap){ - index++; - } - } - - int xIndex = index % xCount; - int yIndex = index / xCount; - - if(index < 0){ - yIndex--; - xIndex += xCount; - } - - //character index to pixel index conversion - int xPos = xIndex * (xSize + xOffset) + xStart; - int yPos = yIndex * (ySize + yOffset) + yStart; - - bool value = bitmap.getPixel((xPos + x) * pixelSize, (yPos + y) * pixelSize) == fillValue; - if(invertedColors){ - return !value; - }else{ - return value; - } -} - - - diff --git a/src/Font.h b/src/Font.h deleted file mode 100644 index 8274834..0000000 --- a/src/Font.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// Created by yukun on 05.12.19. -// - -#ifndef TERMINAL_FONT_H -#define TERMINAL_FONT_H -#include "Bitmap.h" - -/** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @brief: this class provides pixel access based on characters - */ -class Font { -public: - Bitmap bitmap; - - //space between characters - int xOffset; - int yOffset; - - //size of a character - int xSize; - int ySize; - - //count of characters per row - int xCount; - //count of rows - int yCount; - - //pixel offset of first character - int xStart; - int yStart; - - unsigned int fillValue; - char firstChar; - int pixelSize; - int gap; - - bool invertedColors; - - Font(); - explicit Font(const std::string &file, const std::string &configFile); - void load(const std::string &file, const std::string &configFile); - - int width(); - int height(); - bool getPixel(char character, int x, int y); -}; - -#endif //TERMINAL_FONT_H From 1b6471ae94949f52dc0eeb18abd0b77a22bd9af9 Mon Sep 17 00:00:00 2001 From: Julian Hinxlage Date: Wed, 18 Dec 2019 14:02:56 +0100 Subject: [PATCH 23/31] ~ converted to new keycodes --- CMakeLists.txt | 4 +-- main/main.cpp | 28 +++++++++--------- src/Bitmap.cpp | 63 ---------------------------------------- src/Bitmap.h | 67 ------------------------------------------ src/Font.cpp | 79 -------------------------------------------------- src/Font.h | 51 -------------------------------- 6 files changed, 15 insertions(+), 277 deletions(-) delete mode 100644 src/Bitmap.cpp delete mode 100644 src/Bitmap.h delete mode 100644 src/Font.cpp delete mode 100644 src/Font.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e26241..ef03f86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,13 +20,11 @@ file(GLOB_RECURSE TESTS test/*.cpp) include_directories(src) include_directories(test) -#toml -include_directories(lib/toml) set(LIB_PATH "${CMAKE_SOURCE_DIR}/../library") include_directories(${LIB_PATH}/include) -add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp src/Terminal.h src/Terminal.cpp src/Bitmap.cpp src/Bitmap.h src/Font.cpp src/Font.h) +add_executable(Terminal ${SOURCES} ${HEADERS} main/main.cpp) target_link_libraries(Terminal ${LIB_PATH}/lib/liblibrary.a) diff --git a/main/main.cpp b/main/main.cpp index 6d9c9b8..025e4ac 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -14,12 +14,12 @@ int main() { vkvm::KeyCode keycode = vkvm::getLastPressedKey(); std::cout << keycode << std::endl; - if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){ + if(((vkvm::KeyCode::ShiftLeft) == keycode) ||((vkvm::KeyCode::ShiftRight) == keycode)){ terminal.shiftpressed(); } - if(((vkvm::KeyCode::Zero & 0xfff) <= keycode) && (keycode <= (vkvm::Nine & 0xfff))){ - char ch = keycode - (vkvm::KeyCode::Zero & 0xfff) + '0'; + if(((vkvm::KeyCode::Zero) <= keycode) && (keycode <= (vkvm::Nine))){ + char ch = keycode - (vkvm::KeyCode::Zero) + '0'; std::cout << ch << std::endl; terminal.setString(ch); vkvm::setText(terminal.getString()); @@ -27,14 +27,14 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } - if(((vkvm::KeyCode::A & 0xfff) <= keycode) && (keycode <= (vkvm::KeyCode::Z & 0xfff))){ + if(((vkvm::KeyCode::A) <= keycode) && (keycode <= (vkvm::KeyCode::Z))){ int status = terminal.getstatus(); char ch; if(status == 0){ - ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'a'; + ch = keycode - (vkvm::KeyCode::A) + 'a'; } else{ - ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A'; + ch = keycode - (vkvm::KeyCode::A) + 'A'; } std::cout << ch << std::endl; terminal.setString(ch); @@ -43,8 +43,8 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Space & 0xfff) == keycode){ - char ch = keycode - (vkvm::KeyCode::Space & 0xfff) + ' '; + if((vkvm::KeyCode::Space) == keycode){ + char ch = keycode - (vkvm::KeyCode::Space) + ' '; std::cout << ch << std::endl; terminal.setString(ch); vkvm::setText(terminal.getString()); @@ -52,8 +52,8 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Backspace & 0xfff) == keycode){ - char ch = keycode - (vkvm::KeyCode::Backspace & 0xfff) + ' '; + if((vkvm::KeyCode::Backspace) == keycode){ + char ch = keycode - (vkvm::KeyCode::Backspace) + ' '; std::cout << ch << std::endl; terminal.subString(); vkvm::setText(terminal.getString()); @@ -61,8 +61,8 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Tab & 0xfff) == keycode){ - char ch = keycode - (vkvm::KeyCode::Tab & 0xfff) + ' '; + if((vkvm::KeyCode::Tab) == keycode){ + char ch = keycode - (vkvm::KeyCode::Tab) + ' '; for(int i = 0; i < 3; i++) { std::cout << ch << std::endl; terminal.setString(ch); @@ -72,7 +72,7 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } - if((vkvm::KeyCode::Enter & 0xfff) == keycode){ + if((vkvm::KeyCode::Enter) == keycode){ char ch = '\n'; std::cout << ch << std::endl; terminal.setString(ch); @@ -86,7 +86,7 @@ int main() { vkvm::registerEvent(vkvm::KeyUp, [&terminal]() { vkvm::KeyCode keycode = vkvm::getLastPressedKey(); - if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){ + if(((vkvm::KeyCode::ShiftLeft) == keycode) ||((vkvm::KeyCode::ShiftRight) == keycode)){ terminal.shiftup(); } // char ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A'; diff --git a/src/Bitmap.cpp b/src/Bitmap.cpp deleted file mode 100644 index a264e50..0000000 --- a/src/Bitmap.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "Bitmap.h" -#include -#include - -Bitmap::Bitmap() { - offset = 0; - width = 0; - height = 0; - bpp = 0; -} - -Bitmap::Bitmap(const std::string &file) { - offset = 0; - width = 0; - height = 0; - bpp = 0; - load(file); -} - -void Bitmap::load(const std::string &file) { - std::ifstream stream; - stream.open(file); - if(stream.is_open()){ - std::string str((std::istreambuf_iterator(stream)),std::istreambuf_iterator()); - data.resize(str.size()); - for(int i = 0; i < str.size();i++){ - data[i] = str[i]; - } - - offset = (int)*(unsigned int*)(&data[10]); - width = (int)*(unsigned int*)(&data[18]); - height = (int)*(unsigned int*)(&data[22]); - bpp = (int)*(unsigned short*)(&data[28]); - } -} - -int Bitmap::getWidth() { - return width; -} - -int Bitmap::getHeight() { - return height; -} - -char *Bitmap::getData() { - return &data[offset]; -} - -int Bitmap::getBitsPerPixel() { - return bpp; -} - -unsigned int Bitmap::getPixel(int x, int y) { - unsigned int pixel = 0; - char *ptr = getData() + ((getHeight() - 1 - y) * getWidth() + x) * (getBitsPerPixel() / 8); - for(int i = 0; i < getBitsPerPixel() / 8;i++){ - *((char*)&pixel+i) = ptr[i]; - } - if(pixel != 0){ - return pixel; - } - return pixel; -} diff --git a/src/Bitmap.h b/src/Bitmap.h deleted file mode 100644 index e1b61a9..0000000 --- a/src/Bitmap.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef TERMINAL_BITMAP_H -#define TERMINAL_BITMAP_H - -#include -#include - -/** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @brief: Used to load a Bitmap from a file. - */ -class Bitmap { -public: - Bitmap(); - explicit Bitmap(const std::string &file); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @brief: Used to load a Bitmap from a file. - */ - void load(const std::string &file); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the width of the image. - */ - int getWidth(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the height of the image - */ - int getHeight(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the pixel data as an byte array - */ - char *getData(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the number of bits uses per pixel - */ - int getBitsPerPixel(); - - /** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @return: the pixel value by coordinates, (0,0) is on the top left - */ - unsigned int getPixel(int x, int y); - -private: - int width; - int height; - int offset; - int bpp; - std::vector data; -}; - -#endif //TERMINAL_BITMAP_H diff --git a/src/Font.cpp b/src/Font.cpp deleted file mode 100644 index e9cb8ea..0000000 --- a/src/Font.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "Font.h" -#include - - -Font::Font() { - xOffset = 0; - yOffset = 0; - xSize = 0; - ySize = 0; - xCount = 0; - yCount = 0; - xStart = 0; - yStart = 0; - fillValue = 0; - firstChar = ' '; -} - -Font::Font(const std::string &file, const std::string &configFile) : Font() { - load(file, configFile); -} - -void Font::load(const std::string &file, const std::string &configFile) { - bitmap.load(file); - auto config = cpptoml::parse_file(configFile); - xOffset = config->get_as("xOffset").value_or(0); - yOffset = config->get_as("yOffset").value_or(0); - xSize = config->get_as("xSize").value_or(0); - ySize = config->get_as("ySize").value_or(0); - xCount = config->get_as("xCount").value_or(0); - yCount = config->get_as("yOffset").value_or(0); - xStart = config->get_as("xStart").value_or(0); - yStart = config->get_as("yStart").value_or(0); - fillValue = config->get_as("fillValue").value_or(0); - firstChar = (char)config->get_as("firstChar").value_or(0); - pixelSize = config->get_as("pixelSize").value_or(0); - gap = config->get_as("gap").value_or(-1); - invertedColors = config->get_as("invertedColors").value_or(0); -} - -int Font::width() { - return xSize; -} - -int Font::height() { - return ySize; -} - -bool Font::getPixel(char character, int x, int y) { - //index of character(x and y) - int index = (character - firstChar); - - if(gap != -1){ - if (index >= gap){ - index++; - } - } - - int xIndex = index % xCount; - int yIndex = index / xCount; - - if(index < 0){ - yIndex--; - xIndex += xCount; - } - - //character index to pixel index conversion - int xPos = xIndex * (xSize + xOffset) + xStart; - int yPos = yIndex * (ySize + yOffset) + yStart; - - bool value = bitmap.getPixel((xPos + x) * pixelSize, (yPos + y) * pixelSize) == fillValue; - if(invertedColors){ - return !value; - }else{ - return value; - } -} - - - diff --git a/src/Font.h b/src/Font.h deleted file mode 100644 index 8274834..0000000 --- a/src/Font.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// Created by yukun on 05.12.19. -// - -#ifndef TERMINAL_FONT_H -#define TERMINAL_FONT_H -#include "Bitmap.h" - -/** - * @author: Julian Hinxlage - * @since: v0.0.0 - * @brief: this class provides pixel access based on characters - */ -class Font { -public: - Bitmap bitmap; - - //space between characters - int xOffset; - int yOffset; - - //size of a character - int xSize; - int ySize; - - //count of characters per row - int xCount; - //count of rows - int yCount; - - //pixel offset of first character - int xStart; - int yStart; - - unsigned int fillValue; - char firstChar; - int pixelSize; - int gap; - - bool invertedColors; - - Font(); - explicit Font(const std::string &file, const std::string &configFile); - void load(const std::string &file, const std::string &configFile); - - int width(); - int height(); - bool getPixel(char character, int x, int y); -}; - -#endif //TERMINAL_FONT_H From 94e7b913e173fde3929690c10ae01cb800637eb8 Mon Sep 17 00:00:00 2001 From: Julian Hinxlage Date: Wed, 18 Dec 2019 14:05:03 +0100 Subject: [PATCH 24/31] ~ fixed shift release --- main/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/main.cpp b/main/main.cpp index 205182d..b9ffc4d 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -106,7 +106,7 @@ int main() { vkvm::registerEvent(vkvm::KeyUp, [&terminal]() { vkvm::KeyCode keycode = vkvm::getLastPressedKey(); - if(((vkvm::KeyCode::ShiftLeft & 0xfff) == keycode) ||((vkvm::KeyCode::ShiftRight & 0xfff) == keycode)){ + if(((vkvm::KeyCode::ShiftLeft) == keycode) ||((vkvm::KeyCode::ShiftRight) == keycode)){ terminal.shiftup(); } // char ch = keycode - (vkvm::KeyCode::A & 0xfff) + 'A'; From f2db3b2d3af91af2bcfb0623b722ae7be5adba04 Mon Sep 17 00:00:00 2001 From: yukun Date: Thu, 19 Dec 2019 12:22:39 +0100 Subject: [PATCH 25/31] realisze the Linkshift and rightShift. Send a signal value -127 to the sharedmemory. --- main/main.cpp | 11 +++++++++ src/Terminal.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index 205182d..2dee6ac 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -92,13 +92,24 @@ int main() { if(vkvm::KeyCode::Arrow_Left == keycode){ terminal.moveleft(); std::cout << terminal.getString() << std::endl; + vkvm::setText(terminal.getString()); + vkvm::callEvent(vkvm::EventType::RenderText); } if(vkvm::KeyCode::Arrow_Right == keycode){ terminal.moveright(); std::cout << terminal.getString() << std::endl; + vkvm::setText(terminal.getString()); + vkvm::callEvent(vkvm::EventType::RenderText); } +// if(vkvm::KeyCode::Arrow_Down == keycode){ +// terminal.movedown(); +// std::cout << terminal.getString() << std::endl; +// vkvm::setText(terminal.getString()); +// vkvm::callEvent(vkvm::EventType::RenderText); +// } + diff --git a/src/Terminal.cpp b/src/Terminal.cpp index 525644e..d71055f 100644 --- a/src/Terminal.cpp +++ b/src/Terminal.cpp @@ -2,6 +2,7 @@ // Created by yukun on 29.11.19. // #include +#include #include "vkvm.hpp" #include "Terminal.h" @@ -29,9 +30,8 @@ void Terminal::setString(char c) { } else{ s = s + cursor; - std::cout << "else1 " + s << std::endl; s[s.length()-2] = c; - std::cout << "else2 " + s << std::endl; + } } @@ -41,9 +41,10 @@ void Terminal::subString(){ // s.erase(s.end() - 1); // s.erase(s.end() - 1); // s = s + cursor; - int i = s.find(cursor); - s.erase(i-1, 1); - + if(s.length() > 1) { + int i = s.find(cursor); + s.erase(i - 1, 1); + } } void Terminal::shiftpressed() { @@ -79,6 +80,59 @@ void Terminal::moveright() { } void Terminal::movedown() { + std::string news=""; + int i = s.find(cursor); + s.erase(i, 1); + + std::vector> vec(100,std::vector(21,0)); + for(int n = 0; n < 100; n++){ + if(n*21 < s.length()) { + for (int m = 0; m < 21; m++) { + int sum = n * 21 + m; + if (s[sum] != '\n') { + vec[n][m] = s[sum]; + std::cout<<"vec before" + vec[n][m]<= cursorcolumn){ + cursorrow++; + } + else if(vec[cursorrow+1].size() >=1){ + cursorrow++; + cursorcolumn = vec[cursorrow].size()-1; + } + std::cout<<"after" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)< Date: Fri, 20 Dec 2019 16:13:24 +0100 Subject: [PATCH 26/31] move down --- main/main.cpp | 19 ++-- src/Terminal.cpp | 271 +++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 240 insertions(+), 50 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index f581430..016d5f9 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -103,12 +103,19 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } -// if(vkvm::KeyCode::Arrow_Down == keycode){ -// terminal.movedown(); -// std::cout << terminal.getString() << std::endl; -// vkvm::setText(terminal.getString()); -// vkvm::callEvent(vkvm::EventType::RenderText); -// } + if(vkvm::KeyCode::Arrow_Down == keycode){ + terminal.movedown(); + std::cout << terminal.getString() << std::endl; + vkvm::setText(terminal.getString()); + vkvm::callEvent(vkvm::EventType::RenderText); + } + + if(vkvm::KeyCode::Arrow_Up == keycode){ + terminal.moveup(); + std::cout << terminal.getString() << std::endl; + vkvm::setText(terminal.getString()); + vkvm::callEvent(vkvm::EventType::RenderText); + } diff --git a/src/Terminal.cpp b/src/Terminal.cpp index d71055f..7149c3d 100644 --- a/src/Terminal.cpp +++ b/src/Terminal.cpp @@ -80,62 +80,245 @@ void Terminal::moveright() { } void Terminal::movedown() { - std::string news=""; - int i = s.find(cursor); - s.erase(i, 1); +// std::string news=""; +// int i = s.find(cursor); +// s.erase(i, 1); +// +// std::vector> vec(100,std::vector(21,0)); +// for(int n = 0; n < 100; n++){ +// if(n*21 < s.length()) { +// for (int m = 0; m < 21; m++) { +// int sum = n * 21 + m; +// if (s[sum] != '\n') { +// vec[n][m] = s[sum]; +// std::cout<<"vec before" + vec[n][m]<= cursorcolumn){ +// cursorrow++; +// } +// else if(vec[cursorrow+1].size() >=1){ +// cursorrow++; +// cursorcolumn = vec[cursorrow].size()-1; +// } +// std::cout<<"after" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)<> vec(100,std::vector(21,0)); - for(int n = 0; n < 100; n++){ - if(n*21 < s.length()) { - for (int m = 0; m < 21; m++) { - int sum = n * 21 + m; - if (s[sum] != '\n') { - vec[n][m] = s[sum]; - std::cout<<"vec before" + vec[n][m]< i; x--){ + s[x] = s[x-1]; + } + s[x] = '\n'; + } + } + std::cout<<"plus enter:" + s <= 0); + std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= (cursorposition - beforcursorenter)) { + for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){ + s[newcursorposition] = s[newcursorposition + 1]; + } + s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor; } - else { - vec[n][m] = s[sum]; - break; + else{ + for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){ + s[newcursorposition] = s[newcursorposition + 1]; + } + s[aftercursorenter2] = cursor; + } + + } + else{ + std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <= (cursorposition - beforcursorenter)) { + std::cout<<"enter the loop if" <= cursorcolumn){ - cursorrow++; + count = 0; + for(int i = 0; i < s.length(); i++) { + count++; + if((count ==21) && (s[i]=='\n')){ + for(int n=i; n < s.length();n++){ + s[n] = s[n+1]; + } + s = s.substr(0,s.length()-1); + } } - else if(vec[cursorrow+1].size() >=1){ - cursorrow++; - cursorcolumn = vec[cursorrow].size()-1; - } - std::cout<<"after" + std::to_string(cursorrow) + ' '+ std::to_string(cursorcolumn)< i; x--){ + s[x] = s[x-1]; + } + s[x] = '\n'; + } + } + std::cout<<"plus enter:" + s <= 0); + std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= (cursorposition - beforcursorenter)) { + for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){ + s[newcursorposition] = s[newcursorposition + 1]; + } + s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor; + } + else{ + for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){ + s[newcursorposition] = s[newcursorposition + 1]; + } + s[aftercursorenter2] = cursor; + } + + } + else{ + std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <= (cursorposition - beforcursorenter)) { + std::cout<<"enter the loop if" < Date: Fri, 20 Dec 2019 17:04:21 +0100 Subject: [PATCH 27/31] move down --- main/main.cpp | 12 +-- src/Terminal.cpp | 207 +++++++++++++++++++++++++---------------------- 2 files changed, 116 insertions(+), 103 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index 016d5f9..be09017 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -110,12 +110,12 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } - if(vkvm::KeyCode::Arrow_Up == keycode){ - terminal.moveup(); - std::cout << terminal.getString() << std::endl; - vkvm::setText(terminal.getString()); - vkvm::callEvent(vkvm::EventType::RenderText); - } +// if(vkvm::KeyCode::Arrow_Up == keycode){ +// terminal.moveup(); +// std::cout << terminal.getString() << std::endl; +// vkvm::setText(terminal.getString()); +// vkvm::callEvent(vkvm::EventType::RenderText); +// } diff --git a/src/Terminal.cpp b/src/Terminal.cpp index 7149c3d..4ff6866 100644 --- a/src/Terminal.cpp +++ b/src/Terminal.cpp @@ -140,16 +140,18 @@ void Terminal::movedown() { if (s[i] == '\n') { count = 0; } - else {if(s[i]!=cursor) - count++; + else { + if(s[i]!=cursor) + count++; } - if(count == 21){ + if(count == 22){ s = s + s[s.length() - 1]; int x = s.length() - 1; for(; x > i; x--){ s[x] = s[x-1]; } s[x] = '\n'; + count = 0; } } std::cout<<"plus enter:" + s < i; x--){ - s[x] = s[x-1]; - } - s[x] = '\n'; - } - } - std::cout<<"plus enter:" + s <= 0); - std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= (cursorposition - beforcursorenter)) { - for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){ - s[newcursorposition] = s[newcursorposition + 1]; - } - s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor; - } - else{ - for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){ - s[newcursorposition] = s[newcursorposition + 1]; - } - s[aftercursorenter2] = cursor; - } - - } - else{ - std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <= (cursorposition - beforcursorenter)) { - std::cout<<"enter the loop if" < i; x--){ +// s[x] = s[x-1]; +// } +// s[x] = '\n'; +// } +// } +// std::cout<<"plus enter:" + s <= 0); +// std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= 0); +// +// +// std::cout<<"aftercursorenter2:" + std::to_string(aftercursorenter2)<= (cursorposition - beforcursorenter)) { +// for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){ +// s[newcursorposition] = s[newcursorposition + 1]; +// } +// s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor; +// } +// else{ +// for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){ +// s[newcursorposition] = s[newcursorposition + 1]; +// } +// s[aftercursorenter2] = cursor; +// } +// +// } +// else{ +// std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <= (cursorposition - beforcursorenter)) { +// std::cout<<"enter the loop if" < Date: Mon, 6 Jan 2020 15:35:22 +0100 Subject: [PATCH 28/31] move down --- main/main.cpp | 12 +-- src/Terminal.cpp | 224 ++++++++++++++++++++++++----------------------- 2 files changed, 122 insertions(+), 114 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index be09017..016d5f9 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -110,12 +110,12 @@ int main() { vkvm::callEvent(vkvm::EventType::RenderText); } -// if(vkvm::KeyCode::Arrow_Up == keycode){ -// terminal.moveup(); -// std::cout << terminal.getString() << std::endl; -// vkvm::setText(terminal.getString()); -// vkvm::callEvent(vkvm::EventType::RenderText); -// } + if(vkvm::KeyCode::Arrow_Up == keycode){ + terminal.moveup(); + std::cout << terminal.getString() << std::endl; + vkvm::setText(terminal.getString()); + vkvm::callEvent(vkvm::EventType::RenderText); + } diff --git a/src/Terminal.cpp b/src/Terminal.cpp index 4ff6866..b3e4e42 100644 --- a/src/Terminal.cpp +++ b/src/Terminal.cpp @@ -158,13 +158,13 @@ void Terminal::movedown() { int cursorposition = s.find(cursor); int aftercursorenter1 = s.find('\n',cursorposition); int beforcursorenter = cursorposition - 1; - do { + while (beforcursorenter >= 0){ if (s[beforcursorenter] != '\n') { beforcursorenter--; } else { break; } - } while (beforcursorenter >= 0); + } std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= (cursorposition - beforcursorenter)) { std::cout<<"enter the loop if" < i; x--){ -// s[x] = s[x-1]; -// } -// s[x] = '\n'; -// } -// } -// std::cout<<"plus enter:" + s <= 0); -// std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= 0); -// -// -// std::cout<<"aftercursorenter2:" + std::to_string(aftercursorenter2)<= (cursorposition - beforcursorenter)) { -// for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter1 + cursorposition -beforcursorenter -1);newcursorposition++){ -// s[newcursorposition] = s[newcursorposition + 1]; -// } -// s[aftercursorenter1 + cursorposition - beforcursorenter -1] = cursor; -// } -// else{ -// for(int newcursorposition = cursorposition;newcursorposition < (aftercursorenter2); newcursorposition++){ -// s[newcursorposition] = s[newcursorposition + 1]; -// } -// s[aftercursorenter2] = cursor; -// } -// -// } -// else{ -// std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <= (cursorposition - beforcursorenter)) { -// std::cout<<"enter the loop if" < i; x--){ + s[x] = s[x-1]; + } + s[x] = '\n'; + count = 0; + } + } + std::cout<<"plus enter:" + s <= 0){ + if (s[beforecursorenter1] != '\n') { + beforecursorenter1--; + } else { + break; + } + } + + std::cout<<"cursorpositon:" + std::to_string(cursorposition)<= 0){ + if (s[beforecursorenter2] != '\n') { + beforecursorenter2--; + } else { + break; + } + } + + + std::cout<<"beforecursorenter2:" + std::to_string(beforecursorenter2)<= (cursorposition - beforecursorenter1)) { + for(int newcursorposition = cursorposition;newcursorposition > (beforecursorenter2 + cursorposition - beforecursorenter1 );newcursorposition--){ + s[newcursorposition] = s[newcursorposition - 1]; + } + s[beforecursorenter2 + cursorposition - beforecursorenter1] = cursor; + } + else{ + for(int newcursorposition = cursorposition;newcursorposition > (beforecursorenter1); newcursorposition--){ + s[newcursorposition] = s[newcursorposition -1]; + } + s[beforecursorenter1] = cursor; + } + + } + else{ + std::cout<<"enter the loop & aftercursorenter2 ==s.npos" <= (cursorposition - beforecursorenter1)) { + std::cout<<"enter the loop if" < (cursorposition -beforecursorenter1 -1); newcursorposition--){ + s[newcursorposition] = s[newcursorposition - 1]; + std::cout<<"forcursorpositon:" + std::to_string(cursorposition)< (beforecursorenter1); newcursorposition--){ + s[newcursorposition] = s[newcursorposition - 1]; + } + std::cout<<"new cursorposition" + std::to_string(beforecursorenter1) < Date: Wed, 8 Jan 2020 16:34:52 +0000 Subject: [PATCH 29/31] ~ use clang instead of g++ --- .gitlab-ci.yml | 4 ++-- CMakeLists.txt | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6492961..8ef29d7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,7 @@ make_test: - docker-ci script: - apt-get update - - apt-get install -y g++ make cmake clang-tidy + - apt-get install -y clang make cmake clang-tidy - mkdir current - ls | grep -v current | xargs mv -t current - git clone https://github.com/catchorg/Catch2.git @@ -57,7 +57,7 @@ cmake_build: - docker-ci script: - apt-get update - - apt-get install -y g++ make cmake clang-tidy + - apt-get install -y clang make cmake clang-tidy - mkdir current - ls | grep -v current | xargs mv -t current - git clone https://github.com/catchorg/Catch2.git diff --git a/CMakeLists.txt b/CMakeLists.txt index ef03f86..3026c2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,9 @@ if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") endif() set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "bin" "doc" "CMakeFiles" "lib" "include") +set(CMAKE_C_COMPILER "clang") +set(CMAKE_CXX_COMPILER "clang++") + project(Terminal) set(CMAKE_CXX_STANDARD 14) From d00402f4b6788a91a17b35b577a358b31d2584f7 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Wed, 8 Jan 2020 19:19:26 +0100 Subject: [PATCH 30/31] ~ changing up a few includes --- CMakeLists.txt | 2 +- main/main.cpp | 4 ++-- src/Terminal.cpp | 7 +------ src/{Terminal.h => Terminal.hpp} | 11 +++-------- src/demo.cpp | 2 +- src/{demo.h => demo.hpp} | 0 test/test_demo.cpp | 2 +- 7 files changed, 9 insertions(+), 19 deletions(-) rename src/{Terminal.h => Terminal.hpp} (71%) rename src/{demo.h => demo.hpp} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3026c2f..866891d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_CLANG_TIDY clang-tidy;-header-filter=.;) file(GLOB_RECURSE SOURCES src/*.cpp) -file(GLOB_RECURSE HEADERS src/*.h) +file(GLOB_RECURSE HEADERS src/*.hpp) file(GLOB_RECURSE TESTS test/*.cpp) include_directories(src) include_directories(test) diff --git a/main/main.cpp b/main/main.cpp index 016d5f9..6cea445 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1,8 +1,8 @@ +#include "../src/Terminal.hpp" +#include "internal.hpp" #include "vkvm.hpp" #include #include -#include "internal.hpp" -#include "../src/Terminal.h" int main() { diff --git a/src/Terminal.cpp b/src/Terminal.cpp index b3e4e42..80ef067 100644 --- a/src/Terminal.cpp +++ b/src/Terminal.cpp @@ -1,10 +1,5 @@ -// -// Created by yukun on 29.11.19. -// #include -#include -#include "vkvm.hpp" -#include "Terminal.h" +#include "Terminal.hpp" std::string Terminal::getString() { return s; diff --git a/src/Terminal.h b/src/Terminal.hpp similarity index 71% rename from src/Terminal.h rename to src/Terminal.hpp index 2ef05ae..ac6f6d7 100644 --- a/src/Terminal.h +++ b/src/Terminal.hpp @@ -1,11 +1,6 @@ // -// Created by yukun on 29.11.19. -// - -#ifndef TERMINAL_TERMINAL_H -#define TERMINAL_TERMINAL_H - -#include "vkvm.hpp" +#ifndef TERMINAL_TERMINAL_HPP +#define TERMINAL_TERMINAL_HPP class Terminal { public: @@ -25,4 +20,4 @@ private: int status = 0; char cursor = -127; }; -#endif //TERMINAL_TERMINAL_H +#endif //TERMINAL_TERMINAL_HPP diff --git a/src/demo.cpp b/src/demo.cpp index 1cc01fc..f585ef0 100644 --- a/src/demo.cpp +++ b/src/demo.cpp @@ -1,4 +1,4 @@ -#include "demo.h" +#include "demo.hpp" int test() { return 42; diff --git a/src/demo.h b/src/demo.hpp similarity index 100% rename from src/demo.h rename to src/demo.hpp diff --git a/test/test_demo.cpp b/test/test_demo.cpp index 7cb240e..52ff21f 100644 --- a/test/test_demo.cpp +++ b/test/test_demo.cpp @@ -1,5 +1,5 @@ #include -#include "../src/demo.h" +#include "demo.hpp" TEST_CASE("Demo test") { REQUIRE(test() == 42); From 46f9bf583bd88c2b6bc44d6166d202a426b046ae Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Wed, 8 Jan 2020 19:48:37 +0100 Subject: [PATCH 31/31] ~ also need to include string... --- src/Terminal.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Terminal.hpp b/src/Terminal.hpp index ac6f6d7..9ec2812 100644 --- a/src/Terminal.hpp +++ b/src/Terminal.hpp @@ -1,4 +1,5 @@ -// +#include + #ifndef TERMINAL_TERMINAL_HPP #define TERMINAL_TERMINAL_HPP