A little clean up

This commit is contained in:
Ilusha 2024-03-17 21:44:19 +03:00 committed by Ilya Shurupov
parent 3b389bdc17
commit 1155067b26
8 changed files with 234 additions and 407 deletions

View file

@ -8,9 +8,6 @@ namespace tp {
template <typename Events, typename Canvas>
class Sketch3DWidget : public Widget<Events, Canvas> {
public:
Canvas* mCanvas = nullptr;
Sketch3DWidget(Canvas& canvas, Vec2F renderResolution) :
mRenderer(renderResolution) {
mImage = canvas.createImageFromTextId(mRenderer.getBuff()->texId(), mRenderer.getBuff()->getSize());
@ -27,54 +24,25 @@ namespace tp {
this->mVisible = area.isOverlap(areaParent);
if (!this->mVisible) return;
mProject.mCamera.setRatio(this->mArea.w / this->mArea.z);
// mProject.mBackgroundColor = col_obj_bg->mCol;
if (!this->mArea.isInside(events.getPos())) {
return;
}
halnf pressure = 0.f;
auto idx = mProject.mBrushes.presents(mProject.mActiveBrush);
if (idx) {
auto brush = mProject.mBrushes.getSlotVal(idx);
auto crs = (events.getPos() - this->mArea.pos);
crs.x /= this->mArea.z;
crs.y /= this->mArea.w;
crs = (crs - 0.5) * 2;
auto crs = (events.getPos() - this->mArea.pos);
crs.x /= this->mArea.z;
crs.y /= this->mArea.w;
crs = (crs - 0.5) * 2;
if (brush->mType == "pencil") {
((tp::PencilBrush*) brush)->mCol = RGBA(1.f);
}
mProject.sample(pressure, this->mArea.w / this->mArea.z, crs);
brush->sample(&mProject, crs, pressure);
}
// mProject.setBackGroundColor();
}
void draw(Canvas& canvas) override {
mRenderer.setViewport({ 0, 0, this->mArea.z, this->mArea.w });
mRenderer.setClearCol(mProject.mBackgroundColor);
mRenderer.renderBegin();
for (auto lay : mProject.mLayers) {
if (lay.data()->enabled) {
for (auto str : lay.data()->strokes) {
mRenderer.drawStroke(str.data(), &mProject.mCamera);
}
}
}
auto idx = mProject.mBrushes.presents(mProject.mActiveBrush);
if (idx) {
auto brush = mProject.mBrushes.getSlotVal(idx);
brush->draw(&mRenderer, &mProject.mCamera);
}
mRenderer.renderEnd();
if (!this->mVisible) return;
mRenderer.renderToTexture(&mProject, this->mArea.size);
canvas.drawImage(this->mArea, &mImage, 0, 1, 12);
}
@ -82,5 +50,6 @@ namespace tp {
Project mProject;
Renderer mRenderer;
Canvas::ImageHandle mImage;
Canvas* mCanvas = nullptr;
};
}