18 mGeometryOutdated(
false),
24 mCurrentColour(0xFFFFFFFF),
31 inline float len(
float x,
float y)
33 return std::sqrt(x * x + y * y);
41 mResultVerticiesPos.clear();
42 mResultVerticiesUV.clear();
66#ifdef MYGUI_NO_POLYGONAL_SKIN_CROPPING
74 if (count > mVertexCount)
77 if (
nullptr != mRenderItem) mRenderItem->
reallockDrawItem(
this, mVertexCount);
101 mGeometryOutdated =
true;
103 if (
nullptr != mNode)
110 mCurrentColour = (mCurrentColour & 0x00FFFFFF) | (alpha & 0xFF000000);
112 if (
nullptr != mNode)
118 mGeometryOutdated =
true;
120 if (
nullptr != mNode)
171 mGeometryOutdated =
true;
186 if (
nullptr != mNode)
202 if (
nullptr != mNode)
208 MYGUI_ASSERT(!mRenderItem,
"mRenderItem must be nullptr");
217 MYGUI_ASSERT(mRenderItem,
"mRenderItem must be not nullptr");
221 mRenderItem =
nullptr;
231 mGeometryOutdated =
true;
237 if (mGeometryOutdated)
242 size_t size = mResultVerticiesPos.size();
244 for (
size_t i = 0;
i < size; ++
i)
246 verticies[
i].set(mResultVerticiesPos[
i].left, mResultVerticiesPos[
i].top,
vertex_z, mResultVerticiesUV[
i].left, mResultVerticiesUV[
i].top, mCurrentColour);
255 mCurrentColour = (colour & 0x00FFFFFF) | (mCurrentColour & 0xFF000000);
257 if (
nullptr != mNode)
268 mCurrentTexture =
_rect;
270 mGeometryOutdated =
true;
272 if (
nullptr != mNode)
278 if (mLinePoints.size() < 2)
283 mGeometryOutdated =
false;
302 mResultVerticiesPos.clear();
303 mResultVerticiesUV.clear();
315 for (
size_t i = 1;
i < mLinePoints.size(); ++
i)
317 if (mLineStroke != 0)
320 if (
stroke == mLineStroke)
327 currentLength +=
len(mLinePoints[
i - 1].left - mLinePoints[
i].left, mLinePoints[
i - 1].top - mLinePoints[
i].top);
330 if (
i != mLinePoints.size() - 1)
360 mResultVerticiesPos.push_back(
points[0]);
361 mResultVerticiesPos.push_back(
points[1]);
362 mResultVerticiesPos.push_back(mLinePoints[
i] +
normal);
363 mResultVerticiesUV.push_back(
pointsUV[0]);
364 mResultVerticiesUV.push_back(
pointsUV[1]);
367 mResultVerticiesPos.push_back(
points[1]);
368 mResultVerticiesPos.push_back(mLinePoints[
i] -
normal);
369 mResultVerticiesPos.push_back(mLinePoints[
i] +
normal);
370 mResultVerticiesUV.push_back(
pointsUV[1]);
391 lineDir = mLinePoints[
i] - mLinePoints[
i - 1];
407 lineDir = mLinePoints[
i - 1] - mLinePoints[
i];
418 mResultVerticiesPos.push_back(
points[0]);
419 mResultVerticiesPos.push_back(mLinePoints[
i] +
normal);
420 mResultVerticiesPos.push_back(mLinePoints[
i]);
421 mResultVerticiesUV.push_back(
pointsUV[0]);
425 mResultVerticiesPos.push_back(mLinePoints[
i] +
normal);
426 mResultVerticiesPos.push_back(mLinePoints[
i] +
normal2);
427 mResultVerticiesPos.push_back(mLinePoints[
i]);
441#ifndef MYGUI_NO_POLYGONAL_SKIN_CROPPING
454 for (
size_t i = 0;
i < mResultVerticiesPos.size();
i += 3)
460 FloatPoint v0 = mResultVerticiesUV[
i + 2] - mResultVerticiesUV[
i];
461 FloatPoint v1 = mResultVerticiesUV[
i + 1] - mResultVerticiesUV[
i];
490 for (
size_t i = 0;
i < mResultVerticiesPos.size(); ++
i)
505 result.left *= mLineWidth / 2;
506 result.top *= mLineWidth / 2;
516 line1.left /= length;
519 line2.left /= length;
535 if (std::fabs(
angle) < 1e-6f )
538 float width = mLineWidth / 2 / std::sin(
angle);
#define MYGUI_ASSERT(exp, dest)
int getAbsoluteLeft() const
bool _checkOutside() const
ICroppedRectangle * mCroppedParent
int getAbsoluteTop() const
int _getViewWidth() const
int _getViewHeight() const
virtual float getNodeDepth() const =0
virtual void outOfDate(RenderItem *_item)=0
virtual RenderItem * addToRenderItem(ITexture *_texture, bool _firstQueue, bool _separate)=0
virtual const RenderTargetInfo & getInfo() const =0
FloatPoint _getMiddleLine(const FloatPoint &_point1, const FloatPoint &_point2, const FloatPoint &_point3) const
void _correctView() override
void destroyDrawItem() override
void createDrawItem(ITexture *_texture, ILayerNode *_node) override
void _setAlign(const IntSize &_oldsize) override
FloatPoint _getPerpendicular(const FloatPoint &_point1, const FloatPoint &_point2) const
void setPoints(const std::vector< FloatPoint > &_points)
void setStateData(IStateInfo *_data) override
void setVisible(bool _visible) override
void setAlpha(float _alpha) override
void _setUVSet(const FloatRect &_rect) override
void setWidth(float _width)
void _updateView() override
void _setColour(const Colour &_value) override
void setStroke(size_t _value)
void addDrawItem(ISubWidget *_item, size_t _count)
bool getCurrentUpdate() const
IRenderTarget * getRenderTarget()
void reallockDrawItem(ISubWidget *_item, size_t _count)
void removeDrawItem(ISubWidget *_item)
Vertex * getCurrentVertexBuffer() const
void setLastVertexCount(size_t _count)
static RenderManager & getInstance()
const FloatRect & getRect() const
FloatPoint getUVFromPositionInsideRect(const FloatPoint &_point, const FloatPoint &_v0, const FloatPoint &_v1, const FloatPoint &_baseUV)
FloatPoint getPositionInsideRect(const FloatPoint &_point, const FloatPoint &_corner0, const FloatPoint &_corner1, const FloatPoint &_corner2)
VectorFloatPoint cropPolygon(FloatPoint *_baseVerticiesPos, size_t _size, const IntCoord &_cropRectangle)
uint32 toNativeColour(const Colour &_colour, VertexColourType _format)
Convert Colour to 32-bit representation.
std::vector< FloatPoint > VectorFloatPoint
types::TPoint< float > FloatPoint
float len(float x, float y)