Skip to content

Commit 8013d81

Browse files
committed
Add linear layout and button
# button style and event - bg fg color - mouse hover - click event # add linear layout - avg width or height - percent calc
1 parent 29c0ac0 commit 8013d81

32 files changed

+768
-173
lines changed

CCGameFramework/CCGameFramework.vcxproj

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -368,41 +368,53 @@ xcopy /r /y /e "$(ProjectDir)script" "$(TargetDir)script"</Command>
368368
<ClCompile Include="ui\window\WindowMsgLoop.cpp" />
369369
</ItemGroup>
370370
<ItemGroup>
371-
<Text Include="script\lib\ui\qr.lua">
372-
<FileType>Text</FileType>
373-
</Text>
374371
<Text Include="script\lib\core\scene.lua">
375-
<FileType>Text</FileType>
372+
<FileType>Document</FileType>
376373
</Text>
377374
<Text Include="script\lib\ui\block.lua">
378-
<FileType>Text</FileType>
375+
<FileType>Document</FileType>
376+
</Text>
377+
<Text Include="script\lib\ui\empty.lua">
378+
<FileType>Document</FileType>
379379
</Text>
380380
<Text Include="script\lib\ui\gdibase.lua">
381-
<FileType>Text</FileType>
381+
<FileType>Document</FileType>
382382
</Text>
383383
<Text Include="script\lib\ui\gradient.lua">
384-
<FileType>Text</FileType>
384+
<FileType>Document</FileType>
385+
</Text>
386+
<Text Include="script\lib\ui\layout\abs.lua">
387+
<FileType>Document</FileType>
388+
</Text>
389+
<Text Include="script\lib\ui\layout\layoutbase.lua">
390+
<FileType>Document</FileType>
391+
</Text>
392+
<Text Include="script\lib\ui\layout\linear.lua">
393+
<FileType>Document</FileType>
394+
</Text>
395+
<Text Include="script\lib\ui\qr.lua">
396+
<FileType>Document</FileType>
397+
</Text>
398+
<Text Include="script\lib\ui\radius.lua">
399+
<FileType>Document</FileType>
385400
</Text>
386401
<Text Include="script\lib\ui\text.lua">
387-
<FileType>Text</FileType>
402+
<FileType>Document</FileType>
388403
</Text>
389404
<Text Include="script\main.lua">
390-
<FileType>Text</FileType>
391-
</Text>
392-
<Text Include="script\scene\welcome.lua">
393-
<FileType>Text</FileType>
405+
<FileType>Document</FileType>
394406
</Text>
395407
<Text Include="script\scene\time.lua">
396-
<FileType>Text</FileType>
408+
<FileType>Document</FileType>
397409
</Text>
398-
<Text Include="script\lib\ui\layout\layoutbase.lua">
399-
<FileType>Text</FileType>
410+
<Text Include="script\scene\welcome.lua">
411+
<FileType>Document</FileType>
400412
</Text>
401-
<Text Include="script\lib\ui\layout\abs.lua">
402-
<FileType>Text</FileType>
413+
<Text Include="script\lib\ui\comctl\button.lua">
414+
<FileType>Document</FileType>
403415
</Text>
404-
<Text Include="script\lib\ui\empty.lua">
405-
<FileType>Text</FileType>
416+
<Text Include="script\lib\core\winevt.lua">
417+
<FileType>Document</FileType>
406418
</Text>
407419
</ItemGroup>
408420
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

