display of the special font work....

This commit is contained in:
2012-09-07 16:31:49 +02:00
parent 3bdc96097c
commit dab060c4fe
8 changed files with 297 additions and 98 deletions

View File

@@ -41,8 +41,7 @@
#undef __class__
#define __class__ "CodeView"
CodeView::CodeView(void)
void CodeView::Init(void)
{
m_label = "CodeView is disable ...";
@@ -70,6 +69,19 @@ CodeView::CodeView(void)
SetLimitScrolling(0.2);
}
#ifdef __VIDEO__OPENGL_ES_2
CodeView::CodeView(etk::UString fontName, int32_t fontSize) :
m_OObjectText(fontName, fontSize)
{
Init();
}
#endif
CodeView::CodeView(void)
{
Init();
}
CodeView::~CodeView(void)
{
@@ -106,7 +118,11 @@ bool CodeView::CalculateMinSize(void)
void CodeView::CalculateMaxSize(void)
{
m_maxSize.x = 2048;
int32_t letterHeight = m_OObjectTextNormal.GetHeight();
#ifdef __VIDEO__OPENGL_ES_2
int32_t letterHeight = m_OObjectText.GetHeight();
#else
int32_t letterHeight = m_OObjectTextNormal.GetHeight();
#endif
m_maxSize.y = BufferManager::Get(m_bufferID)->GetNumberOfLine() * letterHeight;
}
@@ -114,10 +130,14 @@ void CodeView::CalculateMaxSize(void)
void CodeView::OnDraw(ewol::DrawProperty& displayProp)
{
m_OObjectsColored.Draw();
m_OObjectTextNormal.Draw();
m_OObjectTextBold.Draw();
m_OObjectTextItalic.Draw();
m_OObjectTextBoldItalic.Draw();
#ifdef __VIDEO__OPENGL_ES_2
m_OObjectText.Draw();
#else
m_OObjectTextNormal.Draw();
m_OObjectTextBold.Draw();
m_OObjectTextItalic.Draw();
m_OObjectTextBoldItalic.Draw();
#endif
WidgetScrooled::OnDraw(displayProp);
}
@@ -129,10 +149,14 @@ void CodeView::OnRegenerateDisplay(void)
// For the scrooling windows
CalculateMaxSize();
m_OObjectTextNormal.Clear();
m_OObjectTextBold.Clear();
m_OObjectTextItalic.Clear();
m_OObjectTextBoldItalic.Clear();
#ifdef __VIDEO__OPENGL_ES_2
m_OObjectText.Clear();
#else
m_OObjectTextNormal.Clear();
m_OObjectTextBold.Clear();
m_OObjectTextItalic.Clear();
m_OObjectTextBoldItalic.Clear();
#endif
m_OObjectsColored.Clear();
@@ -145,12 +169,18 @@ void CodeView::OnRegenerateDisplay(void)
} // else : nothing to do ...
// generate the objects :
BufferManager::Get(m_bufferID)->Display(m_OObjectTextNormal,
m_OObjectTextBold,
m_OObjectTextItalic,
m_OObjectTextBoldItalic,
m_OObjectsColored,
m_originScrooled.x, m_originScrooled.y, m_size.x, m_size.y);
#ifdef __VIDEO__OPENGL_ES_2
BufferManager::Get(m_bufferID)->Display(m_OObjectText,
m_OObjectsColored,
m_originScrooled.x, m_originScrooled.y, m_size.x, m_size.y);
#else
BufferManager::Get(m_bufferID)->Display(m_OObjectTextNormal,
m_OObjectTextBold,
m_OObjectTextItalic,
m_OObjectTextBoldItalic,
m_OObjectsColored,
m_originScrooled.x, m_originScrooled.y, m_size.x, m_size.y);
#endif
// set the current size of the windows
SetMaxSize(BufferManager::Get(m_bufferID)->GetMaxSize());
@@ -405,29 +435,41 @@ void CodeView::OnLostFocus(void)
void CodeView::SetFontSize(int32_t size)
{
m_OObjectTextNormal.SetSize(size);
m_OObjectTextBold.SetSize(size);
m_OObjectTextItalic.SetSize(size);
m_OObjectTextBoldItalic.SetSize(size);
#ifdef __VIDEO__OPENGL_ES_2
m_OObjectText.SetSize(size);
#else
m_OObjectTextNormal.SetSize(size);
m_OObjectTextBold.SetSize(size);
m_OObjectTextItalic.SetSize(size);
m_OObjectTextBoldItalic.SetSize(size);
#endif
SetScrollingSize(size*3.0*1.46); // 1.46 is a magic nmber ...
}
void CodeView::SetFontNameNormal(etk::UString fontName)
{
m_OObjectTextNormal.SetFont(fontName);
}
#ifdef __VIDEO__OPENGL_ES_2
void CodeView::SetFontName(etk::UString fontName)
{
m_OObjectText.SetFont(fontName);
}
void CodeView::SetFontNameBold(etk::UString fontName)
{
m_OObjectTextBold.SetFont(fontName);
}
void CodeView::SetFontNameItalic(etk::UString fontName)
{
m_OObjectTextItalic.SetFont(fontName);
}
void CodeView::SetFontNameBoldItalic(etk::UString fontName)
{
m_OObjectTextBoldItalic.SetFont(fontName);
}
#else
void CodeView::SetFontNameNormal(etk::UString fontName)
{
m_OObjectTextNormal.SetFont(fontName);
}
void CodeView::SetFontNameBold(etk::UString fontName)
{
m_OObjectTextBold.SetFont(fontName);
}
void CodeView::SetFontNameItalic(etk::UString fontName)
{
m_OObjectTextItalic.SetFont(fontName);
}
void CodeView::SetFontNameBoldItalic(etk::UString fontName)
{
m_OObjectTextBoldItalic.SetFont(fontName);
}
#endif

