diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp
index b5c15fd3f..049ecf1c3 100644
--- a/WickedEngine/MainComponent.cpp
+++ b/WickedEngine/MainComponent.cpp
@@ -171,7 +171,7 @@ void MainComponent::Compose()
{
ss << "CPU: " << wiCpuInfo::GetCpuPercentage() << "%" << endl;
}
- wiFont(ss.str(), wiFontProps(0, 0, infoDisplay.size, WIFALIGN_LEFT, WIFALIGN_TOP, infoDisplay.size)).Draw();
+ wiFont(ss.str(), wiFontProps(0, 0, infoDisplay.size, WIFALIGN_LEFT, WIFALIGN_TOP, -2)).Draw();
}
// Draw the color grading palette
diff --git a/WickedEngine/MainComponent.h b/WickedEngine/MainComponent.h
index 4da98d6d6..1dbcb2389 100644
--- a/WickedEngine/MainComponent.h
+++ b/WickedEngine/MainComponent.h
@@ -71,7 +71,7 @@ public:
float size;
InfoDisplayer() :active(false), watermark(true), fpsinfo(true), cpuinfo(true),
- resolution(false), size(-7.f)
+ resolution(false), size(10.f)
{}
};
// display all-time engine information text
diff --git a/WickedEngine/WickedEngine_SHARED.vcxitems b/WickedEngine/WickedEngine_SHARED.vcxitems
index 07c187b12..62ced9179 100644
--- a/WickedEngine/WickedEngine_SHARED.vcxitems
+++ b/WickedEngine/WickedEngine_SHARED.vcxitems
@@ -688,8 +688,9 @@
-
+
true
+ Document
diff --git a/WickedEngine/WickedEngine_SHARED.vcxitems.filters b/WickedEngine/WickedEngine_SHARED.vcxitems.filters
index 37cdfb810..ba2c9f61e 100644
--- a/WickedEngine/WickedEngine_SHARED.vcxitems.filters
+++ b/WickedEngine/WickedEngine_SHARED.vcxitems.filters
@@ -1842,11 +1842,11 @@
-
- fonts
-
+
+ fonts
+
diff --git a/WickedEngine/fonts/basic.txt b/WickedEngine/fonts/basic.wifont
similarity index 99%
rename from WickedEngine/fonts/basic.txt
rename to WickedEngine/fonts/basic.wifont
index f11c6c50b..f5ae4d3f8 100644
--- a/WickedEngine/fonts/basic.txt
+++ b/WickedEngine/fonts/basic.wifont
@@ -1,5 +1,3 @@
-256
-256
20
25
65 0 0 25
diff --git a/WickedEngine/wiBackLog.cpp b/WickedEngine/wiBackLog.cpp
index 9677b717e..7a69759bb 100644
--- a/WickedEngine/wiBackLog.cpp
+++ b/WickedEngine/wiBackLog.cpp
@@ -28,7 +28,7 @@ void wiBackLog::Initialize(){
inputArea=stringstream("");
const unsigned char colorData[] = { 0, 0, 43, 200, 43, 31, 141, 223 };
wiTextureHelper::CreateTexture(backgroundTex, colorData, 1, 2, 4);
- font = wiFont(L"", wiFontProps(5, 0, 0, WIFALIGN_LEFT, WIFALIGN_BOTTOM, -8));
+ font = wiFont("", wiFontProps(5, 0, 11, WIFALIGN_LEFT, WIFALIGN_BOTTOM, -8));
}
void wiBackLog::CleanUp(){
stream.clear();
@@ -73,9 +73,7 @@ void wiBackLog::Draw(){
font.SetText(getText());
font.props.posY = wiRenderer::GetDevice()->GetScreenHeight() - 75 - pos - scroll;
font.Draw();
- wiFont(inputArea.str().c_str(), wiFontProps(5, (float)wiRenderer::GetDevice()->GetScreenHeight() - 10, 0, WIFALIGN_LEFT, WIFALIGN_BOTTOM, -8)).Draw();
- //wiFont::Draw(wiBackLog::getText(), "01", XMFLOAT4(5, pos - wiRenderer::RENDERHEIGHT + 75 + scroll, 0, -8), "left", "bottom");
- //wiFont::Draw(inputArea.str().c_str(), "01", XMFLOAT4(5, -(float)wiRenderer::RENDERHEIGHT + 10, 0, -8), "left", "bottom");
+ wiFont(inputArea.str().c_str(), wiFontProps(5, (float)wiRenderer::GetDevice()->GetScreenHeight() - 10, 14, WIFALIGN_LEFT, WIFALIGN_BOTTOM, -8)).Draw();
}
}
diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp
index d8bf7f877..a4ea3e922 100644
--- a/WickedEngine/wiFont.cpp
+++ b/WickedEngine/wiFont.cpp
@@ -145,8 +145,20 @@ void wiFont::CleanUpStatic()
fontStyles.clear();
vertexList.clear();
-
- //TODO
+
+ SAFE_DELETE(vertexBuffer);
+ SAFE_DELETE(indexBuffer);
+ SAFE_DELETE(vertexLayout);
+ SAFE_DELETE(vertexShader);
+ SAFE_DELETE(pixelShader);
+ SAFE_DELETE(blendState);
+ SAFE_DELETE(constantBuffer);
+ SAFE_DELETE(rasterizerState);
+ SAFE_DELETE(depthStencilState);
+ SAFE_DELETE(vertexBuffer);
+ SAFE_DELETE(vertexBuffer);
+ SAFE_DELETE(vertexBuffer);
+ SAFE_DELETE(vertexBuffer);
}
void wiFont::BindPersistentState(GRAPHICSTHREAD threadID)
@@ -157,57 +169,66 @@ void wiFont::BindPersistentState(GRAPHICSTHREAD threadID)
void wiFont::ModifyGeo(const wstring& text, wiFontProps props, int style, GRAPHICSTHREAD threadID)
{
- int line = 0, pos = 0;
- vertexList.resize(text.length()*4);
- for(unsigned int i=0;iUpdateBuffer(vertexBuffer,vertexList.data(),threadID,sizeof(Vertex) * text.length() * 4);
+ wiRenderer::GetDevice()->UpdateBuffer(vertexBuffer, vertexList.data(), threadID, sizeof(Vertex) * text.length() * 4);
}
@@ -306,16 +327,20 @@ int wiFont::textWidth()
int max=0,lineW=0;
int len=text.length();
while(iLOCK();
-
+wiFont::wiFontStyle::wiFontStyle(const string& newName)
+{
name=newName;
for(short i=0;i<127;i++) lookup[i].code=lookup[i].offX=lookup[i].offY=0;
std::stringstream ss(""),ss1("");
- ss<<"fonts/"<add(ss1.str());
- file>>texWidth>>texHeight>>recSize>>charSize;
+ texWidth = texture->GetDesc().Width;
+ texHeight = texture->GetDesc().Height;
+ file>>recSize>>charSize;
int i=0;
while(!file.eof()){
i++;
@@ -376,10 +402,8 @@ wiFont::wiFontStyle::wiFontStyle(const string& newName){
file.close();
}
else {
- wiHelper::messageBox(name,"Could not load Font Data!");
+ wiHelper::messageBox(name, "Could not load Font Data: " + ss.str());
}
-
- wiRenderer::GetDevice()->UNLOCK();
}
void wiFont::wiFontStyle::CleanUp(){
SAFE_DELETE(texture);
diff --git a/WickedEngine/wiFont.h b/WickedEngine/wiFont.h
index b1798afc8..348c38844 100644
--- a/WickedEngine/wiFont.h
+++ b/WickedEngine/wiFont.h
@@ -8,9 +8,9 @@
enum wiFontAlign
{
WIFALIGN_LEFT,
- //same as mid
+ // same as mid
WIFALIGN_CENTER,
- //same as center
+ // same as center
WIFALIGN_MID,
WIFALIGN_RIGHT,
WIFALIGN_TOP,
@@ -26,8 +26,7 @@ public:
float posX, posY;
wiFontAlign h_align, v_align;
- //zero-based properties: add or subtract from values
- wiFontProps(float posX = 0, float posY = 0, float size = 0, wiFontAlign h_align = WIFALIGN_LEFT, wiFontAlign v_align = WIFALIGN_TOP
+ wiFontProps(float posX = 0, float posY = 0, float size = 11, wiFontAlign h_align = WIFALIGN_LEFT, wiFontAlign v_align = WIFALIGN_TOP
, float spacingX = 0, float spacingY = 0)
:posX(posX), posY(posY), size(size), h_align(h_align), v_align(v_align), spacingX(spacingX), spacingY(spacingY)
{}
diff --git a/WickedEngine/wiGraphicsDevice_DX11.cpp b/WickedEngine/wiGraphicsDevice_DX11.cpp
index e733b7cc8..08774a948 100644
--- a/WickedEngine/wiGraphicsDevice_DX11.cpp
+++ b/WickedEngine/wiGraphicsDevice_DX11.cpp
@@ -208,6 +208,8 @@ Texture2D GraphicsDevice_DX11::GetBackBuffer()
return result;
}
+// Engine -> Native converters
+
inline UINT _ParseBindFlags(UINT value)
{
UINT _flag = 0;
@@ -605,16 +607,16 @@ inline D3D11_USAGE _ConvertUsage(USAGE value)
{
switch (value)
{
- case USAGE_DEFAULT:
+ case D3D11_USAGE_DEFAULT:
return D3D11_USAGE_DEFAULT;
break;
- case USAGE_IMMUTABLE:
+ case D3D11_USAGE_IMMUTABLE:
return D3D11_USAGE_IMMUTABLE;
break;
- case USAGE_DYNAMIC:
+ case D3D11_USAGE_DYNAMIC:
return D3D11_USAGE_DYNAMIC;
break;
- case USAGE_STAGING:
+ case D3D11_USAGE_STAGING:
return D3D11_USAGE_STAGING;
break;
default:
@@ -1029,6 +1031,464 @@ inline D3D11_SUBRESOURCE_DATA* _ConvertSubresourceData(const SubresourceData* pI
}
+// Native -> Engine converters
+
+inline UINT _ParseBindFlags_Inv(UINT value)
+{
+ UINT _flag = 0;
+
+ if (value & D3D11_BIND_VERTEX_BUFFER)
+ _flag |= BIND_VERTEX_BUFFER;
+ if (value & D3D11_BIND_INDEX_BUFFER)
+ _flag |= BIND_INDEX_BUFFER;
+ if (value & D3D11_BIND_CONSTANT_BUFFER)
+ _flag |= BIND_CONSTANT_BUFFER;
+ if (value & D3D11_BIND_SHADER_RESOURCE)
+ _flag |= BIND_SHADER_RESOURCE;
+ if (value & D3D11_BIND_STREAM_OUTPUT)
+ _flag |= BIND_STREAM_OUTPUT;
+ if (value & D3D11_BIND_RENDER_TARGET)
+ _flag |= BIND_RENDER_TARGET;
+ if (value & D3D11_BIND_DEPTH_STENCIL)
+ _flag |= BIND_DEPTH_STENCIL;
+ if (value & D3D11_BIND_UNORDERED_ACCESS)
+ _flag |= BIND_UNORDERED_ACCESS;
+
+ return _flag;
+}
+inline UINT _ParseCPUAccessFlags_Inv(UINT value)
+{
+ UINT _flag = 0;
+
+ if (value & D3D11_CPU_ACCESS_WRITE)
+ _flag |= CPU_ACCESS_WRITE;
+ if (value & D3D11_CPU_ACCESS_READ)
+ _flag |= CPU_ACCESS_READ;
+
+ return _flag;
+}
+inline UINT _ParseResourceMiscFlags_Inv(UINT value)
+{
+ UINT _flag = 0;
+
+ if (value & D3D11_RESOURCE_MISC_GENERATE_MIPS)
+ _flag |= RESOURCE_MISC_GENERATE_MIPS;
+ if (value & D3D11_RESOURCE_MISC_SHARED)
+ _flag |= RESOURCE_MISC_SHARED;
+ if (value & D3D11_RESOURCE_MISC_TEXTURECUBE)
+ _flag |= RESOURCE_MISC_TEXTURECUBE;
+ if (value & D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS)
+ _flag |= RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS;
+ if (value & D3D11_RESOURCE_MISC_BUFFER_STRUCTURED)
+ _flag |= RESOURCE_MISC_BUFFER_STRUCTURED;
+ if (value & D3D11_RESOURCE_MISC_TILED)
+ _flag |= RESOURCE_MISC_TILED;
+
+ return _flag;
+}
+
+inline FORMAT _ConvertFormat_Inv(DXGI_FORMAT value)
+{
+ switch (value)
+ {
+ case DXGI_FORMAT_UNKNOWN:
+ return FORMAT_UNKNOWN;
+ break;
+ case DXGI_FORMAT_R32G32B32A32_TYPELESS:
+ return FORMAT_R32G32B32A32_TYPELESS;
+ break;
+ case DXGI_FORMAT_R32G32B32A32_FLOAT:
+ return FORMAT_R32G32B32A32_FLOAT;
+ break;
+ case DXGI_FORMAT_R32G32B32A32_UINT:
+ return FORMAT_R32G32B32A32_UINT;
+ break;
+ case DXGI_FORMAT_R32G32B32A32_SINT:
+ return FORMAT_R32G32B32A32_SINT;
+ break;
+ case DXGI_FORMAT_R32G32B32_TYPELESS:
+ return FORMAT_R32G32B32_TYPELESS;
+ break;
+ case DXGI_FORMAT_R32G32B32_FLOAT:
+ return FORMAT_R32G32B32_FLOAT;
+ break;
+ case DXGI_FORMAT_R32G32B32_UINT:
+ return FORMAT_R32G32B32_UINT;
+ break;
+ case DXGI_FORMAT_R32G32B32_SINT:
+ return FORMAT_R32G32B32_SINT;
+ break;
+ case DXGI_FORMAT_R16G16B16A16_TYPELESS:
+ return FORMAT_R16G16B16A16_TYPELESS;
+ break;
+ case DXGI_FORMAT_R16G16B16A16_FLOAT:
+ return FORMAT_R16G16B16A16_FLOAT;
+ break;
+ case DXGI_FORMAT_R16G16B16A16_UNORM:
+ return FORMAT_R16G16B16A16_UNORM;
+ break;
+ case DXGI_FORMAT_R16G16B16A16_UINT:
+ return FORMAT_R16G16B16A16_UINT;
+ break;
+ case DXGI_FORMAT_R16G16B16A16_SNORM:
+ return FORMAT_R16G16B16A16_SNORM;
+ break;
+ case DXGI_FORMAT_R16G16B16A16_SINT:
+ return FORMAT_R16G16B16A16_SINT;
+ break;
+ case DXGI_FORMAT_R32G32_TYPELESS:
+ return FORMAT_R32G32_TYPELESS;
+ break;
+ case DXGI_FORMAT_R32G32_FLOAT:
+ return FORMAT_R32G32_FLOAT;
+ break;
+ case DXGI_FORMAT_R32G32_UINT:
+ return FORMAT_R32G32_UINT;
+ break;
+ case DXGI_FORMAT_R32G32_SINT:
+ return FORMAT_R32G32_SINT;
+ break;
+ case DXGI_FORMAT_R32G8X24_TYPELESS:
+ return FORMAT_R32G8X24_TYPELESS;
+ break;
+ case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
+ return FORMAT_D32_FLOAT_S8X24_UINT;
+ break;
+ case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS:
+ return FORMAT_R32_FLOAT_X8X24_TYPELESS;
+ break;
+ case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT:
+ return FORMAT_X32_TYPELESS_G8X24_UINT;
+ break;
+ case DXGI_FORMAT_R10G10B10A2_TYPELESS:
+ return FORMAT_R10G10B10A2_TYPELESS;
+ break;
+ case DXGI_FORMAT_R10G10B10A2_UNORM:
+ return FORMAT_R10G10B10A2_UNORM;
+ break;
+ case DXGI_FORMAT_R10G10B10A2_UINT:
+ return FORMAT_R10G10B10A2_UINT;
+ break;
+ case DXGI_FORMAT_R11G11B10_FLOAT:
+ return FORMAT_R11G11B10_FLOAT;
+ break;
+ case DXGI_FORMAT_R8G8B8A8_TYPELESS:
+ return FORMAT_R8G8B8A8_TYPELESS;
+ break;
+ case DXGI_FORMAT_R8G8B8A8_UNORM:
+ return FORMAT_R8G8B8A8_UNORM;
+ break;
+ case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
+ return FORMAT_R8G8B8A8_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_R8G8B8A8_UINT:
+ return FORMAT_R8G8B8A8_UINT;
+ break;
+ case DXGI_FORMAT_R8G8B8A8_SNORM:
+ return FORMAT_R8G8B8A8_SNORM;
+ break;
+ case DXGI_FORMAT_R8G8B8A8_SINT:
+ return FORMAT_R8G8B8A8_SINT;
+ break;
+ case DXGI_FORMAT_R16G16_TYPELESS:
+ return FORMAT_R16G16_TYPELESS;
+ break;
+ case DXGI_FORMAT_R16G16_FLOAT:
+ return FORMAT_R16G16_FLOAT;
+ break;
+ case DXGI_FORMAT_R16G16_UNORM:
+ return FORMAT_R16G16_UNORM;
+ break;
+ case DXGI_FORMAT_R16G16_UINT:
+ return FORMAT_R16G16_UINT;
+ break;
+ case DXGI_FORMAT_R16G16_SNORM:
+ return FORMAT_R16G16_SNORM;
+ break;
+ case DXGI_FORMAT_R16G16_SINT:
+ return FORMAT_R16G16_SINT;
+ break;
+ case DXGI_FORMAT_R32_TYPELESS:
+ return FORMAT_R32_TYPELESS;
+ break;
+ case DXGI_FORMAT_D32_FLOAT:
+ return FORMAT_D32_FLOAT;
+ break;
+ case DXGI_FORMAT_R32_FLOAT:
+ return FORMAT_R32_FLOAT;
+ break;
+ case DXGI_FORMAT_R32_UINT:
+ return FORMAT_R32_UINT;
+ break;
+ case DXGI_FORMAT_R32_SINT:
+ return FORMAT_R32_SINT;
+ break;
+ case DXGI_FORMAT_R24G8_TYPELESS:
+ return FORMAT_R24G8_TYPELESS;
+ break;
+ case DXGI_FORMAT_D24_UNORM_S8_UINT:
+ return FORMAT_D24_UNORM_S8_UINT;
+ break;
+ case DXGI_FORMAT_R24_UNORM_X8_TYPELESS:
+ return FORMAT_R24_UNORM_X8_TYPELESS;
+ break;
+ case DXGI_FORMAT_X24_TYPELESS_G8_UINT:
+ return FORMAT_X24_TYPELESS_G8_UINT;
+ break;
+ case DXGI_FORMAT_R8G8_TYPELESS:
+ return FORMAT_R8G8_TYPELESS;
+ break;
+ case DXGI_FORMAT_R8G8_UNORM:
+ return FORMAT_R8G8_UNORM;
+ break;
+ case DXGI_FORMAT_R8G8_UINT:
+ return FORMAT_R8G8_UINT;
+ break;
+ case DXGI_FORMAT_R8G8_SNORM:
+ return FORMAT_R8G8_SNORM;
+ break;
+ case DXGI_FORMAT_R8G8_SINT:
+ return FORMAT_R8G8_SINT;
+ break;
+ case DXGI_FORMAT_R16_TYPELESS:
+ return FORMAT_R16_TYPELESS;
+ break;
+ case DXGI_FORMAT_R16_FLOAT:
+ return FORMAT_R16_FLOAT;
+ break;
+ case DXGI_FORMAT_D16_UNORM:
+ return FORMAT_D16_UNORM;
+ break;
+ case DXGI_FORMAT_R16_UNORM:
+ return FORMAT_R16_UNORM;
+ break;
+ case DXGI_FORMAT_R16_UINT:
+ return FORMAT_R16_UINT;
+ break;
+ case DXGI_FORMAT_R16_SNORM:
+ return FORMAT_R16_SNORM;
+ break;
+ case DXGI_FORMAT_R16_SINT:
+ return FORMAT_R16_SINT;
+ break;
+ case DXGI_FORMAT_R8_TYPELESS:
+ return FORMAT_R8_TYPELESS;
+ break;
+ case DXGI_FORMAT_R8_UNORM:
+ return FORMAT_R8_UNORM;
+ break;
+ case DXGI_FORMAT_R8_UINT:
+ return FORMAT_R8_UINT;
+ break;
+ case DXGI_FORMAT_R8_SNORM:
+ return FORMAT_R8_SNORM;
+ break;
+ case DXGI_FORMAT_R8_SINT:
+ return FORMAT_R8_SINT;
+ break;
+ case DXGI_FORMAT_A8_UNORM:
+ return FORMAT_A8_UNORM;
+ break;
+ case DXGI_FORMAT_R1_UNORM:
+ return FORMAT_R1_UNORM;
+ break;
+ case DXGI_FORMAT_R9G9B9E5_SHAREDEXP:
+ return FORMAT_R9G9B9E5_SHAREDEXP;
+ break;
+ case DXGI_FORMAT_R8G8_B8G8_UNORM:
+ return FORMAT_R8G8_B8G8_UNORM;
+ break;
+ case DXGI_FORMAT_G8R8_G8B8_UNORM:
+ return FORMAT_G8R8_G8B8_UNORM;
+ break;
+ case DXGI_FORMAT_BC1_TYPELESS:
+ return FORMAT_BC1_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC1_UNORM:
+ return FORMAT_BC1_UNORM;
+ break;
+ case DXGI_FORMAT_BC1_UNORM_SRGB:
+ return FORMAT_BC1_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_BC2_TYPELESS:
+ return FORMAT_BC2_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC2_UNORM:
+ return FORMAT_BC2_UNORM;
+ break;
+ case DXGI_FORMAT_BC2_UNORM_SRGB:
+ return FORMAT_BC2_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_BC3_TYPELESS:
+ return FORMAT_BC3_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC3_UNORM:
+ return FORMAT_BC3_UNORM;
+ break;
+ case DXGI_FORMAT_BC3_UNORM_SRGB:
+ return FORMAT_BC3_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_BC4_TYPELESS:
+ return FORMAT_BC4_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC4_UNORM:
+ return FORMAT_BC4_UNORM;
+ break;
+ case DXGI_FORMAT_BC4_SNORM:
+ return FORMAT_BC4_SNORM;
+ break;
+ case DXGI_FORMAT_BC5_TYPELESS:
+ return FORMAT_BC5_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC5_UNORM:
+ return FORMAT_BC5_UNORM;
+ break;
+ case DXGI_FORMAT_BC5_SNORM:
+ return FORMAT_BC5_SNORM;
+ break;
+ case DXGI_FORMAT_B5G6R5_UNORM:
+ return FORMAT_B5G6R5_UNORM;
+ break;
+ case DXGI_FORMAT_B5G5R5A1_UNORM:
+ return FORMAT_B5G5R5A1_UNORM;
+ break;
+ case DXGI_FORMAT_B8G8R8A8_UNORM:
+ return FORMAT_B8G8R8A8_UNORM;
+ break;
+ case DXGI_FORMAT_B8G8R8X8_UNORM:
+ return FORMAT_B8G8R8X8_UNORM;
+ break;
+ case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM:
+ return FORMAT_R10G10B10_XR_BIAS_A2_UNORM;
+ break;
+ case DXGI_FORMAT_B8G8R8A8_TYPELESS:
+ return FORMAT_B8G8R8A8_TYPELESS;
+ break;
+ case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB:
+ return FORMAT_B8G8R8A8_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_B8G8R8X8_TYPELESS:
+ return FORMAT_B8G8R8X8_TYPELESS;
+ break;
+ case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB:
+ return FORMAT_B8G8R8X8_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_BC6H_TYPELESS:
+ return FORMAT_BC6H_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC6H_UF16:
+ return FORMAT_BC6H_UF16;
+ break;
+ case DXGI_FORMAT_BC6H_SF16:
+ return FORMAT_BC6H_SF16;
+ break;
+ case DXGI_FORMAT_BC7_TYPELESS:
+ return FORMAT_BC7_TYPELESS;
+ break;
+ case DXGI_FORMAT_BC7_UNORM:
+ return FORMAT_BC7_UNORM;
+ break;
+ case DXGI_FORMAT_BC7_UNORM_SRGB:
+ return FORMAT_BC7_UNORM_SRGB;
+ break;
+ case DXGI_FORMAT_AYUV:
+ return FORMAT_AYUV;
+ break;
+ case DXGI_FORMAT_Y410:
+ return FORMAT_Y410;
+ break;
+ case DXGI_FORMAT_Y416:
+ return FORMAT_Y416;
+ break;
+ case DXGI_FORMAT_NV12:
+ return FORMAT_NV12;
+ break;
+ case DXGI_FORMAT_P010:
+ return FORMAT_P010;
+ break;
+ case DXGI_FORMAT_P016:
+ return FORMAT_P016;
+ break;
+ case DXGI_FORMAT_420_OPAQUE:
+ return FORMAT_420_OPAQUE;
+ break;
+ case DXGI_FORMAT_YUY2:
+ return FORMAT_YUY2;
+ break;
+ case DXGI_FORMAT_Y210:
+ return FORMAT_Y210;
+ break;
+ case DXGI_FORMAT_Y216:
+ return FORMAT_Y216;
+ break;
+ case DXGI_FORMAT_NV11:
+ return FORMAT_NV11;
+ break;
+ case DXGI_FORMAT_AI44:
+ return FORMAT_AI44;
+ break;
+ case DXGI_FORMAT_IA44:
+ return FORMAT_IA44;
+ break;
+ case DXGI_FORMAT_P8:
+ return FORMAT_P8;
+ break;
+ case DXGI_FORMAT_A8P8:
+ return FORMAT_A8P8;
+ break;
+ case DXGI_FORMAT_B4G4R4A4_UNORM:
+ return FORMAT_B4G4R4A4_UNORM;
+ break;
+ case DXGI_FORMAT_FORCE_UINT:
+ return FORMAT_FORCE_UINT;
+ break;
+ default:
+ break;
+ }
+ return FORMAT_UNKNOWN;
+}
+inline USAGE _ConvertUsage_Inv(D3D11_USAGE value)
+{
+ switch (value)
+ {
+ case D3D11_USAGE_DEFAULT:
+ return USAGE_DEFAULT;
+ break;
+ case D3D11_USAGE_IMMUTABLE:
+ return USAGE_IMMUTABLE;
+ break;
+ case D3D11_USAGE_DYNAMIC:
+ return USAGE_DYNAMIC;
+ break;
+ case D3D11_USAGE_STAGING:
+ return USAGE_STAGING;
+ break;
+ default:
+ break;
+ }
+ return USAGE_DEFAULT;
+}
+
+inline Texture2DDesc _ConvertTexture2DDesc_Inv(const D3D11_TEXTURE2D_DESC* pDesc)
+{
+ Texture2DDesc desc;
+ desc.Width = pDesc->Width;
+ desc.Height = pDesc->Height;
+ desc.MipLevels = pDesc->MipLevels;
+ desc.ArraySize = pDesc->ArraySize;
+ desc.Format = _ConvertFormat_Inv(pDesc->Format);
+ desc.SampleDesc.Count = pDesc->SampleDesc.Count;
+ desc.SampleDesc.Quality = pDesc->SampleDesc.Quality;
+ desc.Usage = _ConvertUsage_Inv(pDesc->Usage);
+ desc.BindFlags = _ParseBindFlags_Inv(pDesc->BindFlags);
+ desc.CPUAccessFlags = _ParseCPUAccessFlags_Inv(pDesc->CPUAccessFlags);
+ desc.MiscFlags = _ParseResourceMiscFlags_Inv(pDesc->MiscFlags);
+
+ return desc;
+}
+
+// Engine functions
+
HRESULT GraphicsDevice_DX11::CreateBuffer(const GPUBufferDesc *pDesc, const SubresourceData* pInitialData, GPUBuffer *ppBuffer)
{
D3D11_BUFFER_DESC desc;
@@ -1884,8 +2344,14 @@ HRESULT GraphicsDevice_DX11::CreateTextureFromFile(const string& fileName, Textu
UNLOCK();
}
- if (FAILED(hr))
+ if (FAILED(hr)) {
SAFE_DELETE(*ppTexture);
+ }
+ else {
+ D3D11_TEXTURE2D_DESC desc;
+ (*ppTexture)->texture2D_DX11->GetDesc(&desc);
+ (*ppTexture)->desc = _ConvertTexture2DDesc_Inv(&desc);
+ }
return hr;
}
diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp
index 18186339f..08ea2c60c 100644
--- a/WickedEngine/wiVersion.cpp
+++ b/WickedEngine/wiVersion.cpp
@@ -7,7 +7,7 @@ namespace wiVersion
// minor features, major bug fixes
const int minor = 7;
// minor bug fixes, alterations, refactors
- const int revision = 18;
+ const int revision = 19;
long GetVersion()
diff --git a/WickedEngine/wiWidget.cpp b/WickedEngine/wiWidget.cpp
index 38ffeea89..095e0a855 100644
--- a/WickedEngine/wiWidget.cpp
+++ b/WickedEngine/wiWidget.cpp
@@ -9,6 +9,7 @@
wiWidget::wiWidget():Transform()
{
+ SetFontScaling(0.5f);
state = IDLE;
enabled = true;
visible = true;
@@ -105,6 +106,18 @@ wiColor wiWidget::GetColor()
{
return colors[GetState()];
}
+float wiWidget::GetScaledFontSize()
+{
+ return GetFontScaling() * min(scale.x, scale.y);
+}
+void wiWidget::SetFontScaling(float val)
+{
+ fontScaling = val;
+}
+float wiWidget::GetFontScaling()
+{
+ return fontScaling;
+}
wiButton::wiButton(const string& name) :wiWidget()
@@ -208,7 +221,7 @@ void wiButton::Render(wiGUI* gui)
wiImage::Draw(wiTextureHelper::getInstance()->getColor(color)
, wiImageEffects(translation.x, translation.y, scale.x, scale.y), gui->GetGraphicsThread());
- wiFont(text, wiFontProps(translation.x + scale.x*0.5f, translation.y + scale.y*0.5f, 0, WIFALIGN_CENTER, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
+ wiFont(text, wiFontProps(translation.x + scale.x*0.5f, translation.y + scale.y*0.5f, GetScaledFontSize(), WIFALIGN_CENTER, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
}
void wiButton::OnClick(function func)
{
@@ -260,7 +273,7 @@ void wiLabel::Render(wiGUI* gui)
wiImage::Draw(wiTextureHelper::getInstance()->getColor(color)
, wiImageEffects(translation.x, translation.y, scale.x, scale.y), gui->GetGraphicsThread());
- wiFont(text, wiFontProps(translation.x, translation.y, 0, WIFALIGN_LEFT, WIFALIGN_TOP)).Draw(gui->GetGraphicsThread());
+ wiFont(text, wiFontProps(translation.x, translation.y, GetScaledFontSize(), WIFALIGN_LEFT, WIFALIGN_TOP)).Draw(gui->GetGraphicsThread());
}
@@ -387,11 +400,11 @@ void wiSlider::Render(wiGUI* gui)
, wiImageEffects(headPosX - headWidth * 0.5f, translation.y, headWidth, scale.y), gui->GetGraphicsThread());
// text
- wiFont(text, wiFontProps(translation.x - headWidth * 0.5f, translation.y + scale.y*0.5f, 0, WIFALIGN_RIGHT, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
+ wiFont(text, wiFontProps(translation.x - headWidth * 0.5f, translation.y + scale.y*0.5f, GetScaledFontSize(), WIFALIGN_RIGHT, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
// value
stringstream ss("");
ss << value;
- wiFont(ss.str(), wiFontProps(translation.x + scale.x + headWidth * 0.5f, translation.y + scale.y*0.5f, 0, WIFALIGN_LEFT, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
+ wiFont(ss.str(), wiFontProps(translation.x + scale.x + headWidth * 0.5f, translation.y + scale.y*0.5f, GetScaledFontSize(), WIFALIGN_LEFT, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
}
void wiSlider::OnSlide(function func)
{
@@ -515,7 +528,7 @@ void wiCheckBox::Render(wiGUI* gui)
, gui->GetGraphicsThread());
}
- wiFont(text, wiFontProps(translation.x, translation.y + scale.y*0.5f, 0, WIFALIGN_RIGHT, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
+ wiFont(text, wiFontProps(translation.x, translation.y + scale.y*0.5f, GetScaledFontSize(), WIFALIGN_RIGHT, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
}
void wiCheckBox::OnClick(function func)
{
@@ -662,7 +675,7 @@ void wiDragger::Render(wiGUI* gui)
wiImage::Draw(wiTextureHelper::getInstance()->getColor(color)
, wiImageEffects(translation.x, translation.y, scale.x, scale.y), gui->GetGraphicsThread());
- wiFont(text, wiFontProps(translation.x + scale.x*0.5f, translation.y + scale.y*0.5f, 0, WIFALIGN_CENTER, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
+ wiFont(text, wiFontProps(translation.x + scale.x*0.5f, translation.y + scale.y*0.5f, GetScaledFontSize(), WIFALIGN_CENTER, WIFALIGN_CENTER)).Draw(gui->GetGraphicsThread());
}
void wiDragger::OnDragStart(function func)
{
@@ -841,7 +854,7 @@ void wiWindow::Render(wiGUI* gui)
wiImage::Draw(wiTextureHelper::getInstance()->getColor(color)
, wiImageEffects(translation.x, translation.y, scale.x, scale.y), gui->GetGraphicsThread());
- wiFont(text, wiFontProps(translation.x, translation.y, 0, WIFALIGN_LEFT, WIFALIGN_TOP)).Draw(gui->GetGraphicsThread());
+ wiFont(text, wiFontProps(translation.x, translation.y, moveDragger->scale.y, WIFALIGN_LEFT, WIFALIGN_TOP)).Draw(gui->GetGraphicsThread());
}
void wiWindow::SetVisible(bool value)
{
diff --git a/WickedEngine/wiWidget.h b/WickedEngine/wiWidget.h
index 65a079a6d..6d91a8977 100644
--- a/WickedEngine/wiWidget.h
+++ b/WickedEngine/wiWidget.h
@@ -20,6 +20,8 @@ struct wiEventArgs
class wiWidget : public Transform
{
friend class wiGUI;
+private:
+ float fontScaling;
protected:
wiHashString fastName;
string text;
@@ -41,6 +43,7 @@ protected:
void Activate();
void Deactivate();
wiColor colors[WIDGETSTATE_COUNT];
+ float GetScaledFontSize();
public:
wiWidget();
virtual ~wiWidget();
@@ -58,6 +61,8 @@ public:
bool IsVisible();
void SetColor(const wiColor& color, WIDGETSTATE state);
wiColor GetColor();
+ void SetFontScaling(float val);
+ float GetFontScaling();
virtual void Update(wiGUI* gui);
virtual void Render(wiGUI* gui) = 0;