https://github.com/neuwcodebox/CodeAdapter
다른 라이브러리로부터 독립적인 코드를 짤 수 있도록 해주는 인터페이스 라이브러리.
https://github.com/neuwcodebox/CodeAdapter
audio c-plus-plus demo graphics gui library
Last synced: 8 months ago
JSON representation
다른 라이브러리로부터 독립적인 코드를 짤 수 있도록 해주는 인터페이스 라이브러리.
- Host: GitHub
- URL: https://github.com/neuwcodebox/CodeAdapter
- Owner: neuwcodebox
- License: mit
- Created: 2016-04-10T11:34:11.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-04-07T13:27:16.000Z (almost 9 years ago)
- Last Synced: 2025-06-21T05:06:49.453Z (8 months ago)
- Topics: audio, c-plus-plus, demo, graphics, gui, library
- Language: C++
- Size: 214 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Code Adapter
C++ GUI, 2D Graphics
다른 라이브러리의 인터페이스를 강제시켜서 로직 코드의 변경을 최대한 줄일 수 있게 해주는 라이브러리.
## Project List
* CodeAdapter : 강제시킨 인터페이스가 될 라이브러리.
* CodeAdapterSFML : SFML 라이브러리의 인터페이스를 강제시킨 예제.
* TestLab : 테스트 및 데모 프로젝트.
## Features
* 2D Graphics
* GUI
* Scene System
* Audio
## To Do / Doing
* [x] Add more GUI controls.
* [x] Upgrade demo project.
* [ ] Network
* [x] Audio
* [ ] System time and date
* [ ] File stream
## Demo

```c++
/*
* main.cpp
*/
#include
#include
#include "HelloScene.h"
int main()
{
initializeCA();
auto window = caFactory->createWindow();
window->create(caDraw::Size(1024, 768), caUtil::String("Hello, World!"), false);
window->setFramerate(60);
auto sceneManager = canew();
sceneManager->replaceScene(*window, canew());
window->setSceneManager(sceneManager);
while (window->isRunning())
{
caTouch->update();
caKeyboard->update(*window);
if (sceneManager->hasScene() == false
|| caKeyboard->isKeyDown(caSys::Keys::Escape))
{
window->exit();
}
window->update();
window->draw(caDraw::Color(230, 230, 230));
}
return 0;
}
```
```c++
/*
* HelloScene.h
*/
#ifndef __HELLO_SCENE_H__
#define __HELLO_SCENE_H__
#include "CodeAdapter\EasyCA.h"
class HelloScene : public caUtil::Scene
{
public:
HelloScene();
virtual ~HelloScene();
protected:
caDraw::PanelPtr m_panel;
caDraw::FontPtr m_font;
caDraw::FontPtr m_font2;
caDraw::FontPtr m_font3;
caDraw::TexturePtr m_texLogo;
caDraw::DrawableTexturePtr m_sprLogo;
caUI::LabelPtr m_logo;
caUI::LabelPtr m_logo2;
caUI::LabelPtr m_logo3;
caUI::ButtonPtr m_buttonNext;
caUI::VerticalScrollBarPtr m_scrollOpacity;
public:
virtual void onInitialize(caDraw::Window& owner) override;
virtual void onRelease() override;
virtual void onUpdate(caDraw::Window& owner) override;
virtual void onDrawBack(caDraw::Graphics& g) override;
virtual void onDrawFront(caDraw::Graphics& g) override;
};
#endif
```
```c++
/*
* HelloScene.cpp
*/
#include "HelloScene.h"
HelloScene::HelloScene()
{
}
HelloScene::~HelloScene()
{
}
//###########################################################################
void HelloScene::onInitialize(caDraw::Window& owner)
{
auto winSize = owner.getSize();
m_panel = caFactory->createPanel();
m_panel->transform.position = { 0, 0 };
m_panel->size = static_cast(winSize);
m_font = caFactory->createFont();
m_font->loadFromFile("NanumGothic.ttf");
m_font->setCharacterSize(64);
m_font->setStyle(caDraw::FontStyles::Bold);
m_font2 = caFactory->createFont();
m_font2->loadFromFile("NanumGothic.ttf");
m_font2->setCharacterSize(64);
m_font2->setStyle(caDraw::FontStyles::Bold | caDraw::FontStyles::Underline);
m_font3 = caFactory->createFont();
m_font3->loadFromFile("NanumGothic.ttf");
m_font3->setCharacterSize(64);
m_font3->setStyle(caDraw::FontStyles::StrikeOut | caDraw::FontStyles::Italic);
m_texLogo = caFactory->createTexture();
m_texLogo->loadFromFile("neurowhai.png");
m_sprLogo = canew();
m_sprLogo->setTexture(m_texLogo);
m_sprLogo->location.setLocation(static_cast(winSize.width / 2 - 555),
static_cast(winSize.height / 2 - 555));
m_logo = canew();
m_logo->setFont(m_font);
m_logo->setText(L"NeuroWhAI");
m_logo->setTextMargin({ 8, 0 });
m_logo->setBackColor(caDraw::Color::Transparent);
m_logo->setPosition({ 128, 164 });
m_logo->setSize({ 330, 128 });
m_logo2 = canew(*m_logo);
m_logo2->setFont(m_font2);
m_logo2->setPosition({ 128, 164 + 70 });
m_logo3 = canew(*m_logo);
m_logo3->setFont(m_font3);
m_logo3->setPosition({ 128, 164 + 70 * 2 });
m_buttonNext = canew();
m_buttonNext->setFont(m_font);
m_buttonNext->setText(L"Next page");
m_buttonNext->setBackColor(caDraw::Color::Gray);
m_buttonNext->setPosition({ static_cast(winSize.width / 2 - 165), 600 });
m_buttonNext->setSize({ 330, 100 });
m_buttonNext->WhenClick = [me = this](const caUI::EventArgs& args)
{
me->reserveNextScene(nullptr);
};
m_scrollOpacity = canew();
m_scrollOpacity->setPosition({ 0, 0 });
m_scrollOpacity->setSize({ 24.0f, static_cast(winSize.height) });
m_scrollOpacity->setMaxValue(255);
m_scrollOpacity->setValue(255);
m_scrollOpacity->setMinBarLength(64);
m_scrollOpacity->WhenValueChanged =
[&logo = m_sprLogo](const caUI::ValueFEventArgs& args)
{
logo->color.a = static_cast(args.value);
};
m_panel->addDrawable(m_sprLogo);
m_panel->addControl(m_logo);
m_panel->addControl(m_logo2);
m_panel->addControl(m_logo3);
m_panel->addControl(m_scrollOpacity);
addPanel(m_panel);
}
void HelloScene::onRelease()
{
}
void HelloScene::onUpdate(caDraw::Window& owner)
{
}
void HelloScene::onDrawBack(caDraw::Graphics& g)
{
}
void HelloScene::onDrawFront(caDraw::Graphics& g)
{
}
```