View File

@@ -38,7 +38,11 @@
class CodeView :public ewol::WidgetScrooled
{
public:
CodeView(void);
void Init(void);
#ifdef __VIDEO__OPENGL_ES_2
CodeView(etk::UString fontName, int32_t fontSize);
#endif
CodeView(void);
virtual ~CodeView(void);
/**
* @brief Get the current Object type of the EObject
@@ -57,10 +61,14 @@ class CodeView :public ewol::WidgetScrooled
etk::Vector<Vector2D<float> > m_lineNumberList;
void UpdateNumberOfLineReference(int32_t bufferID);
// drawing elements :
ewol::TEXT_DISPLAY_TYPE m_OObjectTextNormal;
ewol::TEXT_DISPLAY_TYPE m_OObjectTextBold;
ewol::TEXT_DISPLAY_TYPE m_OObjectTextItalic;
ewol::TEXT_DISPLAY_TYPE m_OObjectTextBoldItalic;
#ifdef __VIDEO__OPENGL_ES_2
ewol::TEXT_DISPLAY_TYPE m_OObjectText;
#else
ewol::TEXT_DISPLAY_TYPE m_OObjectTextNormal;
ewol::TEXT_DISPLAY_TYPE m_OObjectTextBold;
ewol::TEXT_DISPLAY_TYPE m_OObjectTextItalic;
ewol::TEXT_DISPLAY_TYPE m_OObjectTextBoldItalic;
#endif
ewol::OObject2DColored m_OObjectsColored;
public:
@@ -98,10 +106,14 @@ class CodeView :public ewol::WidgetScrooled
virtual void OnLostFocus(void);
public:
void SetFontSize(int32_t size);
void SetFontNameNormal(etk::UString fontName);
void SetFontNameBold(etk::UString fontName);
void SetFontNameItalic(etk::UString fontName);
void SetFontNameBoldItalic(etk::UString fontName);
#ifdef __VIDEO__OPENGL_ES_2
void SetFontName(etk::UString fontName);
#else
void SetFontNameNormal(etk::UString fontName);
void SetFontNameBold(etk::UString fontName);
void SetFontNameItalic(etk::UString fontName);
void SetFontNameBoldItalic(etk::UString fontName);
#endif
private:
void CalculateMaxSize(void);
protected:

View File

@@ -40,6 +40,7 @@
#include <ewol/widget/ContextMenu.h>
#include <ewol/widget/PopUp.h>
#include <ewol/widget/Spacer.h>
#include <ewol/widget/Slider.h>
#include <ewol/widget/Menu.h>
#include <ewol/widget/meta/FileChooser.h>
#include <ewol/widget/meta/Parameter.h>
@@ -112,6 +113,16 @@ class ParameterAboutGui : public ewol::SizerVert
};
const char * l_smoothChick = "tmpEvent_smooth";
const char * l_smoothMin = "tmpEvent_minChange";
const char * l_smoothMax = "tmpEvent_maxChange";
extern float DF_SoftEdge_min;
extern float DF_SoftEdge_max;
extern int32_t DF_SoftEdge;
ewol::Slider* tmpSliderMin = NULL;
ewol::Slider* tmpSliderMax = NULL;
#undef __class__
#define __class__ "MainWindows"
@@ -143,21 +154,53 @@ MainWindows::MainWindows(void)
mySizerHori->SubWidgetAdd(mySizerVert2);
// main buffer Area :
myCodeView = new CodeView();
#ifdef __VIDEO__OPENGL_ES_2
myCodeView = new CodeView("Font/freefont/FreeMono.ttf", 24);
#else
myCodeView = new CodeView();
#endif
myCodeView->SetExpendX(true);
myCodeView->SetExpendY(true);
myCodeView->SetFillX(true);
myCodeView->SetFillY(true);
myCodeView->SetFontSize(48);
myCodeView->SetFontNameNormal( "Font/freefont/FreeMono.ttf");
myCodeView->SetFontNameBold( "Font/freefont/FreeMonoBold.ttf");
myCodeView->SetFontNameItalic( "Font/freefont/FreeMonoOblique.ttf");
myCodeView->SetFontNameBoldItalic("Font/freefont/FreeMonoBoldOblique.ttf");
#ifndef __VIDEO__OPENGL_ES_2
myCodeView->SetFontSize(11);
myCodeView->SetFontNameNormal( "Font/freefont/FreeMono.ttf");
myCodeView->SetFontNameBold( "Font/freefont/FreeMonoBold.ttf");
myCodeView->SetFontNameItalic( "Font/freefont/FreeMonoOblique.ttf");
myCodeView->SetFontNameBoldItalic("Font/freefont/FreeMonoBoldOblique.ttf");
#endif
mySizerVert2->SubWidgetAdd(myCodeView);
// search area :
Search * mySearch = new Search();
mySizerVert2->SubWidgetAdd(mySearch);
{
ewol::SizerHori * mySizerHori2 = new ewol::SizerHori();
mySizerVert2->SubWidgetAdd(mySizerHori2);
ewol::CheckBox* tmpCheck = new ewol::CheckBox("smooth");
mySizerHori2->SubWidgetAdd(tmpCheck);
tmpCheck->RegisterOnEvent(this, ewolEventCheckBoxClicked, l_smoothChick);
ewol::Slider* tmpSlider = new ewol::Slider();
mySizerHori2->SubWidgetAdd(tmpSlider);
tmpSlider->RegisterOnEvent(this, ewolEventSliderChange, l_smoothMin);
tmpSlider->SetExpendX(true);
tmpSlider->SetMin(0);
tmpSlider->SetMax(1000);
tmpSlider->SetValue(0450);
tmpSliderMin = tmpSlider;
tmpSlider = new ewol::Slider();
mySizerHori2->SubWidgetAdd(tmpSlider);
tmpSlider->RegisterOnEvent(this, ewolEventSliderChange, l_smoothMax);
tmpSlider->SetExpendX(true);
tmpSlider->SetMin(0);
tmpSlider->SetMax(1000);
tmpSlider->SetValue(0550);
tmpSliderMax = tmpSlider;
}
mySizerHori = new ewol::SizerHori();
mySizerVert->SubWidgetAdd(mySizerHori);
@@ -349,9 +392,30 @@ void MainWindows::OnReceiveMessage(ewol::EObject * CallerObject, const char * ev
tmpSubWidget = new ParameterAboutGui();
tmpWidget->MenuAdd("About", "", tmpSubWidget);
}
} else if (eventId == l_smoothChick) {
if (data == "true") {
DF_SoftEdge = 1;
} else {
DF_SoftEdge = 0;
}
} else if (eventId == l_smoothMin) {
int32_t newVal = 0;
sscanf(data.c_str(), "%d", &newVal);
DF_SoftEdge_min = (float)newVal / 1000.0;
if (DF_SoftEdge_min>DF_SoftEdge_max) {
DF_SoftEdge_max = DF_SoftEdge_min;
tmpSliderMax->SetValue(DF_SoftEdge_max*1000.0);
}
} else if (eventId == l_smoothMax) {
int32_t newVal = 0;
sscanf(data.c_str(), "%d", &newVal);
DF_SoftEdge_max = (float)newVal / 1000.0;
if (DF_SoftEdge_min>DF_SoftEdge_max) {
DF_SoftEdge_min = DF_SoftEdge_max;
tmpSliderMin->SetValue(DF_SoftEdge_min*1000.0);
}
}
return;
}