Change build system to meson

This commit is contained in:
2022-11-08 19:15:16 +01:00
parent 2913a272d1
commit cc2316a497
17 changed files with 208 additions and 118 deletions

82
.clang-format Normal file
View File

@@ -0,0 +1,82 @@
# Google C/C++ Code Style settings
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
Language: Cpp
BasedOnStyle: Google
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: None
AlignOperands: Align
AllowAllArgumentsOnNextLine: true
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Inline
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: true
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterStruct: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
ColumnLimit: 80
CompactNamespaces: false
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
EmptyLineBeforeAccessModifier: LogicalBlock
FixNamespaceComments: true
IncludeBlocks: Preserve
IndentCaseLabels: true
IndentPPDirectives: None
IndentWidth: 2
KeepEmptyLinesAtTheStartOfBlocks: true
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PointerAlignment: Left
ReflowComments: false
SeparateDefinitionBlocks: Always
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++17
TabWidth: 4
UseTab: Never

2
.clang-format-include Normal file
View File

@@ -0,0 +1,2 @@
inc/*
src/*

2
.gitignore vendored
View File

@@ -1,4 +1,4 @@
build/ builddir/
.cache/ .cache/
.vscode/* .vscode/*
!.vscode/c_cpp_properties.json !.vscode/c_cpp_properties.json

View File

@@ -1 +1,12 @@
{} {
"configurations": [
{
"name": "Linux",
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++17",
"compileCommands": "/builddir/compile_commands.json"
}
],
"version": 4
}

View File

@@ -2,5 +2,7 @@
"clangd.arguments": [ "-log=verbose", "clangd.arguments": [ "-log=verbose",
"-pretty", "-pretty",
"--background-index", "--background-index",
"--compile-commands-dir=${workspaceFolder}/build"] "--compile-commands-dir=${workspaceFolder}/builddir",
"-std=c++17"
]
} }

View File

@@ -1,21 +0,0 @@
cmake_minimum_required(VERSION 3.5)
project(ptprnt LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Set C++ Compiler Flags" FORCE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(SOURCES
src/P700Printer.cpp
src/P700Driver.cpp
src/main.cpp
)
add_executable(${PROJECT_NAME} ${SOURCES})
target_include_directories(${PROJECT_NAME}
PUBLIC
${PROJECT_SOURCE_DIR}/inc
)

View File

@@ -5,7 +5,7 @@
namespace ptprnt::bitmap { namespace ptprnt::bitmap {
struct Bitmap { struct Bitmap {
std::vector<std::vector<int>> map; std::vector<std::vector<int>> map;
}; };
} } // namespace ptprnt::bitmap

View File

@@ -5,8 +5,8 @@
namespace ptprnt::driver { namespace ptprnt::driver {
struct info { struct info {
std::string name{""}; std::string name{""};
std::string version{""}; std::string version{""};
}; };
} } // namespace ptprnt::driver

View File

@@ -5,43 +5,40 @@
namespace ptprnt::driver { namespace ptprnt::driver {
class IDriver class IDriver {
{ public:
public: virtual ~IDriver(){};
virtual ~IDriver() {};
/** /**
* @brief Get Information struct about this driver * @brief Get Information struct about this driver
* *
* @return driver::info * @return driver::info
*/ */
virtual driver::info getInfo() = 0; virtual driver::info getInfo() = 0;
/** /**
* @brief opens up the device specified * @brief opens up the device specified
* *
* @return true successfully open up device * @return true successfully open up device
* @return false failed to open device * @return false failed to open device
*/ */
virtual bool open() = 0; virtual bool open() = 0;
/**
/**
* @brief close the device * @brief close the device
* *
* @return true successfully closed device * @return true successfully closed device
* @return false failed to close device * @return false failed to close device
*/ */
virtual bool close() = 0; virtual bool close() = 0;
/** /**
* @brief Send a command to device * @brief Send a command to device
* *
* @return true successfully sent command to device * @return true successfully sent command to device
* @return false error sending command * @return false error sending command
*/ */
virtual bool command() = 0; virtual bool command() = 0;
}; };
} } // namespace ptprnt::driver

