Continue cleaning.

This commit is contained in:
jmsgrogan 2023-01-13 14:29:12 +00:00
parent cd688f608f
commit cb4212d972
67 changed files with 367 additions and 282 deletions

View file

@ -9,7 +9,7 @@ int main(int argc, char *argv[])
args->recordLaunchPath();
WebsiteGenerator generator;
generator.findProject(args->getArg(1));
generator.findProject(args->getArgs()[1]);
generator.readConfig();

View file

@ -41,7 +41,8 @@ void BlochSphereNode::update(SceneInfo* sceneInfo)
mOuterCircle = std::make_unique<CircleNode>(loc, mSize/2.0);
const auto end_point_x = Point(loc.getX() + 1.2 * mSize / 2.0, loc.getY());
mXAxis = std::make_unique<LineNode>(loc, { end_point_x });
const std::vector<Point> points{end_point_x };
mXAxis = std::make_unique<LineNode>(loc, points);
mCentreCircle = std::make_unique<CircleNode>(loc, mSize / 50.0);
mCentreCircle->setFillColor(Color(0, 0, 0));
@ -49,5 +50,6 @@ void BlochSphereNode::update(SceneInfo* sceneInfo)
addChild(mInnerCircle.get());
addChild(mOuterCircle.get());
addChild(mXAxis.get());
addChild(mCentreCircle.get());
}

View file

