/* glselectrectangle.hpp: Handles creating hardware accelerated rectangles on the screen using X11 and OpenGL.
*
* Copyright (C) 2014: Dalton Nell, Slop Contributors (https://github.com/naelstrof/slop/graphs/contributors).
*
* This file is part of Slop.
*
* Slop is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Slop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Slop. If not, see .
*/
#ifndef IS_GL_SELECT_RECTANGLE_H_
#define IS_GL_SELECT_RECTANGLE_H_
#include "x.hpp"
#include "selectrectangle.hpp"
#include "resource.hpp"
#include "framebuffer.hpp"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace slop {
class GLSelectRectangle: public SelectRectangle {
public:
GLSelectRectangle( int sx, int sy, int ex, int ey, int border, bool highlight, float r, float g, float b, float a );
~GLSelectRectangle();
void setGeo( int x, int y, int w, int h );
void update( double dt );
void generateMagnifyingGlass();
void setMagnifySettings( bool on, float magstrength, unsigned int pixels );
void pushIn( int* x, int* y, int w, int h, int rx, int ry, int rw, int rh );
void pushOut( int* x, int* y, int w, int h, int rx, int ry, int rw, int rh );
void findOptimalGlassPosition();
void constrainWithinMonitor( int* x, int* y, int* w, int* h );
void setTheme( bool on, std::string name );
void setShader( std::string name );
float m_r;
float m_g;
float m_b;
float m_a;
GLXFBConfig m_fbconfig;
XVisualInfo* m_visual;
XRenderPictFormat* m_pictFormat;
GLXContext m_renderContext;
GLXWindow m_glxWindow;
Colormap m_cmap;
bool m_themed;
unsigned int m_texid;
unsigned int m_cornerids[4];
unsigned int m_straightid;
int m_straightwidth;
int m_straightheight;
int m_offsetx;
int m_offsety;
int m_offsetw;
int m_offseth;
unsigned int m_desktop;
unsigned int m_glassPixels;
float m_glassSize;
int m_glassBorder;
float m_realglassx;
float m_realglassy;
int m_glassx;
int m_glassy;
bool m_glassEnabled;
double m_time;
std::string m_shader;
std::vector m_monitors;
slop::Framebuffer* m_framebuffer;
private:
unsigned int loadImage( unsigned int* texture, std::string path );
};
}
#endif // IS_GL_SELECT_RECTANGLE_H_