View File

@@ -9,19 +9,18 @@
namespace ptprnt::printer { namespace ptprnt::printer {
class IPrinter class IPrinter {
{ public:
public: virtual ~IPrinter(){};
virtual ~IPrinter() {};
/** /**
* @brief Get Information struct about the printer * @brief Get Information struct about the printer
* *
* @return driver::info * @return driver::info
*/ */
virtual printer::info getInfo() = 0; virtual printer::info getInfo() = 0;
/** /**
* @brief Prints text immediatly * @brief Prints text immediatly
* *
* @param text Text to print * @param text Text to print
@@ -29,16 +28,16 @@ public:
* @return true Printing succeeded * @return true Printing succeeded
* @return false Printing failed * @return false Printing failed
*/ */
virtual bool printText(std::string_view text, uint32_t fontSize) = 0; virtual bool printText(std::string_view text, uint32_t fontSize) = 0;
/** /**
* @brief Prints supplied bitmap immediatly * @brief Prints supplied bitmap immediatly
* *
* @param bm Bitmap to print * @param bm Bitmap to print
* @return true Printing succeeded * @return true Printing succeeded
* @return false Printing failed * @return false Printing failed
*/ */
virtual bool printBitmap(std::shared_ptr<bitmap::Bitmap> bm) = 0; virtual bool printBitmap(std::shared_ptr<bitmap::Bitmap> bm) = 0;
}; };
} } // namespace ptprnt::printer

View File

@@ -1,21 +1,22 @@
#include "IDriver.hpp" #include "IDriver.hpp"
#include <cstdint> #include <cstdint>
#include <libusb-1.0/libusb.h>
#pragma once #pragma once
namespace ptprnt::driver { namespace ptprnt::driver {
class P700Driver : public IDriver class P700Driver : public IDriver {
{ public:
public: P700Driver(uint16_t UsbDevVendor = 0x04f9, uint16_t UsbDevId = 0x2061);
P700Driver(uint16_t UsbDevVendor = 0x04f9, uint16_t UsbDevId = 0x2061); ~P700Driver() override;
~P700Driver() override;
driver::info getInfo() override; driver::info getInfo() override;
bool open() override; bool open() override;
bool close() override; bool close() override;
bool command() override; bool command() override;
}; };
} } // namespace ptprnt::driver

View File

@@ -8,19 +8,18 @@
namespace ptprnt::printer { namespace ptprnt::printer {
class P700Printer : public IPrinter class P700Printer : public IPrinter {
{ public:
public: P700Printer(std::unique_ptr<driver::P700Driver> driver);
P700Printer(std::unique_ptr<driver::P700Driver> driver); ~P700Printer() override;
~P700Printer() override;
printer::info getInfo() override; printer::info getInfo() override;
bool printText(std::string_view text, uint32_t fontSize) override; bool printText(std::string_view text, uint32_t fontSize) override;
bool printBitmap(std::shared_ptr<bitmap::Bitmap> bm) override; bool printBitmap(std::shared_ptr<bitmap::Bitmap> bm) override;
private: private:
static info mPrinterInfo; static info mPrinterInfo;
std::unique_ptr<driver::P700Driver> mDriver; std::unique_ptr<driver::P700Driver> mDriver;
}; };
} } // namespace ptprnt::printer

View File

@@ -5,17 +5,17 @@
namespace ptprnt::printer { namespace ptprnt::printer {
enum class colorMode { enum class colorMode {
monochrome = 0, monochrome = 0,
color = 0, color = 0,
}; };
struct info { struct info {
std::string name{""}; std::string name{""};
std::string revision{""}; std::string revision{""};
uint32_t xres = {0}; uint32_t xres = {0};
uint32_t yres = {0}; uint32_t yres = {0};
colorMode color = {colorMode::monochrome}; colorMode color = {colorMode::monochrome};
bool cutter = {false}; bool cutter = {false};
}; };
} } // namespace ptprnt::printer

