mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-14 13:50:04 +00:00
ab8f16961e
Apply clang-format-all.sh using the _clang-format file through all the cpp/.h files. make sure not to apply it to certain serialization structures, since some parser expects the * as part of the name, instead of type. This commit contains no other changes aside from adding and applying clang-format-all.sh
146 lines
3.8 KiB
C++
146 lines
3.8 KiB
C++
#pragma once
|
|
#ifndef GWEN_SKINS_TEXTURING_H
|
|
#define GWEN_SKINS_TEXTURING_H
|
|
|
|
#include "Gwen/Gwen.h"
|
|
#include "Gwen/Texture.h"
|
|
|
|
namespace Gwen
|
|
{
|
|
namespace Skin
|
|
{
|
|
namespace Texturing
|
|
{
|
|
struct Single
|
|
{
|
|
Single()
|
|
{
|
|
texture = NULL;
|
|
}
|
|
|
|
void Init(Texture* pTexture, float x, float y, float w, float h)
|
|
{
|
|
texture = pTexture;
|
|
|
|
float texw = texture->width;
|
|
float texh = texture->height;
|
|
|
|
uv[0] = x / texw;
|
|
uv[1] = y / texh;
|
|
uv[2] = (x + w) / texw;
|
|
uv[3] = (y + h) / texh;
|
|
}
|
|
|
|
void Draw(Gwen::Renderer::Base* render, Gwen::Rect r, const Gwen::Color& col = Gwen::Colors::White)
|
|
{
|
|
render->SetDrawColor(col);
|
|
|
|
render->DrawTexturedRect(texture, r, uv[0], uv[1], uv[2], uv[3]);
|
|
}
|
|
|
|
Texture* texture;
|
|
float uv[4];
|
|
};
|
|
|
|
struct Bordered
|
|
{
|
|
Bordered()
|
|
{
|
|
texture = NULL;
|
|
}
|
|
|
|
void Init(Texture* pTexture, float x, float y, float w, float h, Margin in_margin, float DrawMarginScale = 1.0f)
|
|
{
|
|
texture = pTexture;
|
|
|
|
margin = in_margin;
|
|
|
|
SetRect(0, x, y, margin.left, margin.top);
|
|
SetRect(1, x + margin.left, y, w - margin.left - margin.right - 1, margin.top);
|
|
SetRect(2, (x + w) - margin.right, y, margin.right, margin.top);
|
|
|
|
SetRect(3, x, y + margin.top, margin.left, h - margin.top - margin.bottom - 1);
|
|
SetRect(4, x + margin.left, y + margin.top, w - margin.left - margin.right - 1, h - margin.top - margin.bottom - 1);
|
|
SetRect(5, (x + w) - margin.right, y + margin.top, margin.right, h - margin.top - margin.bottom - 1);
|
|
|
|
SetRect(6, x, (y + h) - margin.bottom, margin.left, margin.bottom);
|
|
SetRect(7, x + margin.left, (y + h) - margin.bottom, w - margin.left - margin.right - 1, margin.bottom);
|
|
SetRect(8, (x + w) - margin.right, (y + h) - margin.bottom, margin.right, margin.bottom);
|
|
|
|
margin.left *= DrawMarginScale;
|
|
margin.right *= DrawMarginScale;
|
|
margin.top *= DrawMarginScale;
|
|
margin.bottom *= DrawMarginScale;
|
|
|
|
width = w - x;
|
|
height = h - y;
|
|
}
|
|
|
|
void SetRect(int iNum, float x, float y, float w, float h)
|
|
{
|
|
float texw = texture->width;
|
|
float texh = texture->height;
|
|
|
|
//x -= 1.0f;
|
|
//y -= 1.0f;
|
|
|
|
rects[iNum].uv[0] = x / texw;
|
|
rects[iNum].uv[1] = y / texh;
|
|
|
|
rects[iNum].uv[2] = (x + w) / texw;
|
|
rects[iNum].uv[3] = (y + h) / texh;
|
|
|
|
// rects[iNum].uv[0] += 1.0f / texture->width;
|
|
// rects[iNum].uv[1] += 1.0f / texture->width;
|
|
}
|
|
|
|
void Draw(Gwen::Renderer::Base* render, Gwen::Rect r, const Gwen::Color& col = Gwen::Colors::White)
|
|
{
|
|
render->SetDrawColor(col);
|
|
|
|
if (r.w < width && r.h < height)
|
|
{
|
|
render->DrawTexturedRect(texture,
|
|
r,
|
|
rects[0].uv[0], rects[0].uv[1], rects[8].uv[2], rects[8].uv[3]);
|
|
return;
|
|
}
|
|
|
|
DrawRect(render, 0, r.x, r.y, margin.left, margin.top);
|
|
DrawRect(render, 1, r.x + margin.left, r.y, r.w - margin.left - margin.right, margin.top);
|
|
DrawRect(render, 2, (r.x + r.w) - margin.right, r.y, margin.right, margin.top);
|
|
|
|
DrawRect(render, 3, r.x, r.y + margin.top, margin.left, r.h - margin.top - margin.bottom);
|
|
DrawRect(render, 4, r.x + margin.left, r.y + margin.top, r.w - margin.left - margin.right, r.h - margin.top - margin.bottom);
|
|
DrawRect(render, 5, (r.x + r.w) - margin.right, r.y + margin.top, margin.right, r.h - margin.top - margin.bottom);
|
|
|
|
DrawRect(render, 6, r.x, (r.y + r.h) - margin.bottom, margin.left, margin.bottom);
|
|
DrawRect(render, 7, r.x + margin.left, (r.y + r.h) - margin.bottom, r.w - margin.left - margin.right, margin.bottom);
|
|
DrawRect(render, 8, (r.x + r.w) - margin.right, (r.y + r.h) - margin.bottom, margin.right, margin.bottom);
|
|
}
|
|
|
|
void DrawRect(Gwen::Renderer::Base* render, int i, int x, int y, int w, int h)
|
|
{
|
|
render->DrawTexturedRect(texture,
|
|
Gwen::Rect(x, y, w, h),
|
|
rects[i].uv[0], rects[i].uv[1], rects[i].uv[2], rects[i].uv[3]);
|
|
}
|
|
|
|
Texture* texture;
|
|
|
|
struct SubRect
|
|
{
|
|
float uv[4];
|
|
};
|
|
|
|
SubRect rects[9];
|
|
Margin margin;
|
|
|
|
float width;
|
|
float height;
|
|
};
|
|
} // namespace Texturing
|
|
} // namespace Skin
|
|
} // namespace Gwen
|
|
#endif
|