/** ******************************************************************************* * @file ewolWindows.cpp * @brief ewol window system (sources) * @author Edouard DUPIN * @date 20/10/2011 * @par Project * ewol * * @par Copyright * Copyright 2011 Edouard DUPIN, all right reserved * * This software is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY. * * Licence summary : * You can modify and redistribute the sources code and binaries. * You can send me the bug-fix * * Term of the licence in in the file licence.txt. * ******************************************************************************* */ #include #include #include #include #include #include #include #include #if __PLATFORM__ == X11 #include "guiX11.h" #elif __PLATFORM__ == DoubleBuffer #include "guiDoubleBuffer.h" #elif __PLATFORM__ == Android #include "guiAndroid.h" #elif __PLATFORM__ == AndroidTablet #include "guiAndroidTablet.h" #elif __PLATFORM__ == IPhone #include "guiIPhone.h" #elif __PLATFORM__ == IPad #include "guiIPad.h" #else #error you need to specify a platform ... #endif #include #undef __class__ #define __class__ "ewol::Windows" //list of local events : const char * ewolEventWindowsClose = "ewol Windows close"; const char * ewolEventWindowsMinimize = "ewol Windows minimize"; const char * ewolEventWindowsExpend = "ewol Windows expend/unExpend"; ewol::Windows::Windows(void) { ewol::OObject2DColored * myOObject = new ewol::OObject2DColored(); myOObject->Rectangle( 0, 0, 20, 20, 1.0, 0.0, 0.0, 1.0); // Close myOObject->Rectangle(20, 0, 20, 20, 0.0, 1.0, 0.0, 1.0); // Reduce myOObject->Rectangle(40, 0, 20, 20, 0.0, 0.0, 1.0, 1.0); // Expend - Un-expend AddEventArea({ 0.0,0.0}, {20, 20}, FLAG_EVENT_INPUT_1 | FLAG_EVENT_INPUT_CLICKED_ALL, ewolEventWindowsClose); AddEventArea({20.0,0.0}, {20, 20}, FLAG_EVENT_INPUT_1 | FLAG_EVENT_INPUT_CLICKED_ALL, ewolEventWindowsMinimize); AddEventArea({40.0,0.0}, {20, 20}, FLAG_EVENT_INPUT_1 | FLAG_EVENT_INPUT_CLICKED_ALL, ewolEventWindowsExpend); AddOObject(myOObject, "leftBoutton"); color_ts textColorFg; textColorFg.red = .0; textColorFg.green = .0; textColorFg.blue = .0; textColorFg.alpha = 1.0; ewol::OObject2DText * myOObjectText = new ewol::OObject2DText(62, 2, "Monospace", 17 , FONT_MODE_BOLD, textColorFg, "My Title ..."); AddOObject(myOObjectText, "Title"); } bool ewol::Windows::CalculateSize(double availlableX, double availlableY) { m_size.x = availlableX; m_size.y = availlableY; return true; } bool ewol::Windows::OnEventInput(int32_t IdInput, eventInputType_te typeEvent, double x, double y) { if( x >= 60 && y <=20) { static int32_t test=0; static int32_t lastX=x; static int32_t lastY=x; if( 1 == IdInput && EVENT_INPUT_TYPE_DOWN == typeEvent) { test = 1; lastX=x; lastY=y; EWOL_DEBUG("EVENT DOWN ... "); } else if( 1 == IdInput && EVENT_INPUT_TYPE_UP == typeEvent) { test = 0; EWOL_DEBUG("EVENT UP ... "); } else if(EVENT_INPUT_TYPE_MOVE == typeEvent) { EWOL_DEBUG("EVENT MOVE ... "); if (test==1) { EWOL_DEBUG("change POS ... "); guiAbstraction::ChangePos(m_origin.x + (x - lastX), m_origin.y + (y - lastY)); lastX=x; lastY=y; } } } return true; } #include #include #include #include #if defined(EWOL_X11_MODE__XF86V) # include #elif defined(EWOL_X11_MODE__XRENDER) # include #endif void ewol::Windows::SysDraw(void) { //EWOL_DEBUG("Drow on (" << m_size.x << "," << m_size.y << ")"); // set the size of the open GL system glViewport(0,0,m_size.x,m_size.y); // Clear the screen with transparency ... glClearColor(0.750, 0.750, 0.750, 0.5); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0., m_size.x, 0., -m_size.y, 1., 20.); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0, -m_size.y, -5); //http://www.khronos.org/opengles/documentation/opengles1_0/html/glBlendFunc.html glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA); //glBlendFunc(GL_SRC_ALPHA, GL_SRC_COLOR); GenDraw(); glDisable(GL_BLEND); return; } bool ewol::Windows::OnEventArea(const char * generateEventId, double x, double y) { bool eventIsOK = false; //EWOL_DEBUG("Receive event : \"" << generateEventId << "\""); if(ewolEventWindowsClose == generateEventId) { EWOL_INFO("Request close of the windows"); ewol::Stop(); eventIsOK = true; } else if(ewolEventWindowsMinimize == generateEventId) { EWOL_INFO("Request Minimize of the windows"); eventIsOK = true; } else if(ewolEventWindowsExpend == generateEventId) { EWOL_INFO("Request Expend of the windows"); eventIsOK = true; } return eventIsOK; }