21
meson.build Normal file
View File

@@ -0,0 +1,21 @@
project('ptprnt', 'cpp',
version: '0.1.0',
license: 'GPLv3',
default_options : ['c_std=c11', 'cpp_std=c++17']
)
usbdep = dependency('libusb-1.0')
incdir = include_directories('inc')
srcs = [
'src/main.cpp',
'src/P700Driver.cpp',
'src/P700Printer.cpp'
]
executable(
'ptprnt', srcs,
include_directories : incdir,
dependencies : usbdep
)

View File

@@ -1,32 +1,28 @@
#include "P700Driver.hpp" #include "P700Driver.hpp"
#include <stdexcept>
#include <iostream> #include <iostream>
#include <stdexcept>
namespace ptprnt::driver { namespace ptprnt::driver {
P700Driver::P700Driver(uint16_t UsbDevVendor, uint16_t UsbDevId) { P700Driver::P700Driver(uint16_t UsbDevVendor, uint16_t UsbDevId) {}
} P700Driver::~P700Driver() {}
P700Driver::~P700Driver() {
}
driver::info P700Driver::getInfo() { driver::info P700Driver::getInfo() {
return driver::info{}; return driver::info{};
} }
bool P700Driver::open() { bool P700Driver::open() {
return false; return false;
} }
bool P700Driver::close() { bool P700Driver::close() {
return false; return false;
} }
bool P700Driver::command() { bool P700Driver::command() {
return false; return false;
} }
} } // namespace ptprnt::driver

View File

@@ -1,31 +1,32 @@
#include "P700Printer.hpp" #include "P700Printer.hpp"
#include <stdexcept>
#include <iostream> #include <iostream>
#include <stdexcept>
namespace ptprnt::printer { namespace ptprnt::printer {
P700Printer::P700Printer(std::unique_ptr<driver::P700Driver> driver) { P700Printer::P700Printer(std::unique_ptr<driver::P700Driver> driver) {
if(!driver->open()) { if (!driver->open()) {
throw std::invalid_argument("Could not open driver!"); throw std::invalid_argument("Could not open driver!");
} }
} }
P700Printer::~P700Printer() { P700Printer::~P700Printer() {
if(!mDriver->close()) { if (!mDriver->close()) {
std::cerr << "Could not close driver properly!" << std::endl; std::cerr << "Could not close driver properly!" << std::endl;
} }
} }
printer::info P700Printer::getInfo() { printer::info P700Printer::getInfo() {
return printer::info{}; return printer::info{};
} }
bool P700Printer::printText(std::string_view text, uint32_t fontSize) { bool P700Printer::printText(std::string_view text, uint32_t fontSize) {
return false; return false;
} }
bool P700Printer::printBitmap(std::shared_ptr<bitmap::Bitmap> bm) { bool P700Printer::printBitmap(std::shared_ptr<bitmap::Bitmap> bm) {
return false; return false;
} }
} } // namespace ptprnt::printer

View File

@@ -4,16 +4,16 @@
#include "IPrinter.hpp" #include "IPrinter.hpp"
#include "P700Printer.hpp" #include "P700Printer.hpp"
#include <libusb-1.0/libusb.h>
using namespace ptprnt; using namespace ptprnt;
int main(int argc, char** argv) { int main(int argc, char** argv) {
std::cout << "Hello ptprnt!" << std::endl; std::cout << "Hello ptprnt!" << std::endl;
libusb_init(NULL);
auto driver = std::make_unique<driver::P700Driver>();
auto printer = std::make_unique<printer::P700Printer>(std::move(driver));
printer::info info = printer->getInfo();
auto driver = std::make_unique<driver::P700Driver>(); return 0;
auto printer = std::make_unique<printer::P700Printer>(std::move(driver));
printer::info info = printer->getInfo();
return 0;
} }