gtkcontext.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 1,071 行 · 第 1/3 页
CPP
1,071 行
gdkGC_, TRUE, &xPts[ 0 ], xPts.size() ); } else { gdk_draw_lines( drawable_, gdkGC_, &xPts[ 0 ], xPts.size() ); } }}void GTKContext::curve( const double & x1, const double & y1, const double & x2, const double & y2, const double & x3, const double & y3, const double & x4, const double & y4 ){ // int degree = 3; //3rd degree bezier poly - needs 4 controls // Mgc::Vector2* bezPts = new Mgc::Vector2[ 4 ]; // bezPts[ 0 ][ 0 ] = long( x1 + origin_.x_ ); // bezPts[ 0 ][ 1 ] = long( y1 + origin_.y_ ); // bezPts[ 1 ][ 0 ] = long( x2 + origin_.x_ ); // bezPts[ 1 ][ 1 ] = long( y2 + origin_.y_ ); // bezPts[ 2 ][ 0 ] = long( x3 + origin_.x_ ); // bezPts[ 2 ][ 1 ] = long( y3 + origin_.y_ ); // bezPts[ 3 ][ 0 ] = long( x4 + origin_.x_ ); // bezPts[ 3 ][ 1 ] = long( y4 + origin_.y_ ); // // Mgc::BezierCurve2 bezCurve( degree, bezPts ); // // //get the length over the duration of the curve from // //t= 0.0 to t=1.0 // double length = bezCurve.GetLength( 0.0, 0.1250 ); // double max = bezCurve.GetMaxTime(); // double min = bezCurve.GetMinTime(); // double dt = ( max - min ) / length; // // std::vector<GdkPoint> xPts; // for ( double t = min ; t < max; t += dt ) { // Mgc::Vector2 vec = bezCurve.GetPosition( t ); // GdkPoint pt; // pt.x = gint( vec[ 0 ] ); // pt.y = gint( vec[ 1 ] ); // xPts.push_back( pt ); // } // // if ( !xPts.empty() ) { // if ( inFillPath_ ) { // gdk_draw_polygon( drawable_, gdkGC_, TRUE, &xPts[ 0 ], xPts.size() ); // } else { // gdk_draw_lines( drawable_, gdkGC_, &xPts[ 0 ], xPts.size() ); // } // }}void GTKContext::lineTo( const double & x, const double & y ){ gdk_draw_line( drawable_, gdkGC_, int( currentMoveTo_.x_ + origin_.x_ ), int( currentMoveTo_.y_ + origin_.y_ ), int( x + origin_.x_ ), int( y + origin_.y_ ) ); currentMoveTo_.x_ = x; currentMoveTo_.y_ = y;}void GTKContext::moveTo( const double & x, const double & y ){ currentMoveTo_.x_ = x; currentMoveTo_.y_ = y;}void GTKContext::setOrigin( const double& x, const double& y ){ origin_.x_ = x; origin_.y_ = y;}Point GTKContext::getOrigin(){ return origin_;}void GTKContext::copyContext( const Rect& sourceRect, const Rect& destRect, ContextPeer* sourceContext ){ if ( sourceContext ) { this->checkHandle(); gdk_draw_drawable( drawable_, gdkGC_, reinterpret_cast<GdkDrawable*>( sourceContext->getContextID() ), gint( sourceRect.left_ ), gint( sourceRect.top_ ), gint( destRect.left_ + origin_.x_ ), gint( destRect.top_ + origin_.y_ ), gint( destRect.getWidth() ), gint( destRect.getHeight() ) ); releaseHandle(); }}bool GTKContext::isMemoryContext(){ return isMemoryCtx_;}void GTKContext::checkHandle(){ if ( parentImage_ ) { parentImage_->updatePixmapFromImageBits(); }}void GTKContext::releaseHandle(){ if ( parentImage_ ) { parentImage_->updateImageBitsFromPixmap(); }}bool GTKContext::isXORModeOn(){ return isXORModeOn_;}void GTKContext::setXORModeOn( const bool& XORModeOn ){ isXORModeOn_ = XORModeOn;}void GTKContext::setTextAlignment( const bool& alignTobaseline ){ alignToBaseline_ = alignTobaseline;}bool GTKContext::isTextAlignedToBaseline(){ return alignToBaseline_;}GtkStyle* GTKContext::getGTKStyle( GtkWidget* widget ){ if ( widget and GTK_IS_WIDGET( widget ) ) { return widget->style; } else { GTKGraphicsToolkit* toolkit = static_cast<GTKGraphicsToolkit*>( GraphicsToolkit::internal_getDefaultGraphicsToolkit() ); return toolkit->getDefaultGTKStyle(); }}GtkStateType GTKContext::getGTKState( GtkWidget* widget ){ GtkStateType result = GTK_STATE_NORMAL; if ( widget and GTK_IS_WIDGET( widget ) ) { result = GtkStateType( GTK_WIDGET_STATE( widget ) ); } return result;}// void GTKContext::drawSelectionRect( Rect* rect )// {// GdkRectangle r = { gint( rect->left_ ),// gint( rect->top_ ),// gint( rect->getWidth() ),// gint( rect->getHeight() ) };//// GtkWidget* widget = 0;// gdk_window_get_user_data( drawable_, &widget );// GtkStyle* style = getGTKStyle( widget );//// gtk_paint_focus( style,// drawable_,// getGTKState( widget ),// &r,// widget,// 0,// r.x,// r.y,// r.width,// r.height );// }// void GTKContext::drawButtonRect( Rect* rect, const bool& isPressed )// {// GdkRectangle r = { gint( rect->left_ ),// gint( rect->top_ ),// gint( rect->getWidth() ),// gint( rect->getHeight() ) };//// GtkWidget * widget = 0;// gdk_window_get_user_data( drawable_, &widget );// GtkStyle* style = getGTKStyle( widget );//// gtk_paint_box( style, drawable_,// getGTKState( widget ),// ( isPressed ) ? GTK_SHADOW_IN : GTK_SHADOW_OUT,// &r,// widget,// "button",// r.x,// r.y,// r.width,// r.height );//// }// void GTKContext::drawCheckboxRect( Rect* rect, const bool& isPressed )// {// GdkRectangle r = { gint( rect->left_ ),// gint( rect->top_ ),// gint( rect->getWidth() ),// gint( rect->getHeight() ) };//// GtkWidget* widget = 0;// gdk_window_get_user_data( drawable_, &widget );// GtkStyle* style = getGTKStyle( widget );//// gtk_paint_check( style, drawable_,// getGTKState( widget ),// ( isPressed ) ? GTK_SHADOW_IN : GTK_SHADOW_OUT,// &r,// widget,// "button",// r.x,// r.y,// r.width,// r.height );// }void GTKContext::drawThemeRadioButtonRect( Rect* rect, ButtonState& state ){ GdkRectangle r = { gint( rect->left_ ), gint( rect->top_ ), gint( rect->getWidth() ), gint( rect->getHeight() ) }; gpointer widgetPtr = 0; gdk_window_get_user_data( drawable_, &widgetPtr ); GtkWidget* widget = reinterpret_cast<GtkWidget*>( &widgetPtr ); GtkStyle* style = getGTKStyle( widget ); gtk_paint_option( style, drawable_, getGTKState( widget ), ( state.isPressed() ) ? GTK_SHADOW_IN : GTK_SHADOW_OUT, &r, widget, "button", r.x, r.y, r.width, r.height );}void GTKContext::drawThemeProgress( Rect* rect, ProgressState& state ){}// void GTKContext::drawVerticalScrollButtonRect( Rect* rect,// const bool& topButton,// const bool& isPressed )// {}// void GTKContext::drawDisclosureButton( Rect* rect, const long& state )// {}// void GTKContext::drawHorizontalScrollButtonRect( Rect* rect,// const bool& leftButton,// const bool& isPressed )// {}// void GTKContext::drawTab( Rect* rect, const bool& selected, const String& caption )// {}// void GTKContext::drawTabPage( Rect* rect )// {}// void GTKContext::drawTickMarks( Rect* rect, const SliderInfo& sliderInfo )// {}// void GTKContext::drawSliderThumb( Rect* rect, const SliderInfo& sliderInfo )// {}// void GTKContext::drawSlider( Rect* rect, const SliderInfo& sliderInfo )// {}// void GTKContext::drawHeader( Rect* rect )// {}// void GTKContext::drawEdge( Rect* rect, const long& edgeSides, const long& edgeStyle )// {// GdkRectangle r = { gint( rect->left_ ),// gint( rect->top_ ),// gint( rect->getWidth() ),// gint( rect->getHeight() ) };//// GtkWidget* widget = 0;// gdk_window_get_user_data( drawable_, &widget );// GtkStyle* style = getGTKStyle( widget );//// GtkShadowType shadow = GTK_SHADOW_NONE;//// switch ( edgeStyle ) {// case GraphicsContext::etRecessed : {// shadow = GTK_SHADOW_IN;// }// break;//// case GraphicsContext::etEtched : {// shadow = GTK_SHADOW_ETCHED_IN;// }// break;//// case GraphicsContext::etRaised : {// shadow = GTK_SHADOW_ETCHED_OUT;// }// break;//// case GraphicsContext::etSunken : {// shadow = GTK_SHADOW_OUT;// }// break;// }//// if ( GTK_SHADOW_NONE == shadow ) {// return ;// }//// if ( edgeSides & GraphicsContext::etLeftSide// and edgeSides & GraphicsContext::etRightSide// and edgeSides & GraphicsContext::etTopSide// and edgeSides & GraphicsContext::etBottomSide ) {//// gtk_paint_box( style, drawable_,// getGTKState( widget ),// shadow,// &r,// widget,// "button",// r.x,// r.y,// r.width,// r.height );// } else {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?