CCGameFramework/CCGameFramework.vcxproj.filters

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
</Filter>
1616
<Filter Include="脚本">
1717
<UniqueIdentifier>{221f26cd-134b-40fb-b57c-dc069a79fbe0}</UniqueIdentifier>
18+
<Extensions>lua</Extensions>
1819
</Filter>
1920
</ItemGroup>
2021
<ItemGroup>
@@ -355,13 +356,13 @@
355356
</ClCompile>
356357
</ItemGroup>
357358
<ItemGroup>
358-
<Text Include="script\scene\welcome.lua">
359+
<Text Include="script\lib\core\scene.lua">
359360
<Filter>脚本</Filter>
360361
</Text>
361-
<Text Include="script\lib\ui\layout\abs.lua">
362+
<Text Include="script\lib\ui\block.lua">
362363
<Filter>脚本</Filter>
363364
</Text>
364-
<Text Include="script\lib\ui\block.lua">
365+
<Text Include="script\lib\ui\empty.lua">
365366
<Filter>脚本</Filter>
366367
</Text>
367368
<Text Include="script\lib\ui\gdibase.lua">
@@ -370,25 +371,37 @@
370371
<Text Include="script\lib\ui\gradient.lua">
371372
<Filter>脚本</Filter>
372373
</Text>
374+
<Text Include="script\lib\ui\layout\abs.lua">
375+
<Filter>脚本</Filter>
376+
</Text>
373377
<Text Include="script\lib\ui\layout\layoutbase.lua">
374378
<Filter>脚本</Filter>
375379
</Text>
376-
<Text Include="script\main.lua">
380+
<Text Include="script\lib\ui\layout\linear.lua">
377381
<Filter>脚本</Filter>
378382
</Text>
379-
<Text Include="script\lib\core\scene.lua">
383+
<Text Include="script\lib\ui\qr.lua">
384+
<Filter>脚本</Filter>
385+
</Text>
386+
<Text Include="script\lib\ui\radius.lua">
380387
<Filter>脚本</Filter>
381388
</Text>
382389
<Text Include="script\lib\ui\text.lua">
383390
<Filter>脚本</Filter>
384391
</Text>
392+
<Text Include="script\main.lua">
393+
<Filter>脚本</Filter>
394+
</Text>
385395
<Text Include="script\scene\time.lua">
386396
<Filter>脚本</Filter>
387397
</Text>
388-
<Text Include="script\lib\ui\qr.lua">
398+
<Text Include="script\scene\welcome.lua">
389399
<Filter>脚本</Filter>
390400
</Text>
391-
<Text Include="script\lib\ui\empty.lua">
401+
<Text Include="script\lib\ui\comctl\button.lua">
402+
<Filter>脚本</Filter>
403+
</Text>
404+
<Text Include="script\lib\core\winevt.lua">
392405
<Filter>脚本</Filter>
393406
</Text>
394407
</ItemGroup>

CCGameFramework/base/defines.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,8 @@ using uint = uint64;
2121
using byte = uint8;
2222
using size_t = uint;
2323

24+
#ifndef WM_SYSTIMER
25+
#define WM_SYSTIMER 0x0118 //(caret blink)
26+
#endif
27+
2428
#endif

CCGameFramework/lua_ext/UI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ static const luaL_Reg ui_lib[] = {
1717
{ "add_obj", ui_add_obj },
1818
{ "update", ui_update_obj },
1919
{ "info", ui_info },
20+
{ "set_minw", ui_win_set_minsize },
2021
{ "paint", ui_paint },
2122
{ "set_timer", ui_set_timer },
2223
{ "kill_timer", ui_kill_timer },
24+
{ "quit", ui_quit },
2325
{ "hsb2rgb", ui_helper_hsl2rgb },
2426
{ "rgb2hsb", ui_helper_rgb2hsl },
2527
{ nullptr, nullptr }

CCGameFramework/lua_ext/UI.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ extern int ui_add_obj(lua_State *L);
88
extern int ui_update_obj(lua_State *L);
99
extern int ui_info(lua_State *L);
1010

11+
extern int ui_win_set_minsize(lua_State *L);
1112
extern int ui_paint(lua_State *L);
1213

1314
extern int ui_set_timer(lua_State *L);
1415
extern int ui_kill_timer(lua_State *L);
16+
extern int ui_quit(lua_State *L);
1517

1618
extern int ui_helper_hsl2rgb(lua_State *L);
1719
extern int ui_helper_rgb2hsl(lua_State *L);

CCGameFramework/render/Direct2D.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ static void InitRenderer()
1414
SolidBackgroundElementRenderer::Register();
1515
GradientBackgroundElementRenderer::Register();
1616
SolidLabelElementRenderer::Register();
17+
RoundBorderElementRenderer::Register();
1718
QRImageElementRenderer::Register();
1819
}
1920

CCGameFramework/render/Direct2DRender.cpp

Lines changed: 83 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ void SolidBackgroundElementRenderer::Render(CRect bounds)
8888
auto rt = renderTarget.lock();
8989
if (e->flags.self_visible)
9090
{
91-
CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget();
91+
auto d2dRenderTarget = rt->GetDirect2DRenderTarget();
9292
d2dRenderTarget->FillRectangle(
9393
D2D1::RectF((FLOAT)bounds.left, (FLOAT)bounds.top, (FLOAT)bounds.right, (FLOAT)bounds.bottom),
9494
brush
@@ -100,7 +100,6 @@ void SolidBackgroundElementRenderer::Render(CRect bounds)
100100

101101
#pragma region GradientBackground
102102
GradientBackgroundElement::GradientBackgroundElement()
103-
: direction(Horizontal)
104103
{
105104

106105
}
@@ -223,7 +222,7 @@ void GradientBackgroundElementRenderer::Render(CRect bounds)
223222
brush->SetStartPoint(points[0]);
224223
brush->SetEndPoint(points[1]);
225224

226-
CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget();
225+
auto d2dRenderTarget = rt->GetDirect2DRenderTarget();
227226
d2dRenderTarget->FillRectangle(
228227
D2D1::RectF((FLOAT)bounds.left, (FLOAT)bounds.top, (FLOAT)bounds.right, (FLOAT)bounds.bottom),
229228
brush
@@ -235,11 +234,6 @@ void GradientBackgroundElementRenderer::Render(CRect bounds)
235234

236235
#pragma region SolidLabel
237236
SolidLabelElement::SolidLabelElement()
238-
: hAlignment(Alignment::StringAlignmentNear)
239-
, vAlignment(Alignment::StringAlignmentNear)
240-
, wrapLine(false)
241-
, multiline(false)
242-
, wrapLineHeightCalculation(false)
243237
{
244238
fontProperties.fontFamily = _T("Microsoft Yahei");
245239
fontProperties.size = 12;
@@ -396,7 +390,6 @@ void SolidLabelElement::SetWrapLineHeightCalculation(bool value)
396390
}
397391

398392
SolidLabelElementRenderer::SolidLabelElementRenderer()
399-
: oldMaxWidth(-1)
400393
{
401394

402395
}
@@ -443,7 +436,7 @@ void SolidLabelElementRenderer::Render(CRect bounds)
443436

444437
if (!e->GetMultiline() && !e->GetWrapLine())
445438
{
446-
CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget();
439+
auto d2dRenderTarget = rt->GetDirect2DRenderTarget();
447440
d2dRenderTarget->DrawTextLayout(
448441
D2D1::Point2F((FLOAT)x, (FLOAT)y),
449442
textLayout,
@@ -453,7 +446,7 @@ void SolidLabelElementRenderer::Render(CRect bounds)
453446
}
454447
else
455448
{
456-
CComPtr<IDWriteFactory> dwriteFactory = Direct2D::Singleton().GetDirectWriteFactory();
449+
auto dwriteFactory = Direct2D::Singleton().GetDirectWriteFactory();
457450
DWRITE_TRIMMING trimming;
458451
CComPtr<IDWriteInlineObject> inlineObject;
459452
textLayout->GetTrimming(&trimming, &inlineObject);
@@ -490,7 +483,7 @@ void SolidLabelElementRenderer::Render(CRect bounds)
490483
textLayout->SetMaxWidth((FLOAT)textBounds.Width());
491484
textLayout->SetMaxHeight((FLOAT)textBounds.Height());
492485

493-
CComPtr<ID2D1RenderTarget> d2dRenderTarget = rt->GetDirect2DRenderTarget();
486+
auto d2dRenderTarget = rt->GetDirect2DRenderTarget();
494487
d2dRenderTarget->DrawTextLayout(
495488
D2D1::Point2F((FLOAT)textBounds.left, (FLOAT)textBounds.top),
496489
textLayout,
@@ -684,4 +677,81 @@ void SolidLabelElementRenderer::FinalizeInternal()
684677
DestroyTextFormat(rt);
685678
}
686679

687-
#pragma endregion SolidLabel
680+
#pragma endregion SolidLabel
681+
682+
#pragma region RoundBorder
683+
684+
RoundBorderElement::RoundBorderElement()
685+
{
686+
687+
}
688+
689+
RoundBorderElement::~RoundBorderElement()
690+
{
691+
renderer->Finalize();
692+
}
693+
694+
CString RoundBorderElement::GetElementTypeName()
695+
{
696+
return _T("RoundBorder");
697+
}
698+
699+
cint RoundBorderElement::GetTypeId()
700+
{
701+
return RoundBorder;
702+
}
703+
704+
CColor RoundBorderElement::GetColor()
705+
{
706+
return color;
707+
}
708+
709+
void RoundBorderElement::SetColor(CColor value)
710+
{
711+
if (color != value)
712+
{
713+
color = value;
714+
if (renderer)
715+
{
716+
renderer->OnElementStateChanged();
717+
}
718+
}
719+
}
720+
721+
FLOAT RoundBorderElement::GetRadius()
722+
{
723+
return radius;
724+
}
725+
726+
void RoundBorderElement::SetRadius(FLOAT value)
727+
{
728+
if (radius != value)
729+
{
730+
radius = value;
731+
if (renderer)
732+
{
733+
renderer->OnElementStateChanged();
734+
}
735+
}
736+
}
737+
738+
void RoundBorderElementRenderer::Render(CRect bounds)
739+
{
740+
auto e = element.lock();
741+
auto rt = renderTarget.lock();
742+
if (e->flags.self_visible)
743+
{
744+
auto d2dRenderTarget = rt->GetDirect2DRenderTarget();
745+
d2dRenderTarget->FillRoundedRectangle(
746+
D2D1::RoundedRect(
747+
D2D1::RectF((FLOAT)bounds.left, (FLOAT)bounds.top, (FLOAT)bounds.right, (FLOAT)bounds.bottom),
748+
e->GetRadius(),
749+
e->GetRadius()
750+
),
751+
brush
752+
);
753+
}
754+
GraphicsRenderer::Render(bounds);
755+
}
756+
757+
#pragma endregion RoundBorder

0 commit comments

Comments
 (0)