OpenCV zGUI
CrossPlatform C++ GUI libarary based on OpenCV
z::Widget Class Reference

base class for all widgets More...

#include <zgui.h>

Inheritance diagram for z::Widget:
Collaboration diagram for z::Widget:

Public Member Functions

 Widget (cv::Rect_< int > r)
 
Widgetoperator= (const Widget &r)
 
bool focus () const
 
virtual void focus (bool)
 
virtual void event_callback (int event, int x, int y)
 
virtual void show ()
 
virtual std::string type () const
 
void resize (cv::Rect2i r)
 
void update ()
 
virtual void on_register ()
 will be called when widget is added to a window
 
virtual bool is_window () const
 
int zIndex ()
 
void zIndex (int v)
 
void hidden (bool v)
 
void activated (bool v)
 
bool hidden () const
 
bool activated () const
 
void hide ()
 
float alpha () const
 
void alpha (float f)
 
void shade_rect (cv::Rect2i r, int shade=3, cv::Vec3b color=widget_color_, cv::Vec3b upper_left=highlight_color_, cv::Vec3b lower_right=click_color_)
 

Public Attributes

std::map< int, std::function< void(int, int)> > gui_callback_
 map<int : event, function(x, y)>. library will draw change in widget graphics after gui_callback
 
std::map< int, std::function< void(int, int)> > user_callback_
 
cv::Mat3b mat_
 Matrix that contains widget shape.
 
Windowparent_ = nullptr
 pointer to parent window that is containing this widget
 

Protected Attributes

float alpha_ = 1
 alpha value of widget. Widgets can be overlapped. Alpha value will be calculated in such cases.
 
bool hidden_ = false
 if hidden, a widget will not show on window, but still can react to event.
 
bool activated_ = true
 deactivated widget cannot get focus so that it cannot react to events.
 
bool focus_ = false
 
int zIndex_ = 0
 higher zIndex widget will be in front of lower zIndex widget.
 

Static Protected Attributes

static const cv::Vec3b background_color_ = {200, 200, 200}
 
static const cv::Vec3b widget_color_ = {220, 220, 220}
 
static const cv::Vec3b highlight_color_ = {240, 240, 240}
 
static const cv::Vec3b click_color_ = {180, 180, 180}
 
static cv::Ptr< cv::freetype::FreeType2 > ft2_
 freetype2 font. CJK font needed
 

Detailed Description

base class for all widgets

Constructor & Destructor Documentation

◆ Widget()

z::Widget::Widget ( cv::Rect_< int >  r)

widget will be visible with the size and position of rectangle r

Member Function Documentation

◆ focus() [1/2]

bool z::Widget::focus ( ) const

check if widget is currently focused or not. Focused widget wil get the keyboard input.

◆ focus() [2/2]

void z::Widget::focus ( bool  tf)
virtual

set focus

Reimplemented in z::Window.

◆ operator=()

z::Widget & z::Widget::operator= ( const Widget r)

copy rectangle property of widget r

◆ resize()

void z::Widget::resize ( cv::Rect2i  r)

resize mat_ and rectangle of this widget

◆ update()

void z::Widget::update ( )

copy this widget's current graphical state to parent window and show it.

Member Data Documentation

◆ focus_

bool z::Widget::focus_ = false
protected

Only one widget can be focused except window widget.
Window widget sholud be first focused to get its child widgets to be focused. If there is no focused child widget, window widget's event callback will be called, if it is defined

◆ user_callback_

std::map<int, std::function<void(int, int)> > z::Widget::user_callback_

map<int : event, function( x, y)>. library will assume user_callback is not related to graphical change. So it will not draw any change in widget graphics after user_callback is called. If you changed widget graphics during user_callback you have to manually change graphics inside the callback. call update().


The documentation for this class was generated from the following files: