kopia lustrzana https://github.com/jameshball/osci-render
Get initial non-working lua parser set up
rodzic
ac67c1bec6
commit
a4ee966f50
|
@ -14,7 +14,6 @@
|
||||||
#include "audio/VectorCancellingEffect.h"
|
#include "audio/VectorCancellingEffect.h"
|
||||||
#include "audio/DistortEffect.h"
|
#include "audio/DistortEffect.h"
|
||||||
#include "audio/SmoothEffect.h"
|
#include "audio/SmoothEffect.h"
|
||||||
#include "lua/luaimport.h"
|
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
OscirenderAudioProcessor::OscirenderAudioProcessor()
|
OscirenderAudioProcessor::OscirenderAudioProcessor()
|
||||||
|
@ -39,49 +38,6 @@ OscirenderAudioProcessor::OscirenderAudioProcessor()
|
||||||
allEffects.push_back(std::make_shared<Effect>(std::make_unique<DistortEffect>(true), "Vertical shift", "verticalDistort"));
|
allEffects.push_back(std::make_shared<Effect>(std::make_unique<DistortEffect>(true), "Vertical shift", "verticalDistort"));
|
||||||
allEffects.push_back(std::make_shared<Effect>(std::make_unique<DistortEffect>(false), "Horizontal shift", "horizontalDistort"));
|
allEffects.push_back(std::make_shared<Effect>(std::make_unique<DistortEffect>(false), "Horizontal shift", "horizontalDistort"));
|
||||||
allEffects.push_back(std::make_shared<Effect>(std::make_unique<SmoothEffect>(), "Smoothing", "smoothing"));
|
allEffects.push_back(std::make_shared<Effect>(std::make_unique<SmoothEffect>(), "Smoothing", "smoothing"));
|
||||||
|
|
||||||
// initialization
|
|
||||||
lua_State * L = luaL_newstate();
|
|
||||||
luaL_openlibs(L);
|
|
||||||
|
|
||||||
// execute script
|
|
||||||
const char* lua_script = "print('Hello World!')";
|
|
||||||
int load_stat = luaL_loadbuffer(L, lua_script, strlen(lua_script), lua_script);
|
|
||||||
lua_pcall(L, 0, 0, 0);
|
|
||||||
|
|
||||||
const char* lua_function_script =
|
|
||||||
R"LUA(
|
|
||||||
function add(x, y)
|
|
||||||
return x + y
|
|
||||||
end
|
|
||||||
)LUA";
|
|
||||||
|
|
||||||
// execute script
|
|
||||||
load_stat = luaL_loadbuffer(L, lua_function_script, strlen(lua_function_script), lua_function_script);
|
|
||||||
lua_pcall(L, 0, 0, 0);
|
|
||||||
|
|
||||||
int a = 5;
|
|
||||||
int b = 6;
|
|
||||||
int sum;
|
|
||||||
|
|
||||||
// fetch the function
|
|
||||||
lua_getglobal(L, "add");
|
|
||||||
|
|
||||||
// pass two numbers to lua as arguemnt 1 and 2
|
|
||||||
lua_pushnumber(L, a);
|
|
||||||
lua_pushnumber(L, b);
|
|
||||||
|
|
||||||
// call the function with 2 arguments and receive 1 result
|
|
||||||
lua_call(L, 2, 1);
|
|
||||||
|
|
||||||
// read the restul from the top of the stack and cast to int
|
|
||||||
sum = (int)lua_tointeger(L, -1);
|
|
||||||
lua_pop(L, 1);
|
|
||||||
|
|
||||||
DBG("Result: " << sum);
|
|
||||||
|
|
||||||
// cleanup
|
|
||||||
lua_close(L);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OscirenderAudioProcessor::~OscirenderAudioProcessor()
|
OscirenderAudioProcessor::~OscirenderAudioProcessor()
|
||||||
|
@ -348,7 +304,7 @@ void OscirenderAudioProcessor::updateFrame() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OscirenderAudioProcessor::updateLengthIncrement() {
|
void OscirenderAudioProcessor::updateLengthIncrement() {
|
||||||
lengthIncrement = max(frameLength / (currentSampleRate / frequency), MIN_LENGTH_INCREMENT);
|
lengthIncrement = std::max(frameLength / (currentSampleRate / frequency), MIN_LENGTH_INCREMENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OscirenderAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages)
|
void OscirenderAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages)
|
||||||
|
@ -414,8 +370,8 @@ void OscirenderAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer, j
|
||||||
|
|
||||||
// hard cap on how many times it can be over the length to
|
// hard cap on how many times it can be over the length to
|
||||||
// prevent audio stuttering
|
// prevent audio stuttering
|
||||||
frameDrawn += min(lengthIncrement, 20 * length);
|
frameDrawn += std::min(lengthIncrement, 20 * length);
|
||||||
shapeDrawn += min(lengthIncrement, 20 * length);
|
shapeDrawn += std::min(lengthIncrement, 20 * length);
|
||||||
|
|
||||||
// Need to skip all shapes that the lengthIncrement draws over.
|
// Need to skip all shapes that the lengthIncrement draws over.
|
||||||
// This is especially an issue when there are lots of small lines being
|
// This is especially an issue when there are lots of small lines being
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
#include "LuaParser.h"
|
||||||
|
#include "luaimport.h"
|
||||||
|
|
||||||
|
|
||||||
|
LuaParser::LuaParser(juce::String script) {
|
||||||
|
// initialization
|
||||||
|
L = luaL_newstate();
|
||||||
|
luaL_openlibs(L);
|
||||||
|
|
||||||
|
this->script = script;
|
||||||
|
}
|
||||||
|
|
||||||
|
LuaParser::~LuaParser() {
|
||||||
|
lua_close(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::unique_ptr<Shape>> LuaParser::draw() {
|
||||||
|
std::vector<std::unique_ptr<Shape>> shapes;
|
||||||
|
|
||||||
|
for (int i = 0; i < 100; i++) {
|
||||||
|
lua_pushnumber(L, step);
|
||||||
|
lua_setglobal(L, "step");
|
||||||
|
|
||||||
|
const int ret = luaL_dostring(L, script.toUTF8());
|
||||||
|
if (ret != 0) {
|
||||||
|
const char* error = lua_tostring(L, -1);
|
||||||
|
DBG(error);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
} else if (lua_istable(L, -1)) {
|
||||||
|
// get the first element of the table
|
||||||
|
lua_pushinteger(L, 1);
|
||||||
|
lua_gettable(L, -2);
|
||||||
|
float x = (int)lua_tonumber(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
|
||||||
|
// get the second element of the table
|
||||||
|
lua_pushinteger(L, 2);
|
||||||
|
lua_gettable(L, -2);
|
||||||
|
float y = (int)lua_tonumber(L, -1);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
|
||||||
|
shapes.push_back(std::make_unique<Vector2>(x, y));
|
||||||
|
}
|
||||||
|
|
||||||
|
// pop the table
|
||||||
|
lua_pop(L, 1);
|
||||||
|
|
||||||
|
step++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return shapes;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
#pragma once
|
||||||
|
#include "../shape/Vector2.h"
|
||||||
|
#include <JuceHeader.h>
|
||||||
|
#include "../shape/Shape.h"
|
||||||
|
|
||||||
|
struct lua_State;
|
||||||
|
class LuaParser {
|
||||||
|
public:
|
||||||
|
LuaParser(juce::String script);
|
||||||
|
~LuaParser();
|
||||||
|
|
||||||
|
std::vector<std::unique_ptr<Shape>> draw();
|
||||||
|
private:
|
||||||
|
long step = 1;
|
||||||
|
lua_State* L;
|
||||||
|
juce::String script;
|
||||||
|
};
|
28907
Source/lua/sol.hpp
28907
Source/lua/sol.hpp
Plik diff jest za duży
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
#include "FileParser.h"
|
#include "FileParser.h"
|
||||||
#include "../shape/Line.h"
|
#include "../shape/Line.h"
|
||||||
#include "../shape/Arc.h"
|
#include "../shape/CircleArc.h"
|
||||||
#include <numbers>
|
#include <numbers>
|
||||||
|
|
||||||
FileParser::FileParser() {}
|
FileParser::FileParser() {}
|
||||||
|
@ -9,6 +9,8 @@ void FileParser::parse(juce::String extension, std::unique_ptr<juce::InputStream
|
||||||
object = nullptr;
|
object = nullptr;
|
||||||
camera = nullptr;
|
camera = nullptr;
|
||||||
svg = nullptr;
|
svg = nullptr;
|
||||||
|
text = nullptr;
|
||||||
|
lua = nullptr;
|
||||||
|
|
||||||
if (extension == ".obj") {
|
if (extension == ".obj") {
|
||||||
object = std::make_shared<WorldObject>(stream->readEntireStreamAsString().toStdString());
|
object = std::make_shared<WorldObject>(stream->readEntireStreamAsString().toStdString());
|
||||||
|
@ -18,14 +20,17 @@ void FileParser::parse(juce::String extension, std::unique_ptr<juce::InputStream
|
||||||
svg = std::make_shared<SvgParser>(stream->readEntireStreamAsString());
|
svg = std::make_shared<SvgParser>(stream->readEntireStreamAsString());
|
||||||
} else if (extension == ".txt") {
|
} else if (extension == ".txt") {
|
||||||
text = std::make_shared<TextParser>(stream->readEntireStreamAsString(), juce::Font(1.0f));
|
text = std::make_shared<TextParser>(stream->readEntireStreamAsString(), juce::Font(1.0f));
|
||||||
|
} else if (extension == ".lua") {
|
||||||
|
lua = std::make_shared<LuaParser>(stream->readEntireStreamAsString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::unique_ptr<Shape>> FileParser::next() {
|
std::vector<std::unique_ptr<Shape>> FileParser::nextFrame() {
|
||||||
auto tempObject = object;
|
auto tempObject = object;
|
||||||
auto tempCamera = camera;
|
auto tempCamera = camera;
|
||||||
auto tempSvg = svg;
|
auto tempSvg = svg;
|
||||||
auto tempText = text;
|
auto tempText = text;
|
||||||
|
auto tempLua = lua;
|
||||||
|
|
||||||
if (tempObject != nullptr && tempCamera != nullptr) {
|
if (tempObject != nullptr && tempCamera != nullptr) {
|
||||||
return tempCamera->draw(*tempObject);
|
return tempCamera->draw(*tempObject);
|
||||||
|
@ -33,9 +38,11 @@ std::vector<std::unique_ptr<Shape>> FileParser::next() {
|
||||||
return tempSvg->draw();
|
return tempSvg->draw();
|
||||||
} else if (tempText != nullptr) {
|
} else if (tempText != nullptr) {
|
||||||
return tempText->draw();
|
return tempText->draw();
|
||||||
|
} else if (tempLua != nullptr) {
|
||||||
|
return tempLua->draw();
|
||||||
}
|
}
|
||||||
auto tempShapes = std::vector<std::unique_ptr<Shape>>();
|
auto tempShapes = std::vector<std::unique_ptr<Shape>>();
|
||||||
tempShapes.push_back(std::make_unique<Arc>(0, 0, 0.5, 0.5, std::numbers::pi / 4.0, 2 * std::numbers::pi));
|
tempShapes.push_back(std::make_unique<CircleArc>(0, 0, 0.5, 0.5, std::numbers::pi / 4.0, 2 * std::numbers::pi));
|
||||||
return tempShapes;
|
return tempShapes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,13 +6,14 @@
|
||||||
#include "../obj/Camera.h"
|
#include "../obj/Camera.h"
|
||||||
#include "../svg/SvgParser.h"
|
#include "../svg/SvgParser.h"
|
||||||
#include "../txt/TextParser.h"
|
#include "../txt/TextParser.h"
|
||||||
|
#include "../lua/LuaParser.h"
|
||||||
|
|
||||||
class FileParser : public FrameSource {
|
class FileParser : public FrameSource {
|
||||||
public:
|
public:
|
||||||
FileParser();
|
FileParser();
|
||||||
|
|
||||||
void parse(juce::String extension, std::unique_ptr<juce::InputStream>) override;
|
void parse(juce::String extension, std::unique_ptr<juce::InputStream>) override;
|
||||||
std::vector<std::unique_ptr<Shape>> next() override;
|
std::vector<std::unique_ptr<Shape>> nextFrame() override;
|
||||||
bool isActive() override;
|
bool isActive() override;
|
||||||
void disable() override;
|
void disable() override;
|
||||||
void enable() override;
|
void enable() override;
|
||||||
|
@ -24,4 +25,5 @@ private:
|
||||||
std::shared_ptr<Camera> camera;
|
std::shared_ptr<Camera> camera;
|
||||||
std::shared_ptr<SvgParser> svg;
|
std::shared_ptr<SvgParser> svg;
|
||||||
std::shared_ptr<TextParser> text;
|
std::shared_ptr<TextParser> text;
|
||||||
|
std::shared_ptr<LuaParser> lua;
|
||||||
};
|
};
|
|
@ -9,7 +9,7 @@ FrameProducer::~FrameProducer() {
|
||||||
|
|
||||||
void FrameProducer::run() {
|
void FrameProducer::run() {
|
||||||
while (!threadShouldExit() && frameSource->isActive()) {
|
while (!threadShouldExit() && frameSource->isActive()) {
|
||||||
frameConsumer.addFrame(frameSource->next(), sourceFileIndex);
|
frameConsumer.addFrame(frameSource->nextFrame(), sourceFileIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
class FrameSource {
|
class FrameSource {
|
||||||
public:
|
public:
|
||||||
virtual void parse(juce::String extension, std::unique_ptr<juce::InputStream>) = 0;
|
virtual void parse(juce::String extension, std::unique_ptr<juce::InputStream>) = 0;
|
||||||
virtual std::vector<std::unique_ptr<Shape>> next() = 0;
|
virtual std::vector<std::unique_ptr<Shape>> nextFrame() = 0;
|
||||||
virtual bool isActive() = 0;
|
virtual bool isActive() = 0;
|
||||||
virtual void disable() = 0;
|
virtual void disable() = 0;
|
||||||
virtual void enable() = 0;
|
virtual void enable() = 0;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#include "Arc.h"
|
#include "CircleArc.h"
|
||||||
#include <numbers>
|
#include <numbers>
|
||||||
#include "Line.h"
|
#include "Line.h"
|
||||||
|
|
||||||
Arc::Arc(double x, double y, double radiusX, double radiusY, double startAngle, double endAngle) : x(x), y(y), radiusX(radiusX), radiusY(radiusY), startAngle(startAngle), endAngle(endAngle) {}
|
CircleArc::CircleArc(double x, double y, double radiusX, double radiusY, double startAngle, double endAngle) : x(x), y(y), radiusX(radiusX), radiusY(radiusY), startAngle(startAngle), endAngle(endAngle) {}
|
||||||
|
|
||||||
Vector2 Arc::nextVector(double drawingProgress) {
|
Vector2 CircleArc::nextVector(double drawingProgress) {
|
||||||
// scale between start and end angle in the positive direction
|
// scale between start and end angle in the positive direction
|
||||||
double angle = startAngle + endAngle * drawingProgress;
|
double angle = startAngle + endAngle * drawingProgress;
|
||||||
return Vector2(
|
return Vector2(
|
||||||
|
@ -13,7 +13,7 @@ Vector2 Arc::nextVector(double drawingProgress) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Arc::rotate(double theta) {
|
void CircleArc::rotate(double theta) {
|
||||||
double cosTheta = std::cos(theta);
|
double cosTheta = std::cos(theta);
|
||||||
double sinTheta = std::sin(theta);
|
double sinTheta = std::sin(theta);
|
||||||
|
|
||||||
|
@ -41,19 +41,19 @@ void Arc::rotate(double theta) {
|
||||||
endAngle = newEndAngle;
|
endAngle = newEndAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Arc::scale(double x, double y) {
|
void CircleArc::scale(double x, double y) {
|
||||||
this->x *= x;
|
this->x *= x;
|
||||||
this->y *= y;
|
this->y *= y;
|
||||||
this->radiusX *= x;
|
this->radiusX *= x;
|
||||||
this->radiusY *= y;
|
this->radiusY *= y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Arc::translate(double x, double y) {
|
void CircleArc::translate(double x, double y) {
|
||||||
this->x += x;
|
this->x += x;
|
||||||
this->y += y;
|
this->y += y;
|
||||||
}
|
}
|
||||||
|
|
||||||
double Arc::length() {
|
double CircleArc::length() {
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
len = 0;
|
len = 0;
|
||||||
double angle = startAngle;
|
double angle = startAngle;
|
||||||
|
@ -67,10 +67,10 @@ double Arc::length() {
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Shape> Arc::clone() {
|
std::unique_ptr<Shape> CircleArc::clone() {
|
||||||
return std::make_unique<Arc>(x, y, radiusX, radiusY, startAngle, endAngle);
|
return std::make_unique<CircleArc>(x, y, radiusX, radiusY, startAngle, endAngle);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Arc::type() {
|
std::string CircleArc::type() {
|
||||||
return std::string("Arc");
|
return std::string("Arc");
|
||||||
}
|
}
|
|
@ -3,9 +3,9 @@
|
||||||
#include "Shape.h"
|
#include "Shape.h"
|
||||||
#include "Vector2.h"
|
#include "Vector2.h"
|
||||||
|
|
||||||
class Arc : public Shape {
|
class CircleArc : public Shape {
|
||||||
public:
|
public:
|
||||||
Arc(double x, double y, double radiusX, double radiusY, double startAngle, double endAngle);
|
CircleArc(double x, double y, double radiusX, double radiusY, double startAngle, double endAngle);
|
||||||
|
|
||||||
Vector2 nextVector(double drawingProgress) override;
|
Vector2 nextVector(double drawingProgress) override;
|
||||||
void rotate(double theta) override;
|
void rotate(double theta) override;
|
|
@ -1,5 +1,6 @@
|
||||||
#include "Shape.h"
|
#include "Shape.h"
|
||||||
#include "Line.h"
|
#include "Line.h"
|
||||||
|
#include "Vector2.h"
|
||||||
|
|
||||||
double Shape::totalLength(std::vector<std::unique_ptr<Shape>>& shapes) {
|
double Shape::totalLength(std::vector<std::unique_ptr<Shape>>& shapes) {
|
||||||
double length = 0.0;
|
double length = 0.0;
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "Vector2.h"
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
class Vector2;
|
||||||
class Shape {
|
class Shape {
|
||||||
public:
|
public:
|
||||||
virtual Vector2 nextVector(double drawingProgress) = 0;
|
virtual Vector2 nextVector(double drawingProgress) = 0;
|
||||||
|
|
|
@ -43,3 +43,17 @@ double Vector2::length() {
|
||||||
double Vector2::magnitude() {
|
double Vector2::magnitude() {
|
||||||
return sqrt(x * x + y * y);
|
return sqrt(x * x + y * y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<Shape> Vector2::clone() {
|
||||||
|
return std::unique_ptr<Shape>();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Vector2::type() {
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2& Vector2::operator=(const Vector2& other) {
|
||||||
|
x = other.x;
|
||||||
|
y = other.y;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
|
@ -1,20 +1,27 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "Shape.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class Vector2 {
|
class Vector2 : public Shape {
|
||||||
public:
|
public:
|
||||||
Vector2(double x, double y);
|
Vector2(double x, double y);
|
||||||
Vector2(double val);
|
Vector2(double val);
|
||||||
Vector2();
|
Vector2();
|
||||||
|
|
||||||
Vector2 nextVector(double drawingProgress);
|
Vector2 nextVector(double drawingProgress) override;
|
||||||
void rotate(double theta);
|
void rotate(double theta) override;
|
||||||
void scale(double x, double y);
|
void scale(double x, double y) override;
|
||||||
void translate(double x, double y);
|
void translate(double x, double y) override;
|
||||||
void reflectRelativeToVector(double x, double y);
|
void reflectRelativeToVector(double x, double y);
|
||||||
double length();
|
double length() override;
|
||||||
double magnitude();
|
double magnitude();
|
||||||
|
std::unique_ptr<Shape> clone() override;
|
||||||
|
std::string type() override;
|
||||||
|
|
||||||
|
// copy assignment operator
|
||||||
|
Vector2& operator=(const Vector2& other);
|
||||||
|
|
||||||
double x, y;
|
double x, y;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "EllipticalArcTo.h"
|
#include "EllipticalArcTo.h"
|
||||||
#include "../shape/Line.h"
|
#include "../shape/Line.h"
|
||||||
#include <numbers>
|
#include <numbers>
|
||||||
#include "../shape/Arc.h"
|
#include "../shape/CircleArc.h"
|
||||||
|
|
||||||
std::vector<std::unique_ptr<Shape>> EllipticalArcTo::absolute(SvgState& state, std::vector<float>& args) {
|
std::vector<std::unique_ptr<Shape>> EllipticalArcTo::absolute(SvgState& state, std::vector<float>& args) {
|
||||||
return parseEllipticalArc(state, args, true);
|
return parseEllipticalArc(state, args, true);
|
||||||
|
@ -113,7 +113,7 @@ void EllipticalArcTo::createArc(std::vector<std::unique_ptr<Shape>>& shapes, Vec
|
||||||
angleExtent = std::fmod(angleExtent, 2 * std::numbers::pi);
|
angleExtent = std::fmod(angleExtent, 2 * std::numbers::pi);
|
||||||
angleStart = std::fmod(angleStart, 2 * std::numbers::pi);
|
angleStart = std::fmod(angleStart, 2 * std::numbers::pi);
|
||||||
|
|
||||||
auto arc = std::make_unique<Arc>(cx, cy, rx, ry, angleStart, angleExtent);
|
auto arc = std::make_unique<CircleArc>(cx, cy, rx, ry, angleStart, angleExtent);
|
||||||
arc->translate(-cx, -cy);
|
arc->translate(-cx, -cy);
|
||||||
arc->rotate(theta);
|
arc->rotate(theta);
|
||||||
arc->translate(cx, cy);
|
arc->translate(cx, cy);
|
||||||
|
|
|
@ -65,6 +65,8 @@
|
||||||
<FILE id="BlOdIr" name="luaimport.cpp" compile="1" resource="0" file="Source/lua/luaimport.cpp"/>
|
<FILE id="BlOdIr" name="luaimport.cpp" compile="1" resource="0" file="Source/lua/luaimport.cpp"/>
|
||||||
<FILE id="XUJtiC" name="luaimport.h" compile="0" resource="0" file="Source/lua/luaimport.h"/>
|
<FILE id="XUJtiC" name="luaimport.h" compile="0" resource="0" file="Source/lua/luaimport.h"/>
|
||||||
<FILE id="NeC0ti" name="lualib.h" compile="0" resource="0" file="Source/lua/lualib.h"/>
|
<FILE id="NeC0ti" name="lualib.h" compile="0" resource="0" file="Source/lua/lualib.h"/>
|
||||||
|
<FILE id="ggEnCt" name="LuaParser.cpp" compile="1" resource="0" file="Source/lua/LuaParser.cpp"/>
|
||||||
|
<FILE id="BzW4g3" name="LuaParser.h" compile="0" resource="0" file="Source/lua/LuaParser.h"/>
|
||||||
<FILE id="IKwQ2M" name="lundump.c" compile="1" resource="0" file="Source/lua/lundump.c"/>
|
<FILE id="IKwQ2M" name="lundump.c" compile="1" resource="0" file="Source/lua/lundump.c"/>
|
||||||
<FILE id="tuKfAR" name="lundump.h" compile="0" resource="0" file="Source/lua/lundump.h"/>
|
<FILE id="tuKfAR" name="lundump.h" compile="0" resource="0" file="Source/lua/lundump.h"/>
|
||||||
<FILE id="qkRiRs" name="lutf8lib.c" compile="1" resource="0" file="Source/lua/lutf8lib.c"/>
|
<FILE id="qkRiRs" name="lutf8lib.c" compile="1" resource="0" file="Source/lua/lutf8lib.c"/>
|
||||||
|
@ -73,7 +75,6 @@
|
||||||
<FILE id="dy37RJ" name="lzio.c" compile="1" resource="0" file="Source/lua/lzio.c"/>
|
<FILE id="dy37RJ" name="lzio.c" compile="1" resource="0" file="Source/lua/lzio.c"/>
|
||||||
<FILE id="vYPcZP" name="lzio.h" compile="0" resource="0" file="Source/lua/lzio.h"/>
|
<FILE id="vYPcZP" name="lzio.h" compile="0" resource="0" file="Source/lua/lzio.h"/>
|
||||||
<FILE id="ktpcF1" name="onelua.c" compile="1" resource="0" file="Source/lua/onelua.c"/>
|
<FILE id="ktpcF1" name="onelua.c" compile="1" resource="0" file="Source/lua/onelua.c"/>
|
||||||
<FILE id="RykUkb" name="sol.hpp" compile="0" resource="0" file="Source/lua/sol.hpp"/>
|
|
||||||
</GROUP>
|
</GROUP>
|
||||||
<GROUP id="{CD81913A-7F0E-5898-DA77-5EBEB369DEB1}" name="components">
|
<GROUP id="{CD81913A-7F0E-5898-DA77-5EBEB369DEB1}" name="components">
|
||||||
<FILE id="poPVxL" name="DraggableListBox.cpp" compile="1" resource="0"
|
<FILE id="poPVxL" name="DraggableListBox.cpp" compile="1" resource="0"
|
||||||
|
@ -154,8 +155,8 @@
|
||||||
<FILE id="CdKZCg" name="Matching.h" compile="0" resource="0" file="Source/chinese_postman/Matching.h"/>
|
<FILE id="CdKZCg" name="Matching.h" compile="0" resource="0" file="Source/chinese_postman/Matching.h"/>
|
||||||
</GROUP>
|
</GROUP>
|
||||||
<GROUP id="{92CEA658-C82C-9CEB-15EB-945EF6B6B5C8}" name="shape">
|
<GROUP id="{92CEA658-C82C-9CEB-15EB-945EF6B6B5C8}" name="shape">
|
||||||
<FILE id="b9eg7J" name="Arc.cpp" compile="1" resource="0" file="Source/shape/Arc.cpp"/>
|
<FILE id="iglTFG" name="CircleArc.cpp" compile="1" resource="0" file="Source/shape/CircleArc.cpp"/>
|
||||||
<FILE id="KIQgS0" name="Arc.h" compile="0" resource="0" file="Source/shape/Arc.h"/>
|
<FILE id="T3S8Sg" name="CircleArc.h" compile="0" resource="0" file="Source/shape/CircleArc.h"/>
|
||||||
<FILE id="G5fbub" name="Shape.cpp" compile="1" resource="0" file="Source/shape/Shape.cpp"/>
|
<FILE id="G5fbub" name="Shape.cpp" compile="1" resource="0" file="Source/shape/Shape.cpp"/>
|
||||||
<FILE id="Dbvew2" name="CubicBezierCurve.cpp" compile="1" resource="0"
|
<FILE id="Dbvew2" name="CubicBezierCurve.cpp" compile="1" resource="0"
|
||||||
file="Source/shape/CubicBezierCurve.cpp"/>
|
file="Source/shape/CubicBezierCurve.cpp"/>
|
||||||
|
|
Ładowanie…
Reference in New Issue