@ -73,7 +73,7 @@ void TemplateFile::onTextSpanFinished()
mWorkingLineContent.clear();
}
unsigned TemplateFile::checkForStatement(const std::string& lineSection)
std::size_t TemplateFile::checkForStatement(const std::string& lineSection)
{
if (lineSection.empty())
{
@ -81,7 +81,7 @@ unsigned TemplateFile::checkForStatement(const std::string& lineSection)
}
std::vector<std::string> hits;
unsigned hit_size{0};
std::size_t hit_size{0};
if (Lexer::matchPattern("{%@%}", lineSection, '@', hits))
{
if (hits.size() == 1)
@ -97,7 +97,7 @@ unsigned TemplateFile::checkForStatement(const std::string& lineSection)
return hit_size;
}
unsigned TemplateFile::checkForExpression(const std::string& lineSection)
std::size_t TemplateFile::checkForExpression(const std::string& lineSection)
{
if (lineSection.empty())
{
@ -105,7 +105,7 @@ unsigned TemplateFile::checkForExpression(const std::string& lineSection)
}
std::vector<std::string> hits;
unsigned hit_size{0};
std::size_t hit_size{0};
if (Lexer::matchPattern("{{@}}", lineSection, '@', hits))
{
if (hits.size() == 1)
@ -123,7 +123,7 @@ unsigned TemplateFile::checkForExpression(const std::string& lineSection)
void TemplateFile::processLine(const std::string& line)
{
unsigned line_position = 0;
std::size_t line_position = 0;
mWorkingLineContent.clear();
while(line_position < line.size())
{

View file

@ -27,9 +27,9 @@ public:
void loadContent();
private:
unsigned checkForStatement(const std::string& lineSection);
std::size_t checkForStatement(const std::string& lineSection);
unsigned checkForExpression(const std::string& lineSection);
std::size_t checkForExpression(const std::string& lineSection);
void onTextSpanFinished();

View file

@ -218,7 +218,7 @@ unsigned HuffmanCodeLengthTable::mapToDeflateIndex(unsigned index) const
}
}
unsigned HuffmanCodeLengthTable::getNumCodeLengths() const
std::size_t HuffmanCodeLengthTable::getNumCodeLengths() const
{
return mTree.getNumCodeLengths();
}

View file

@ -30,7 +30,7 @@ public:
const std::vector<unsigned> getCompressedLengthCounts() const;
unsigned getNumCodeLengths() const;
std::size_t getNumCodeLengths() const;
unsigned getCodeLength(std::size_t treeIndex) const;

View file

@ -1,6 +1,6 @@
set(MODULE_NAME core)
list(APPEND core_HEADERS
list(APPEND HEADERS
AbstractApp.h
AbstractNamedItem.h
AbstractWebApp.h
@ -8,20 +8,22 @@ list(APPEND core_HEADERS
Event.h
Color.h
CommandLineArgs.h
encoding/ByteUtils.h
encoding/StringUtils.h
encoding/UnicodeUtils.h
loggers/FileLogger.h
file_utilities/Directory.h
file_utilities/File.h
file_utilities/FileFormats.h
file_utilities/PathUtils.h
StringUtils.h
http/HttpResponse.h
http/HttpHeader.h
http/HttpRequest.h
serializers/TomlReader.h
Win32BaseIncludes.h
)
list(APPEND core_LIB_INCLUDES
ByteUtils.cpp
list(APPEND LIB_INCLUDES
Event.cpp
Dictionary.cpp
Color.cpp
@ -35,7 +37,9 @@ list(APPEND core_LIB_INCLUDES
file_utilities/PathUtils.cpp
memory/SharedMemory.cpp
RandomUtils.cpp
StringUtils.cpp
encoding/StringUtils.cpp
encoding/ByteUtils.cpp
encoding/UnicodeUtils.cpp
streams/BinaryStream.cpp
streams/BitStream.cpp
streams/InputBitStream.cpp
@ -46,10 +50,11 @@ list(APPEND core_LIB_INCLUDES
http/HttpRequest.cpp
serializers/TomlReader.cpp)
add_library(${MODULE_NAME} SHARED ${core_LIB_INCLUDES} ${core_HEADERS})
add_library(${MODULE_NAME} SHARED ${LIB_INCLUDES} ${HEADERS})
target_include_directories(${MODULE_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/encoding
${CMAKE_CURRENT_SOURCE_DIR}/file_utilities
${CMAKE_CURRENT_SOURCE_DIR}/loggers
${CMAKE_CURRENT_SOURCE_DIR}/memory

View file

@ -1,9 +1,8 @@
#include "CommandLineArgs.h"
#include "StringUtils.h"
#ifdef _WIN32
#include "Windows.h"
#endif
#include "UnicodeUtils.h"
#include "Win32BaseIncludes.h"
CommandLineArgs::CommandLineArgs()
: mArugments(),
@ -25,7 +24,7 @@ void CommandLineArgs::initialize(CommandLineArgs* args)
std::vector<std::string> windowsArgs(nArgs);
for (int idx = 0; idx < nArgs; idx++)
{
windowsArgs[idx] = StringUtils::convert(szArglist[idx]);
windowsArgs[idx] = UnicodeUtils::utf16ToUtf8String(szArglist[idx]);
}
::LocalFree(szArglist);

View file

@ -1,4 +1,5 @@
#pragma once
#include <memory>
#include <vector>
#include <string>
@ -15,15 +16,15 @@ public:
const std::vector<std::string> getArgs() const;
std::vector<std::string> getUserArgs() const;
static void initialize(CommandLineArgs* args);
void process(int argc, char *argv[]);
void process(const std::vector<std::string>& args);
void recordLaunchPath();
std::vector<std::string> getUserArgs() const;
static void initialize(CommandLineArgs* args);
private:
std::vector<std::string> mArugments;
std::filesystem::path mLaunchPath;

View file

@ -0,0 +1,13 @@
#pragma once
#ifndef UNICODE
#define UNICODE
#endif
//#ifndef WIN32_LEAN_AND_MEAN
//#define WIN32_LEAN_AND_MEAN
//#endif
#ifdef _WIN32
#include "Windows.h"
#endif

View file

@ -67,6 +67,6 @@ public:
static bool CompareWords(char* buffer, const char* tag);
static const int BYTE_FIRST_BIT = 0x40; // 1000 0000
static const Word WORD_FIRST_BIT = 0x8000; // 1000 0000 - 0000 0000
static const Word WORD_FIRST_BIT = static_cast<Word>(0x8000); // 1000 0000 - 0000 0000
static const Word WORD_LAST_BYTE = 0x00FF; // 0000 0000 - 1111 1111
};

View file

@ -5,10 +5,6 @@
#include <sstream>
#include <iomanip>
#ifdef _WIN32
#include "Windows.h"
#endif
bool StringUtils::isAlphaNumeric(char c)
{
return std::isalnum(c);
@ -57,7 +53,7 @@ bool StringUtils::isWhitespaceOnly(const std::string& input)
}
}
unsigned StringUtils::countFirstConsecutiveHits(const std::string& input, char c)
std::size_t StringUtils::countFirstConsecutiveHits(const std::string& input, char c)
{
auto found_id = input.find(c);
if(found_id == std::string::npos)
@ -66,8 +62,8 @@ unsigned StringUtils::countFirstConsecutiveHits(const std::string& input, char c
}
else
{
unsigned count = 1;
for(unsigned idx=found_id+1; idx<input.size(); idx++)
std::size_t count = 1;
for(std::size_t idx=found_id+1; idx<input.size(); idx++)
{
if(input[idx] == c)
{
@ -153,41 +149,6 @@ std::string StringUtils::toLower(const std::string& s)
return ret;
}
std::string StringUtils::convert(const std::wstring& input)
{
if (input.empty())
{
return std::string();
}
#ifdef _WIN32
const auto size = ::WideCharToMultiByte(CP_UTF8, 0, &input[0], (int)input.size(), nullptr, 0, nullptr, nullptr);
std::string result(size, 0);
::WideCharToMultiByte(CP_UTF8, 0, &input[0], (int)input.size(), &result[0], size, nullptr, nullptr);
return result;
#else
throw std::logic_error("Not implemented");
#endif
}
std::wstring StringUtils::convert(const std::string& input)
{
if (input.empty())
{
return std::wstring();
}
#ifdef _WIN32
const auto charsNeeded = ::MultiByteToWideChar(CP_UTF8, 0, input.data(), (int)input.size(), NULL, 0);
std::vector<wchar_t> buffer(charsNeeded);
const auto charsConverted = ::MultiByteToWideChar(CP_UTF8, 0, input.data(), (int)input.size(), &buffer[0], buffer.size());
return std::wstring(&buffer[0], charsConverted);
#else
throw std::logic_error("Not implemented");
#endif
}
std::string StringUtils::toPaddedString(unsigned numBytes, unsigned entry)
{
std::stringstream sstr;

View file

@ -16,11 +16,7 @@ public:
static constexpr char SINGLE_QUOTE = '\'';
static constexpr char COLON = ':';
static unsigned countFirstConsecutiveHits(const std::string& input, char c);
static std::string convert(const std::wstring& input);
static std::wstring convert(const std::string& input);
static std::size_t countFirstConsecutiveHits(const std::string& input, char c);
static bool isAlphaNumeric(char c);

View file

@ -0,0 +1,40 @@
#include "UnicodeUtils.h"
#include "Win32BaseIncludes.h"
#include <vector>
std::string UnicodeUtils::utf16ToUtf8String(const std::wstring& input)
{
if (input.empty())
{
return std::string();
}
#ifdef _WIN32
const auto size = ::WideCharToMultiByte(CP_UTF8, 0, &input[0], static_cast<int>(input.size()), nullptr, 0, nullptr, nullptr);
std::string result(size, 0);
::WideCharToMultiByte(CP_UTF8, 0, &input[0], static_cast<int>(input.size()), &result[0], size, nullptr, nullptr);
return result;
#else
throw std::logic_error("Not implemented");
#endif
}
std::wstring UnicodeUtils::utf8ToUtf16WString(const std::string& input)
{
if (input.empty())
{
return std::wstring();
}
#ifdef _WIN32
const auto charsNeeded = ::MultiByteToWideChar(CP_UTF8, 0, input.data(), static_cast<int>(input.size()), nullptr, 0);
std::vector<wchar_t> buffer(charsNeeded);
const auto charsConverted = ::MultiByteToWideChar(CP_UTF8, 0, input.data(), static_cast<int>(input.size()), &buffer[0], static_cast<int>(buffer.size()));
return std::wstring(&buffer[0], charsConverted);
#else
throw std::logic_error("Not implemented");
#endif
}

View file

@ -0,0 +1,11 @@
#pragma once
#include <string>
class UnicodeUtils
{
public:
static std::string utf16ToUtf8String(const std::wstring& input);
static std::wstring utf8ToUtf16WString(const std::string& input);
};

View file

@ -21,7 +21,7 @@ std::optional<unsigned char> InputBitStream::readNextByte()
{
if (mStream->good())
{
return mStream->get();
return static_cast<unsigned char>(mStream->get());
}
else
{

View file

@ -9,7 +9,7 @@ class BasicFontEngine : public IFontEngine
{
virtual void initialize(){};
virtual void loadFontFace(const std::filesystem::path& fontFile, int penSize = 16){};
virtual void loadFontFace(const std::filesystem::path& fontFile, float penSize = 16){};
virtual std::unique_ptr<FontGlyph> loadGlyph(unsigned charCode){return nullptr;};
};

View file

@ -14,6 +14,8 @@ list(APPEND fonts_LIB_INCLUDES
FontGlyph.h
IFont.h
IFontEngine.h
BasicFontEngine.h
BasicFontEngine.cpp
)
if(UNIX)

View file

@ -34,7 +34,7 @@ IFontEngine* FontsManager::getFontEngine() const
return mFontEngine.get();
}
FontGlyph* FontsManager::getGlyph(const std::string& fontFace, int size, uint32_t c)
FontGlyph* FontsManager::getGlyph(const std::string& fontFace, float size, uint32_t c)
{
auto path = std::filesystem::path("truetype/liberation/LiberationSans-Regular.ttf");

View file

@ -17,7 +17,7 @@ public:
bool usesGlyphs() const;
FontGlyph* getGlyph(const std::string& fontFace, int size, uint32_t c);
FontGlyph* getGlyph(const std::string& fontFace, float size, uint32_t c);
private:
bool mUsesGlyphs{ false };

View file

@ -13,7 +13,7 @@ public:
virtual void initialize(){};
virtual void loadFontFace(const std::filesystem::path& fontFile, int penSize = 16) = 0;
virtual void loadFontFace(const std::filesystem::path& fontFile, float penSize = 16) = 0;
virtual std::unique_ptr<FontGlyph> loadGlyph(uint32_t charCode) = 0;
};

View file

@ -1,7 +1,7 @@
#include "DirectWriteFontEngine.h"
#include "FontGlyph.h"
#include "StringUtils.h"
#include "UnicodeUtils.h"
#include "DirectWriteHelpers.h"
@ -24,10 +24,10 @@ void DirectWriteFontEngine::initializeOffScreenRenderer()
pInterface->QueryInterface(IID_IOffScreenTextRenderer, &mOffScreenRenderer);
}
void DirectWriteFontEngine::loadFontFaceFromName(const std::string& fontName, int penSize)
void DirectWriteFontEngine::loadFontFaceFromName(const std::string& fontName, float penSize)
{
mDWriteFactory->CreateTextFormat(StringUtils::convert(fontName).c_str(), nullptr, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL,
penSize, L"en-us", &mTextFormat);
mDWriteFactory->CreateTextFormat(UnicodeUtils::utf8ToUtf16WString(fontName).c_str(), nullptr, DWRITE_FONT_WEIGHT_NORMAL,
DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, penSize, L"en-us", &mTextFormat);
}
std::unique_ptr<FontGlyph> DirectWriteFontEngine::loadGlyph(uint32_t charCode)
@ -45,7 +45,7 @@ std::unique_ptr<GlyphRunOutlines> DirectWriteFontEngine::getGlyphRunOutlines(con
text.push_back(code);
}
auto hr = mDWriteFactory->CreateTextLayout(text.c_str(), text.size(), mTextFormat.Get(), 50.0, 50.0, &mTextLayout);
auto hr = mDWriteFactory->CreateTextLayout(text.c_str(), static_cast<UINT32>(text.size()), mTextFormat.Get(), 50.0, 50.0, &mTextLayout);
mTextLayout->Draw(nullptr, mOffScreenRenderer.Get(), 0.0, 0.0);

View file

@ -19,9 +19,9 @@ class DirectWriteFontEngine : public IFontEngine
public:
void initialize() override;
void loadFontFace(const std::filesystem::path& fontFile, int penSize = 16) override {};
void loadFontFace(const std::filesystem::path& fontFile, float penSize = 16) override {};
void loadFontFaceFromName(const std::string& fontName, int penSize = 16);
void loadFontFaceFromName(const std::string& fontName, float penSize = 16);
std::unique_ptr<FontGlyph> loadGlyph(uint32_t charCode) override;

View file

@ -1,46 +1,53 @@
set(MODULE_NAME geometry)
list(APPEND geometry_LIB_INCLUDES
list(APPEND HEADERS
AbstractGeometricItem.h
Bounds.h
DiscretePoint.h
DiscretePoint.cpp
Grid.h
Grid.cpp
Point.h
Point.cpp
Transform.cpp
math/Linalg.h
math/Linalg.cpp
math/Matrix.h
math/Matrix.cpp
math/Vector.h
math/Vector.cpp
path/Curve.h
path/Curve.cpp
path/Line.h
path/Line.cpp
path/LineSegment.h
path/LineSegment.cpp
path/Path.h
path/Path.cpp
path/PathElement.h
points/Point.h
points/PointCollection.h
points/DiscretePoint.h
primitives/Circle.h
primitives/Circle.cpp
primitives/Quad.h
primitives/Quad.cpp
primitives/Rectangle.h
primitives/Rectangle.cpp
primitives/Triangle.h
)
list(APPEND LIB_INCLUDES
Grid.cpp
Transform.cpp
math/Linalg.cpp
math/Matrix.cpp
math/Vector.cpp
path/Curve.cpp
path/Line.cpp
path/LineSegment.cpp
path/Path.cpp
path/PathElement.cpp
points/Point.cpp
points/PointCollection.cpp
points/DiscretePoint.cpp
primitives/Circle.cpp
primitives/Quad.cpp
primitives/Rectangle.cpp
primitives/Triangle.cpp
)
add_library(${MODULE_NAME} SHARED ${geometry_LIB_INCLUDES})
add_library(${MODULE_NAME} SHARED ${LIB_INCLUDES} ${HEADERS})
target_include_directories(${MODULE_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/math
${CMAKE_CURRENT_SOURCE_DIR}/path
${CMAKE_CURRENT_SOURCE_DIR}/points
${CMAKE_CURRENT_SOURCE_DIR}/primitives
)

View file

@ -17,6 +17,8 @@ public:
Bounds getBounds() const override;
void sample(Grid* grid) const override {};
private:
Point mStartPoint;
std::vector<Point> mPoints;

View file

@ -1,6 +1,11 @@
#include "Path.h"
const std::vector<PathElementPtr> Path::getElements() const
Path::~Path()
{
}
const std::vector<PathElementPtr>& Path::getElements() const
{
return mElements;
}

View file

@ -10,7 +10,8 @@ using PathElementPtr = std::unique_ptr<PathElement>;
class Path : public AbstractGeometricItem
{
public:
const std::vector<PathElementPtr> getElements() const;
~Path();
const std::vector<PathElementPtr>& getElements() const;
private:
std::vector<PathElementPtr> mElements;

View file

@ -0,0 +1,6 @@
#include "PathElement.h"
PathElement::~PathElement()
{
}

View file

@ -5,5 +5,5 @@
class PathElement : public AbstractGeometricItem
{
public:
~PathElement() = default;
~PathElement();
};

View file

@ -1,5 +1,7 @@
#include "Point.h"
#include "Transform.h"
#include <cmath>
Point::Point(double x, double y, double z)
@ -77,16 +79,13 @@ double Point::getDeltaZ(const Point& point) const
return point.getZ() - mZ;
}
void Point::scale(double x, double y, double z)
void Point::apply(const Transform& transform)
{
mX = x * mX;
mY = y * mY;
mZ = z * mZ;
}
mX -= transform.getLocation().getX();
mY -= transform.getLocation().getY();
mZ -= transform.getLocation().getZ();
void Point::translate(double x, double y, double z)
{
mX += x;
mY += y;
mZ += z;
mX *= transform.getScaleX();
mY *= transform.getScaleY();
mZ *= transform.getScaleZ();
}

View file

@ -4,6 +4,9 @@
#include "Vector.h"
#include <memory>
#include <vector>
class Transform;
class Point
{
@ -18,6 +21,8 @@ public:
static std::shared_ptr<Point> Create(double x, double y, double z = 0);
void apply(const Transform& transform);
double getX() const;
double getY() const;
@ -34,10 +39,6 @@ public:
Vector getDelta(const Point& point) const;
void scale(double x, double y, double z = 1.0);
void translate(double x, double y, double z = 0.0);
bool operator==(const Point& rhs) const
{
return (mX == rhs.mX)
@ -56,4 +57,4 @@ private:
double mZ{0};
};
using PointPtr = std::shared_ptr<Point>;
using PointPtr = std::unique_ptr<Point>;

View file

@ -0,0 +1,15 @@
#include "PointCollection.h"
PointCollection::PointCollection(const std::vector<Point> points)
: mPoints(points)
{
}
void PointCollection::apply(const Transform& transform)
{
for (auto& point : mPoints)
{
point.apply(transform);
}
}

View file

@ -0,0 +1,15 @@
#pragma once
#include "Point.h"
#include "Transform.h"
class PointCollection
{
public:
PointCollection(const std::vector<Point> points = {});
void apply(const Transform& transform);
private:
std::vector<Point> mPoints;
};

View file

@ -6,7 +6,7 @@
RasterPainter::RasterPainter(DrawingContext* context)
: AbstractPainter(context),
mGrid(std::make_unique<Grid<unsigned char> >(ntk::Rectangle(Point(0, 0), Point(100, 100))))
mGrid(std::make_unique<Grid>(Bounds{0.0, 0.0, 100.0, 100.0}))
{
}
@ -15,7 +15,7 @@ void RasterPainter::paint()
{
const auto width = mDrawingContext->getSurface()->getWidth();
const auto height = mDrawingContext->getSurface()->getHeight();
mGrid->resetBounds(ntk::Rectangle(Point(0, 0), Point(width, height)));
mGrid->resetBounds(Bounds{ 0.0, 0.0, static_cast<double>(width), static_cast<double>(height) });
/*
for (unsigned idx=0; idx< context->getNumItems(); idx++)

View file

@ -1,11 +1,10 @@
#pragma once
#include "AbstractPainter.h"
#include <memory>
class DrawingContext;
template<class T>
class Grid;
class RasterPainter : public AbstractPainter
@ -16,5 +15,5 @@ public:
void paint() override;
private:
std::unique_ptr<Grid<unsigned char> > mGrid;
std::unique_ptr<Grid> mGrid;
};

View file

@ -10,10 +10,10 @@
#include "SceneText.h"
#include "DirectX2dInterface.h"
#include "StringUtils.h"
#include "UnicodeUtils.h"
#include "File.h"
#include <windows.h>
#include "Win32BaseIncludes.h"
#include <d2d1_3.h>
#include <d2d1_1.h>
@ -33,7 +33,7 @@ void DirectXTextPainter::setD2dInterface(DirectX2dInterface* d2dIterface)
void DirectXTextPainter::updateTextFormat(const FontItem& font)
{
mD2dInterface->getDirectWriteFactory()->CreateTextFormat(
StringUtils::convert(font.getFaceName()).c_str(),
UnicodeUtils::utf8ToUtf16WString(font.getFaceName()).c_str(),
nullptr,
DWRITE_FONT_WEIGHT_NORMAL,
DWRITE_FONT_STYLE_NORMAL,
@ -53,7 +53,7 @@ void DirectXTextPainter::paint(SceneText* text, DrawingContext* context)
updateTextFormat(text->getTextData().mFont);
auto content = StringUtils::convert(text->getTextData().mContent);
auto content = UnicodeUtils::utf8ToUtf16WString(text->getTextData().mContent);
mD2dInterface->getRenderTarget()->DrawText(content.c_str(), static_cast<UINT32>(content.size()), mTextFormat.Get(), &textRect, mTextBrush.Get());
}

View file

@ -126,7 +126,7 @@ void PngWriter::writeDataChunks(const BufferBitStream& buffer)
auto max_bytes{32000};
auto num_dat_chunks = num_bytes/max_bytes + 1;
unsigned offset = 0;
std::size_t offset = 0;
for(std::size_t idx=0;idx<num_dat_chunks;idx++)
{
auto length = max_bytes;

View file

@ -2,7 +2,7 @@
#include "Edge.h"
AbstractFace::AbstractFace(unsigned id)
AbstractFace::AbstractFace(std::size_t id)
: mId(id)
{

View file

@ -19,29 +19,29 @@ public:
CCW
};
AbstractFace(unsigned id=0);
AbstractFace(std::size_t id=0);
virtual ~AbstractFace();
virtual std::vector<unsigned> getNodeIds() const = 0;
virtual std::vector<std::size_t> getNodeIds() const = 0;
void addVectorAttribute(const std::string& tag, const std::vector<double>& values);
std::vector<double> getVectorAttribute(const std::string& tag) const;
void setIndex(std::size_t idx);
virtual unsigned getNumNodes() const = 0;
virtual std::size_t getNumNodes() const = 0;
virtual void associateWidthEdges() = 0;
virtual void replaceEdge(Edge* original, Edge* replacement) = 0;
virtual std::vector<unsigned> getEdgeIds() const = 0;
virtual std::vector<std::size_t> getEdgeIds() const = 0;
virtual std::vector<Point> getNodeLocations(Orientation orientation = Orientation::CCW) const = 0;
virtual void replaceEdge(Edge* original, Edge* replacement) = 0;
void setIndex(std::size_t idx);
protected:
unsigned mId{0};
std::size_t mId{0};
std::unordered_map<std::string, std::vector<double> > mVectorAttributes;
};

View file

@ -2,14 +2,14 @@
#include "Node.h"
Edge::Edge(Node* node0, Node* node1, unsigned id)
Edge::Edge(Node* node0, Node* node1, std::size_t id)
: mNode0(node0),
mNode1(node1),
mId(id)
{
}
std::unique_ptr<Edge> Edge::Create(Node* node0, Node* node1, unsigned id)
std::unique_ptr<Edge> Edge::Create(Node* node0, Node* node1, std::size_t id)
{
return std::make_unique<Edge>(node0, node1, id);
}
@ -19,12 +19,12 @@ Edge::~Edge()
}
unsigned Edge::getNode0Id() const
std::size_t Edge::getNode0Id() const
{
return mNode0->getIndex();
}
unsigned Edge::getNode1Id() const
std::size_t Edge::getNode1Id() const
{
return mNode1->getIndex();
}
@ -75,7 +75,7 @@ Node* Edge::getOtherNode(Node* node) const
}
}
unsigned Edge::getId() const
std::size_t Edge::getId() const
{
return mId;
}
@ -95,17 +95,17 @@ void Edge::clearConnectivity()
mAssociatedFaceIds.clear();
}
unsigned Edge::getNumConnectedFaces() const
std::size_t Edge::getNumConnectedFaces() const
{
return mAssociatedFaceIds.size();
}
void Edge::associateFace(unsigned faceId)
void Edge::associateFace(std::size_t faceId)
{
mAssociatedFaceIds.push_back(faceId);
}
unsigned Edge::getConnectedFaceId(std::size_t idx) const
std::size_t Edge::getConnectedFaceId(std::size_t idx) const
{
return mAssociatedFaceIds[idx];
}
@ -116,7 +116,7 @@ void Edge::associateWithNodes()
mNode1->associateEdge(mId);
}
void Edge::setIndex(unsigned idx)
void Edge::setIndex(std::size_t idx)
{
mId = idx;
}

View file

@ -14,33 +14,33 @@ public:
DIRTY
};
Edge(Node* node0, Node* node1, unsigned id = 0);
Edge(Node* node0, Node* node1, std::size_t id = 0);
~Edge();
static std::unique_ptr<Edge> Create(Node* node0, Node* node1, unsigned id = 0);
static std::unique_ptr<Edge> Create(Node* node0, Node* node1, std::size_t id = 0);
void associateFace(unsigned faceId);
void associateFace(std::size_t faceId);
void associateWithNodes();
void clearConnectivity();
unsigned getConnectedFaceId(std::size_t idx) const;
std::size_t getConnectedFaceId(std::size_t idx) const;
State getState() const;
unsigned getId() const;
std::size_t getId() const;
unsigned getNode0Id() const;
std::size_t getNode0Id() const;
unsigned getNode1Id() const;
std::size_t getNode1Id() const;
Node* getNode0() const;
Node* getNode1() const;
unsigned getNumConnectedFaces() const;
std::size_t getNumConnectedFaces() const;
Node* getOtherNode(Node* node) const;
@ -52,14 +52,14 @@ public:
void setState(State state);
void setIndex(unsigned idx);
void setIndex(std::size_t idx);
private:
unsigned mId{0};
std::size_t mId{0};
Node* mNode0{nullptr};
Node* mNode1{nullptr};
std::vector<unsigned> mAssociatedFaceIds;
std::vector<std::size_t> mAssociatedFaceIds;
State mState{State::HEALTHY};
};

View file

@ -4,8 +4,6 @@
#include "Edge.h"
#include "AbstractFace.h"
#include <iostream>
FaceMesh::~FaceMesh()
{
@ -26,7 +24,7 @@ const VecFaces& FaceMesh::getFaces() const
return mFaces;
}
std::vector<unsigned> FaceMesh::getFaceNodeIds() const
std::vector<std::size_t> FaceMesh::getFaceNodeIds() const
{
if (mFaces.empty())
{
@ -34,7 +32,7 @@ std::vector<unsigned> FaceMesh::getFaceNodeIds() const
}
auto nodes_per_face = mFaces[0]->getNumNodes();
std::vector<unsigned> ids(nodes_per_face*mFaces.size());
std::vector<std::size_t> ids(nodes_per_face*mFaces.size());
for(std::size_t idx=0; idx<mFaces.size(); idx++)
{
@ -67,7 +65,7 @@ void FaceMesh::addConstantFaceVectorAttribute(const std::string& tag, const std:
void FaceMesh::resetIds()
{
unsigned count = 0;
std::size_t count = 0;
for (auto& node : mNodes)
{
node->setIndex(count);
@ -115,7 +113,7 @@ void FaceMesh::replaceIfOverlapping(FaceMesh* mesh, Node* target_node) const
if (node->getNumConnectedEdges() == 3 && node->isCoincident(target_node))
{
target_node->setState(Node::State::DIRTY);
for (unsigned idx=0; idx<3; idx++)
for (std::size_t idx=0; idx<3; idx++)
{
auto edge = mesh->mEdges[idx].get();
edge->replaceNodes(target_node, node.get());
@ -132,7 +130,7 @@ void FaceMesh::replaceIfOverlapping(FaceMesh* mesh, Edge* target_edge) const
if (edge->getNumConnectedFaces() == 2 && target_edge->hasSameNodes(edge.get()))
{
target_edge->setState(Edge::State::DIRTY);
for (unsigned idx=0; idx<2; idx++)
for (std::size_t idx=0; idx<2; idx++)
{
auto face = mesh->mFaces[idx].get();
face->replaceEdge(target_edge, edge.get());
@ -142,9 +140,9 @@ void FaceMesh::replaceIfOverlapping(FaceMesh* mesh, Edge* target_edge) const
}
}
std::vector<unsigned> FaceMesh::getEdgeNodeIds() const
std::vector<std::size_t> FaceMesh::getEdgeNodeIds() const
{
std::vector<unsigned> ids(2*mEdges.size());
std::vector<std::size_t> ids(2*mEdges.size());
for(std::size_t idx=0; idx<mEdges.size(); idx++)
{
ids[2*idx] = mEdges[idx]->getNode0Id();

View file

@ -25,9 +25,9 @@ public:
void populate(VecNodes& nodes, VecEdges& edges, VecFaces& faces);
std::vector<unsigned> getFaceNodeIds() const;
std::vector<std::size_t> getFaceNodeIds() const;
std::vector<unsigned> getEdgeNodeIds() const;
std::vector<std::size_t> getEdgeNodeIds() const;
void addConstantFaceVectorAttribute(const std::string& tag, const std::vector<double>& values);

View file

@ -23,9 +23,9 @@ LineMesh::MeshType LineMesh::getType() const
return LineMesh::MeshType::LINE;
}
std::vector<unsigned> LineMesh::getEdgeNodeIds() const
std::vector<std::size_t> LineMesh::getEdgeNodeIds() const
{
std::vector<unsigned> ids(2*mEdges.size());
std::vector<std::size_t> ids(2*mEdges.size());
for(std::size_t idx=0; idx<mEdges.size(); idx++)
{
ids[2*idx] = mEdges[idx]->getNode0Id();

View file

@ -18,7 +18,7 @@ public:
void populate(VecNodes& nodes, VecEdges& edges);
std::vector<unsigned> getEdgeNodeIds() const;
std::vector<std::size_t> getEdgeNodeIds() const;
MeshType getType() const override;

View file

@ -1,6 +1,6 @@
#include "Node.h"
std::unique_ptr<Node> Node::Create(const Point& p, unsigned index)
std::unique_ptr<Node> Node::Create(const Point& p, std::size_t index)
{
return std::make_unique<Node>(p, index);
}
@ -10,19 +10,19 @@ Node::~Node()
}
Node::Node(const Point& p, unsigned index)
Node::Node(const Point& p, std::size_t index)
: mPoint(p),
mIndex(index)
{
}
unsigned Node::getIndex() const
std::size_t Node::getIndex() const
{
return mIndex;
}
void Node::updateIndex(unsigned index)
void Node::updateIndex(std::size_t index)
{
mIndex = index;
}
@ -78,32 +78,32 @@ void Node::clearConnectivity()
mAssociatedFaceIds.clear();
}
unsigned Node::getNumConnectedEdges() const
std::size_t Node::getNumConnectedEdges() const
{
return mAssociatedEdgeIds.size();
}
unsigned Node::getNumConnectedFaces() const
std::size_t Node::getNumConnectedFaces() const
{
return mAssociatedFaceIds.size();
}
void Node::associateEdge(unsigned edgeId)
void Node::associateEdge(std::size_t edgeId)
{
mAssociatedEdgeIds.push_back(edgeId);
}
void Node::associateFace(unsigned faceId)
void Node::associateFace(std::size_t faceId)
{
mAssociatedFaceIds.push_back(faceId);
}
unsigned Node::getConnectedEdgeId(std::size_t idx) const
std::size_t Node::getConnectedEdgeId(std::size_t idx) const
{
return mAssociatedEdgeIds[idx];
}
unsigned Node::getConnectedFaceId(std::size_t idx) const
std::size_t Node::getConnectedFaceId(std::size_t idx) const
{
return mAssociatedFaceIds[idx];
}

View file

@ -16,29 +16,29 @@ public:
DIRTY
};
Node(const Point& p, unsigned index = 0);
Node(const Point& p, std::size_t index = 0);
static std::unique_ptr<Node> Create(const Point& p, unsigned index = 0);
static std::unique_ptr<Node> Create(const Point& p, std::size_t index = 0);
~Node();
void associateEdge(unsigned edgeId);
void associateEdge(std::size_t edgeId);
void associateFace(unsigned faceId);
void associateFace(std::size_t faceId);
void addVectorAttribute(const std::string& tag, const std::vector<double>& values);
void clearConnectivity();
unsigned getIndex() const;
std::size_t getIndex() const;
unsigned getNumConnectedEdges() const;
std::size_t getNumConnectedEdges() const;
unsigned getNumConnectedFaces() const;
std::size_t getNumConnectedFaces() const;
unsigned getConnectedEdgeId(std::size_t idx) const;
std::size_t getConnectedEdgeId(std::size_t idx) const;
unsigned getConnectedFaceId(std::size_t idx) const;
std::size_t getConnectedFaceId(std::size_t idx) const;
State getState() const;
@ -52,7 +52,7 @@ public:
void setIndex(std::size_t idx);
void updateIndex(unsigned index);
void updateIndex(std::size_t index);
void scale(double x, double y);
@ -60,11 +60,11 @@ public:
private:
std::unordered_map<std::string, std::vector<double> > mVectorAttributes;
unsigned mIndex{0};
std::size_t mIndex{0};
Point mPoint;
std::vector<unsigned> mAssociatedEdgeIds;
std::vector<unsigned> mAssociatedFaceIds;
std::vector<std::size_t> mAssociatedEdgeIds;
std::vector<std::size_t> mAssociatedFaceIds;
State mState{State::HEALTHY};
};

View file

@ -3,7 +3,7 @@
#include "Edge.h"
#include "Node.h"
TriFace::TriFace(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id)
TriFace::TriFace(Edge* edge0, Edge* edge1, Edge* edge2, std::size_t id)
: AbstractFace(id),
mEdge0(edge0),
mEdge1(edge1),
@ -12,7 +12,7 @@ TriFace::TriFace(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id)
}
std::unique_ptr<TriFace> TriFace::Create(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id)
std::unique_ptr<TriFace> TriFace::Create(Edge* edge0, Edge* edge1, Edge* edge2, std::size_t id)
{
return std::make_unique<TriFace>(edge0, edge1, edge2, id);
}
@ -22,12 +22,12 @@ TriFace::~TriFace()
}
std::vector<unsigned> TriFace::getNodeIds() const
std::vector<std::size_t> TriFace::getNodeIds() const
{
return {mEdge0->getNode0Id(), mEdge0->getNode1Id(), mEdge1->getNode1Id()};
}
unsigned TriFace::getNumNodes() const
std::size_t TriFace::getNumNodes() const
{
return 3;
}
@ -48,22 +48,22 @@ void TriFace::replaceEdge(Edge* original, Edge* replacement)
}
}
unsigned TriFace::getEdge0Id () const
std::size_t TriFace::getEdge0Id () const
{
return mEdge0->getId();
}
unsigned TriFace::getEdge1Id () const
std::size_t TriFace::getEdge1Id () const
{
return mEdge1->getId();
}
unsigned TriFace::getEdge2Id () const
std::size_t TriFace::getEdge2Id () const
{
return mEdge2->getId();
}
std::vector<unsigned> TriFace::getEdgeIds() const
std::vector<std::size_t> TriFace::getEdgeIds() const
{
return {mEdge0->getId(), mEdge1->getId(), mEdge2->getId()};
}

View file

@ -8,24 +8,24 @@ class Edge;
class TriFace : public AbstractFace
{
public:
TriFace(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id=0);
TriFace(Edge* edge0, Edge* edge1, Edge* edge2, std::size_t id=0);
~TriFace();
static std::unique_ptr<TriFace> Create(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id=0);
static std::unique_ptr<TriFace> Create(Edge* edge0, Edge* edge1, Edge* edge2, std::size_t id=0);
void associateWidthEdges() override;
std::vector<unsigned> getNodeIds() const override;
std::vector<std::size_t> getNodeIds() const override;
unsigned getNumNodes() const override;
std::size_t getNumNodes() const override;
void replaceEdge(Edge* original, Edge* replacement);
unsigned getEdge0Id () const;
unsigned getEdge1Id () const;
unsigned getEdge2Id () const;
std::vector<unsigned> getEdgeIds() const override;
std::size_t getEdge0Id () const;
std::size_t getEdge1Id () const;
std::size_t getEdge2Id () const;
std::vector<std::size_t> getEdgeIds() const override;
std::vector<Point> getNodeLocations(Orientation orientation = Orientation::CCW) const override;

View file

@ -5,6 +5,7 @@
#include "FileLogger.h"
#include "Win32TempFile.h"
#include "UnicodeUtils.h"
Win32WebRequest::Win32WebRequest()
: mBuffer(DEFAULT_BUFFER_SIZE)
@ -47,8 +48,7 @@ void Win32WebRequest::resizeBuffer(unsigned size)
std::string Win32WebRequest::getUrlFromRequest() const
{
const std::wstring wide_url = mHandle->CookedUrl.pFullUrl;
return StringUtils::convert(wide_url);
return UnicodeUtils::utf16ToUtf8String(mHandle->CookedUrl.pFullUrl);
}
HttpRequest Win32WebRequest::getRequest() const

View file

@ -9,7 +9,7 @@
#include "HttpRequest.h"
#include "HttpResponse.h"
#include "FileLogger.h"
#include "StringUtils.h"
#include "UnicodeUtils.h"
Win32WebServer::Win32WebServer(AbstractWebApp* webApp)
: mListenUrl("http://localhost:49153/"),
@ -26,7 +26,7 @@ Win32WebServer::~Win32WebServer()
void Win32WebServer::clear()
{
// Remove url
::HttpRemoveUrl(mWorkingQueue, StringUtils::convert(mListenUrl).c_str());
::HttpRemoveUrl(mWorkingQueue, UnicodeUtils::utf8ToUtf16WString(mListenUrl).c_str());
// Close the Request Queue handle.
if (mWorkingQueue)
@ -56,7 +56,7 @@ void Win32WebServer::initialize()
return;
}
retCode = ::HttpAddUrl(mWorkingQueue, StringUtils::convert(mListenUrl).c_str(), nullptr);
retCode = ::HttpAddUrl(mWorkingQueue, UnicodeUtils::utf8ToUtf16WString(mListenUrl).c_str(), nullptr);
if (FAILED(retCode))
{
MLOG_ERROR("Failed to register queue to url: " << mListenUrl);

View file

@ -1,13 +1,10 @@
#pragma once
#ifndef UNICODE
#define UNICODE
#endif
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include "Win32BaseIncludes.h"
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600

View file

@ -1,6 +1,6 @@
#include "LatexSymbols.h"
#include "StringUtils.h"
#include "UnicodeUtils.h"
std::unordered_map<std::string, std::wstring> LatexSymbolLookup::mSymbols = {
{"Psi", L"\u03A8"},
@ -14,7 +14,7 @@ std::optional<std::string> LatexSymbolLookup::getSymbolUtf8(const std::string& t
{
if (auto entry = getSymbolUtf16(tag); entry)
{
return StringUtils::convert(*entry);
return UnicodeUtils::utf16ToUtf8String(*entry);
}
else
{

View file

@ -73,7 +73,7 @@ void Button::doPaint(const PaintEvent* event)
void Button::updateLabel(const PaintEvent* event)
{
unsigned fontOffset = unsigned(mLabel.size()) * 4;
auto middle = DiscretePoint(mLocation.GetX() + mSize.mWidth/2 - fontOffset, mLocation.GetY() + mSize.mHeight/2 + 4);
auto middle = DiscretePoint(mLocation.getX() + mSize.mWidth/2 - fontOffset, mLocation.getY() + mSize.mHeight/2 + 4);
if (!mTextNode)
{

View file

@ -48,7 +48,7 @@ void HorizontalSpacer::updateChildLocations()
delta = size.mMaxHeight;
}
child->setBounds(mSize.mWidth, unsigned(delta));
child->setLocation(DiscretePoint(mLocation.GetX(), mLocation.GetY() + unsigned(offset)));
child->setLocation(DiscretePoint(mLocation.getX(), mLocation.getY() + unsigned(offset)));
offset += delta;
}
}

View file

@ -39,7 +39,7 @@ void Label::doPaint(const PaintEvent* event)
void Label::updateLabel(const PaintEvent* event)
{
unsigned fontOffset = unsigned(mLabel.size()) * 4;
auto middle = DiscretePoint(mLocation.GetX() + mSize.mWidth/2 - fontOffset, mLocation.GetY() + mSize.mHeight/2 + 4);
auto middle = DiscretePoint(mLocation.getX() + mSize.mWidth/2 - fontOffset, mLocation.getY() + mSize.mHeight/2 + 4);
if (!mTextNode)
{

View file

@ -83,7 +83,7 @@ void TextBox::doPaint(const PaintEvent* event)
void TextBox::updateLabel(const PaintEvent* event)
{
auto loc = DiscretePoint(mLocation.GetX() + mPadding.mLeft, mLocation.GetY() + mPadding.mTop + unsigned(0));
auto loc = DiscretePoint(mLocation.getX() + mPadding.mLeft, mLocation.getY() + mPadding.mTop + unsigned(0));
if (!mTextNode)
{

View file

@ -37,7 +37,7 @@ void VerticalSpacer::updateChildLocations()
double scale = mScales[idx];
double delta = mSize.mWidth * (scale/scaleSum);
child->setBounds(unsigned(delta), mSize.mHeight);
child->setLocation(DiscretePoint(mLocation.GetX() + unsigned(offset), mLocation.GetY()));
child->setLocation(DiscretePoint(mLocation.getX() + unsigned(offset), mLocation.getY()));
offset += delta;
}
}

View file

@ -237,19 +237,19 @@ void Widget::updateChildLocations()
bool Widget::contains(const DiscretePoint& loc) const
{
if(loc.GetX() < mLocation.GetX())
if(loc.getX() < mLocation.getX())
{
return false;
}
if(loc.GetX() > mLocation.GetX() + mSize.mWidth)
if(loc.getX() > mLocation.getX() + mSize.mWidth)
{
return false;
}
if(loc.GetY() > mLocation.GetY() + mSize.mHeight)
if(loc.getY() > mLocation.getY() + mSize.mHeight)
{
return false;
}
if(loc.GetY() < mLocation.GetY())
if(loc.getY() < mLocation.getY())
{
return false;
}
@ -313,8 +313,8 @@ void Widget::onMyMouseEvent(const MouseEvent* event)
void Widget::updateBackground(const PaintEvent* event)
{
unsigned locX = mLocation.GetX() + mMargin.mLeft;
unsigned locY = mLocation.GetY() + mMargin.mTop;
unsigned locX = mLocation.getX() + mMargin.mLeft;
unsigned locY = mLocation.getX() + mMargin.mTop;
unsigned deltaX = mSize.mWidth - mMargin.mLeft - mMargin.mRight;
unsigned deltaY = mSize.mHeight - mMargin.mTop - mMargin.mBottom;

View file

@ -0,0 +1,28 @@
#include "LineNode.h"
LineNode::LineNode(const Point& location, const std::vector<Point>& points)
: GeometryNode(location),
mPoints(points)
{
}
LineNode::Type LineNode::getType()
{
return Type::Line;
}
void LineNode::createOrUpdateGeometry(SceneInfo* sceneInfo)
{
if (sceneInfo->mSupportsGeometryPrimitives)
{
auto line = std::make_unique<Line>(Point{ 0, 0 }, mPoints);
mBackgroundItem = std::make_unique<SceneModel>(std::move(line));
}
mBackgroundItem->setName(mName + "_Model");
}
void LineNode::updateTransform()
{
mBackgroundItem->updateTransform({ mLocation });
}

View file

@ -10,33 +10,14 @@
class LineNode : public GeometryNode
{
public:
LineNode(const Point& location, const std::vector<Point>& points)
: GeometryNode(location),
mPoints(points)
{
LineNode(const Point& location, const std::vector<Point>& points);
}
Type getType()
{
return Type::Line;
}
void createOrUpdateGeometry(SceneInfo* sceneInfo)
{
if (sceneInfo->mSupportsGeometryPrimitives)
{
auto line = std::make_unique<Line>(Point{ 0, 0 }, 1, 1);
mBackgroundItem = std::make_unique<SceneModel>(std::move(line));
}
mBackgroundItem->setName(mName + "_Model");
}
void updateTransform()
{
mBackgroundItem->updateTransform({ mLocation });
}
Type getType();
private:
void createOrUpdateGeometry(SceneInfo* sceneInfo) override;
void updateTransform() override;
std::vector<Point> mPoints;
};

View file

@ -32,7 +32,7 @@ bool MarkdownParser::isInMultilineBlock() const
return working_type == MarkdownElement::Type::MULTILINE_QUOTE || working_type == MarkdownElement::Type::CUSTOM_MULTILINE ;
}
unsigned MarkdownParser::checkForLink(const std::string& lineSection)
std::size_t MarkdownParser::checkForLink(const std::string& lineSection)
{
if (lineSection.empty())
{
@ -40,7 +40,7 @@ unsigned MarkdownParser::checkForLink(const std::string& lineSection)
}
std::vector<std::string> hits;
unsigned hit_size{0};
std::size_t hit_size{0};
if (Lexer::matchPattern("[@](@)", lineSection, '@', hits))
{
if (hits.size() == 2)
@ -59,7 +59,7 @@ unsigned MarkdownParser::checkForLink(const std::string& lineSection)
return hit_size;
}
unsigned MarkdownParser::checkForImage(const std::string& lineSection)
std::size_t MarkdownParser::checkForImage(const std::string& lineSection)
{
if (lineSection.empty())
{
@ -67,7 +67,7 @@ unsigned MarkdownParser::checkForImage(const std::string& lineSection)
}
std::vector<std::string> hits;
unsigned hit_size{0};
std::size_t hit_size{0};
if (Lexer::matchPattern("![@](@)", lineSection, '@', hits))
{
if (hits.size() == 2)
@ -85,7 +85,7 @@ unsigned MarkdownParser::checkForImage(const std::string& lineSection)
return hit_size;
}
unsigned MarkdownParser::checkForInlineQuote(const std::string& lineSection)
std::size_t MarkdownParser::checkForInlineQuote(const std::string& lineSection)
{
if (lineSection.empty())
{
@ -93,7 +93,7 @@ unsigned MarkdownParser::checkForInlineQuote(const std::string& lineSection)
}
std::vector<std::string> hits;
unsigned hit_size{0};
std::size_t hit_size{0};
if (Lexer::matchPattern("`@`", lineSection, '@', hits))
{
if (hits.size() == 1)
@ -111,7 +111,8 @@ unsigned MarkdownParser::checkForInlineQuote(const std::string& lineSection)
}
return hit_size;
}
unsigned MarkdownParser::checkForCustomInline(const std::string& lineSection)
std::size_t MarkdownParser::checkForCustomInline(const std::string& lineSection)
{
if (lineSection.empty())
{
@ -119,9 +120,9 @@ unsigned MarkdownParser::checkForCustomInline(const std::string& lineSection)
}
std::vector<std::string> hits;
unsigned hit_size{0};
std::size_t hit_size{0};
for(unsigned idx=0; idx<mWorkingDocument->getNumInlineContexts(); idx++)
for(std::size_t idx=0; idx<mWorkingDocument->getNumInlineContexts(); idx++)
{
const auto delimiter = mWorkingDocument->getInlineContext(idx)->getDelimiter();
if (Lexer::matchPattern(delimiter + "@" + delimiter, lineSection, '@', hits))
@ -193,7 +194,7 @@ void MarkdownParser::processLine(const std::string& line)
}
}
unsigned line_position = 0;
std::size_t line_position = 0;
mWorkingLine.clear();
while(line_position < line.size())
{
@ -308,11 +309,11 @@ void MarkdownParser::onFoundHeading(const std::string& line)
{
onSectionFinished();
unsigned level = StringUtils::countFirstConsecutiveHits(line, HEADING_DELIMITER);
auto level = StringUtils::countFirstConsecutiveHits(line, HEADING_DELIMITER);
auto heading = std::make_unique<MarkdownHeading>(level);
std::string prefix;
for(unsigned idx=0; idx<level; idx++)
for(std::size_t idx=0; idx<level; idx++)
{
prefix += HEADING_DELIMITER;
}

View file

@ -25,10 +25,10 @@ public:
private:
void addChildToWorkingElement(std::unique_ptr<MarkdownInlineElement> child);
unsigned checkForImage(const std::string& lineSection);
unsigned checkForLink(const std::string& lineSection);
unsigned checkForInlineQuote(const std::string& lineSection);
unsigned checkForCustomInline(const std::string& lineSection);
std::size_t checkForImage(const std::string& lineSection);
std::size_t checkForLink(const std::string& lineSection);
std::size_t checkForInlineQuote(const std::string& lineSection);
std::size_t checkForCustomInline(const std::string& lineSection);
bool isInMultilineBlock() const;

View file

@ -5,7 +5,7 @@
#include "Win32DxWindowInterface.h"
#include "FileLogger.h"
#include "StringUtils.h"
#include "UnicodeUtils.h"
#include "Widget.h"
#include "DrawingContext.h"
#include "DirectXPainter.h"
@ -105,7 +105,7 @@ LRESULT CALLBACK Win32Window::WindowProc(UINT message, WPARAM wParam, LPARAM lPa
key_event->setAction(KeyboardEvent::Action::Pressed);
auto keyChar = (wchar_t)wParam;
key_event->setKeyString(StringUtils::convert(std::wstring(1, keyChar)));
key_event->setKeyString(UnicodeUtils::utf16ToUtf8String(std::wstring(1, keyChar)));
mDesktopManager->onUiEvent(std::move(key_event));
return 0;
}