亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shapes.cpp

?? wxWidgets 2.8.9 Downloads
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/////////////////////////////////////////////////////////////////////////////// Name:        contrib/samples/ogl/studio/shapes.cpp// Purpose:     Implements Studio shapes// Author:      Julian Smart// Modified by:// Created:     12/07/98// RCS-ID:      $Id: shapes.cpp 37440 2006-02-10 11:59:52Z ABX $// Copyright:   (c) Julian Smart// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////// For compilers that support precompilation, includes "wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__#pragma hdrstop#endif#ifndef WX_PRECOMP#include "wx/wx.h"#endif#if !wxUSE_DOC_VIEW_ARCHITECTURE#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h!#endif#include "wx/ogl/ogl.h" // base header of OGL, includes and adjusts wx/deprecated/setup.h#include "studio.h"#include "doc.h"#include "shapes.h"#include "view.h"#include "cspalette.h"#include "dialogs.h"#define csSTANDARD_SHAPE_WIDTH      100IMPLEMENT_CLASS(csDiagram, wxDiagram)csDiagram::~csDiagram(){    DeleteAllShapes();}void csDiagram::Redraw(wxDC& dc){    wxDiagram::Redraw(dc);    // Draw line crossings    wxLineCrossings lineCrossings;    lineCrossings.FindCrossings(*this);    lineCrossings.DrawCrossings(*this, dc);}/* * csEvtHandler: an event handler class for all shapes */IMPLEMENT_DYNAMIC_CLASS(csEvtHandler, wxShapeEvtHandler)csEvtHandler::csEvtHandler(wxShapeEvtHandler *prev, wxShape *shape, const wxString& lab):  wxShapeEvtHandler(prev, shape){    m_label = lab;}csEvtHandler::~csEvtHandler(){}// Copy any event handler datavoid csEvtHandler::CopyData(wxShapeEvtHandler& copy){    wxShapeEvtHandler::CopyData(copy);    csEvtHandler& csCopy = (csEvtHandler&) copy;    csCopy.m_label = m_label;}void csEvtHandler::OnLeftClick(double WXUNUSED(x), double WXUNUSED(y), int keys, int WXUNUSED(attachment)){  wxClientDC dc(GetShape()->GetCanvas());  GetShape()->GetCanvas()->PrepareDC(dc);  csDiagramView* view = ((csCanvas*)GetShape()->GetCanvas())->GetView();  view->ReflectPointSize(GetShape()->GetFont()->GetPointSize());  if (GetShape()->IsKindOf(CLASSINFO(wxLineShape)))      view->ReflectArrowState((wxLineShape*) GetShape());  csEditorToolPalette *palette = wxGetApp().GetDiagramPalette();  if (palette->GetSelection() == PALETTE_TEXT_TOOL)  {        view->ReflectPointSize(GetShape()->GetFont()->GetPointSize());        EditProperties();#if 0        csLabelEditingDialog* dialog = new csLabelEditingDialog(GetShape()->GetCanvas()->GetParent());        dialog->SetShapeLabel(m_label);        if (dialog->ShowModal() == wxID_CANCEL)        {            dialog->Destroy();            return;        }        wxString newLabel = dialog->GetShapeLabel();        dialog->Destroy();        wxShape* newShape = GetShape()->CreateNewCopy();        csEvtHandler* handler = (csEvtHandler *)newShape->GetEventHandler();        handler->m_label = newLabel;        view->GetDocument()->GetCommandProcessor()->Submit(new csDiagramCommand("Edit label", (csDiagramDocument*) view->GetDocument(),            new csCommandState(ID_CS_EDIT_PROPERTIES, newShape, GetShape())));#endif        return;  }  if (keys == 0)  {    // If no shift key, then everything is deselected.    // If the shape was selected, deselect it and vice versa.    bool selected = GetShape()->Selected();    view->SelectAll(false);    selected = !selected;    GetShape()->Select(selected, &dc);    GetShape()->GetCanvas()->Redraw(dc); // Redraw because bits of objects will be missing    view->SelectShape(GetShape(), selected);  }  else if (keys & KEY_SHIFT)  {    if (GetShape()->Selected())    {        GetShape()->Select(false, &dc);        view->SelectShape(GetShape(), false);    }    else    {        GetShape()->Select(true, &dc);        view->SelectShape(GetShape(), true);    }    GetShape()->GetCanvas()->Redraw(dc); // Redraw because bits of objects will be missing  }  else if (keys & KEY_CTRL)  {    // Do something for CONTROL  }  else  {#if wxUSE_STATUSBAR    ((wxFrame*)wxGetApp().GetTopWindow())->SetStatusText(m_label);#endif // wxUSE_STATUSBAR  }}void csEvtHandler::OnRightClick(double x, double y, int WXUNUSED(keys), int WXUNUSED(attachment)){    // Have to convert back to physical coordinates from logical coordinates.    int viewStartX, viewStartY;    int unitX, unitY;    GetShape()->GetCanvas()->GetViewStart(& viewStartX, & viewStartY);    GetShape()->GetCanvas()->GetScrollPixelsPerUnit(& unitX, & unitY);    int x1 = (int)(x * GetShape()->GetCanvas()->GetScaleX());    int y1 = (int)(y * GetShape()->GetCanvas()->GetScaleY());    int menuX = (int) (x1 - (viewStartX * unitX)) ;    int menuY = (int) (y1 - (viewStartY * unitY));    wxGetApp().GetShapeEditMenu()->SetClientData((char*) GetShape());    wxGetApp().GetShapeEditMenu()->Enable(ID_CS_ROTATE_CLOCKWISE, !GetShape()->IsKindOf(CLASSINFO(wxLineShape)));    wxGetApp().GetShapeEditMenu()->Enable(ID_CS_ROTATE_ANTICLOCKWISE, !GetShape()->IsKindOf(CLASSINFO(wxLineShape)));    GetShape()->GetCanvas()->PopupMenu(wxGetApp().GetShapeEditMenu(), menuX, menuY);}/* * Implement connection of two shapes by right-dragging between them. */void csEvtHandler::OnBeginDragRight(double x, double y, int WXUNUSED(keys), int attachment){  wxClientDC dc(GetShape()->GetCanvas());  GetShape()->GetCanvas()->PrepareDC(dc);  wxPen dottedPen(*wxBLACK, 1, wxDOT);  dc.SetLogicalFunction(OGLRBLF);  dc.SetPen(dottedPen);  double xp, yp;  GetShape()->GetAttachmentPositionEdge(attachment, &xp, &yp);  dc.DrawLine((wxCoord)xp, (wxCoord)yp, (wxCoord)x, (wxCoord)y);  GetShape()->GetCanvas()->CaptureMouse();}void csEvtHandler::OnDragRight(bool WXUNUSED(draw), double x, double y, int WXUNUSED(keys), int attachment){  wxClientDC dc(GetShape()->GetCanvas());  GetShape()->GetCanvas()->PrepareDC(dc);  wxPen dottedPen(*wxBLACK, 1, wxDOT);  dc.SetLogicalFunction(OGLRBLF);  dc.SetPen(dottedPen);  double xp, yp;  GetShape()->GetAttachmentPositionEdge(attachment, &xp, &yp);  dc.DrawLine((wxCoord)xp, (wxCoord)yp, (wxCoord)x, (wxCoord)y);}void csEvtHandler::OnEndDragRight(double x, double y, int WXUNUSED(keys), int attachment){  GetShape()->GetCanvas()->ReleaseMouse();  csCanvas *canvas = (csCanvas *)GetShape()->GetCanvas();  // Check if we're on an object  int new_attachment;  wxShape *otherShape = canvas->FindFirstSensitiveShape(x, y, &new_attachment, OP_DRAG_RIGHT);  if (otherShape && !otherShape->IsKindOf(CLASSINFO(wxLineShape)))  {        wxLineShape* theShape = new csLineShape;        theShape->AssignNewIds();        theShape->SetEventHandler(new csEvtHandler(theShape, theShape, wxEmptyString));        theShape->SetPen(wxBLACK_PEN);        theShape->SetBrush(wxRED_BRUSH);        wxToolBar* toolbar = wxGetApp().GetDiagramToolBar();        bool haveArrow = toolbar->GetToolState(DIAGRAM_TOOLBAR_LINE_ARROW);        wxLineShape *lineShape = (wxLineShape *)theShape;        // Yes, you can have more than 2 control points, in which case        // it becomes a multi-segment line.        lineShape->MakeLineControlPoints(2);        if (haveArrow)            lineShape->AddArrow(ARROW_ARROW, ARROW_POSITION_MIDDLE, 10.0, 0.0, _T("Normal arrowhead"));        lineShape->SetFrom(GetShape());        lineShape->SetTo(otherShape);        lineShape->SetAttachments(attachment, new_attachment);        canvas->GetView()->GetDocument()->GetCommandProcessor()->Submit(            new csDiagramCommand(_T("Line"), (csDiagramDocument *)canvas->GetView()->GetDocument(),                    new csCommandState(ID_CS_ADD_LINE, lineShape, NULL)));  }}static double g_DragOffsetX = 0.0;static double g_DragOffsetY = 0.0;static double g_DragStartX = 0.0;static double g_DragStartY = 0.0;void csEvtHandler::OnDragLeft(bool draw, double x, double y, int keys, int attachment){  if ((GetShape()->GetSensitivityFilter() & OP_DRAG_LEFT) != OP_DRAG_LEFT)  {    attachment = 0;    double dist;    if (GetShape()->GetParent())    {      GetShape()->GetParent()->HitTest(x, y, &attachment, &dist);      GetShape()->GetParent()->GetEventHandler()->OnDragLeft(draw, x, y, keys, attachment);    }    return;  }  wxClientDC dc(GetShape()->GetCanvas());  GetShape()->GetCanvas()->PrepareDC(dc);  dc.SetLogicalFunction(OGLRBLF);  wxPen dottedPen(*wxBLACK, 1, wxDOT);  dc.SetPen(dottedPen);  dc.SetBrush(* wxTRANSPARENT_BRUSH);  double xx, yy;  xx = x + g_DragOffsetX;  yy = y + g_DragOffsetY;  GetShape()->GetCanvas()->Snap(&xx, &yy);  double offsetX = xx - g_DragStartX;  double offsetY = yy - g_DragStartY;//  m_xpos = xx; m_ypos = yy;  double w, h;  GetShape()->GetBoundingBoxMax(&w, &h);  GetShape()->GetEventHandler()->OnDrawOutline(dc, xx, yy, w, h);  // Draw bounding box for other selected shapes  wxObjectList::compatibility_iterator node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();  while (node)  {     wxShape* shape = (wxShape*) node->GetData();     if (shape->Selected() && !shape->IsKindOf(CLASSINFO(wxLineShape)) && (shape != GetShape()))     {        shape->GetBoundingBoxMax(&w, &h);        shape->OnDrawOutline(dc, shape->GetX() + offsetX, shape->GetY() + offsetY, w, h);     }     node = node->GetNext();  }}void csEvtHandler::OnBeginDragLeft(double x, double y, int keys, int attachment){  if ((GetShape()->GetSensitivityFilter() & OP_DRAG_LEFT) != OP_DRAG_LEFT)  {    attachment = 0;    double dist;    if (GetShape()->GetParent())    {      GetShape()->GetParent()->HitTest(x, y, &attachment, &dist);      GetShape()->GetParent()->GetEventHandler()->OnBeginDragLeft(x, y, keys, attachment);    }    return;  }  wxClientDC dc(GetShape()->GetCanvas());  GetShape()->GetCanvas()->PrepareDC(dc);  // New policy: don't erase shape until end of drag.//  Erase(dc);  g_DragOffsetX = GetShape()->GetX() - x;  g_DragOffsetY = GetShape()->GetY() - y;  double xx, yy;  xx = x + g_DragOffsetX;  yy = y + g_DragOffsetY;  GetShape()->GetCanvas()->Snap(&xx, &yy);  g_DragStartX = GetShape()->GetX();  g_DragStartY = GetShape()->GetY();  double offsetX = xx - g_DragStartX;  double offsetY = yy - g_DragStartY;  dc.SetLogicalFunction(OGLRBLF);  wxPen dottedPen(*wxBLACK, 1, wxDOT);  dc.SetPen(dottedPen);  dc.SetBrush((* wxTRANSPARENT_BRUSH));  double w, h;  GetShape()->GetBoundingBoxMax(&w, &h);  GetShape()->GetEventHandler()->OnDrawOutline(dc, xx, yy, w, h);  // Draw bounding box for other selected shapes  wxObjectList::compatibility_iterator node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->GetFirst();  while (node)  {     wxShape* shape = (wxShape*) node->GetData();     if (shape->Selected() && !shape->IsKindOf(CLASSINFO(wxLineShape)) && (shape != GetShape()))     {        shape->GetBoundingBoxMax(&w, &h);        shape->OnDrawOutline(dc, shape->GetX() + offsetX, shape->GetY() + offsetY, w, h);     }     node = node->GetNext();  }  GetShape()->GetCanvas()->CaptureMouse();}void csEvtHandler::OnEndDragLeft(double x, double y, int keys, int attachment){  csCanvas *canvas = (csCanvas *)GetShape()->GetCanvas();  canvas->ReleaseMouse();  if ((GetShape()->GetSensitivityFilter() & OP_DRAG_LEFT) != OP_DRAG_LEFT)  {    attachment = 0;    double dist;    if (GetShape()->GetParent())    {      GetShape()->GetParent()->HitTest(x, y, &attachment, &dist);      GetShape()->GetParent()->GetEventHandler()->OnEndDragLeft(x, y, keys, attachment);    }    return;  }  wxClientDC dc(canvas);  canvas->PrepareDC(dc);  dc.SetLogicalFunction(wxCOPY);  double xx = x + g_DragOffsetX;  double yy = y + g_DragOffsetY;  canvas->Snap(&xx, &yy);  double offsetX = xx - g_DragStartX;  double offsetY = yy - g_DragStartY;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合网 天天综合色| 成人高清视频免费观看| 激情久久五月天| 99久久综合国产精品| 91麻豆成人久久精品二区三区| 国产亚洲综合性久久久影院| 一卡二卡欧美日韩| 国产精品99久久久久久久vr| 欧美亚洲自拍偷拍| 亚洲欧洲成人精品av97| 国产一区视频在线看| 欧美性视频一区二区三区| 久久精品水蜜桃av综合天堂| 日本午夜精品视频在线观看| 在线日韩av片| 亚洲视频在线观看一区| 国产成人综合亚洲91猫咪| 777a∨成人精品桃花网| 一区二区三区产品免费精品久久75| 国产精品综合一区二区| 欧美成人精品二区三区99精品| 亚洲国产视频在线| 欧美性猛交xxxx乱大交退制版| 国产精品丝袜一区| 国产伦精品一区二区三区在线观看| 日韩美女一区二区三区| 蜜臀av性久久久久蜜臀av麻豆 | 91久久精品午夜一区二区| 精品国产免费人成在线观看| 久久精品99国产精品| 日韩欧美中文一区| 美女性感视频久久| 精品少妇一区二区三区在线视频| 日韩电影一二三区| 日韩欧美一级片| 九色|91porny| 久久久99免费| 丰满亚洲少妇av| 国产精品九色蝌蚪自拍| 91影视在线播放| 亚洲成人免费视| 91精品国产综合久久精品图片 | 亚洲国产精品嫩草影院| 欧美系列一区二区| 五月天丁香久久| 精品国产区一区| 国产99一区视频免费| 国产精品久久久久久久裸模| 91影视在线播放| 亚洲第一av色| 久久只精品国产| 成人av片在线观看| 亚洲永久免费av| 欧美一区二区三区精品| 国产美女在线精品| 成人欧美一区二区三区小说| 欧美三级日韩三级| 麻豆精品在线观看| 国产精品久久久久久一区二区三区| 在线视频亚洲一区| 麻豆精品视频在线观看| 日本一区二区电影| 欧美日韩精品高清| 国产精品66部| 一个色在线综合| 欧美v国产在线一区二区三区| 国产宾馆实践打屁股91| 亚洲一级在线观看| 国产亲近乱来精品视频| 欧日韩精品视频| 国产一区高清在线| 亚洲一区二区欧美日韩| 久久久综合视频| 在线免费观看视频一区| 国产一区二区伦理片| 一二三四区精品视频| 精品久久久久久久一区二区蜜臀| 91欧美一区二区| 国产主播一区二区三区| 一区二区成人在线视频 | 蜜桃一区二区三区四区| 亚洲欧美日韩国产手机在线| 精品国产成人系列| 在线观看一区日韩| 成人免费av网站| 久久超碰97人人做人人爱| 一区二区在线观看免费| 国产丝袜欧美中文另类| 日韩一区二区三区观看| 91久久久免费一区二区| 成人性生交大片| 国内不卡的二区三区中文字幕 | 亚洲动漫第一页| 国产精品久久久久久福利一牛影视| 欧美一级精品大片| 91蜜桃婷婷狠狠久久综合9色| 国产精品一区二区三区四区| 日韩国产欧美在线观看| 洋洋成人永久网站入口| 国产精品免费视频观看| 久久久综合视频| 精品人在线二区三区| 欧美日韩不卡视频| 欧美午夜一区二区三区免费大片| 99视频超级精品| 成人精品免费看| 国产乱码精品一区二区三区忘忧草 | 国产午夜精品一区二区三区视频| 日韩一区二区三区高清免费看看| 欧美在线free| 在线观看精品一区| 欧美在线不卡一区| 欧美日韩国产美| 欧美一区二区三区在线观看| 在线视频你懂得一区| 欧美视频精品在线观看| 欧美午夜电影网| 精品1区2区3区| 欧美老人xxxx18| 51精品国自产在线| 日韩亚洲欧美一区| 精品国产一区二区国模嫣然| 久久人人超碰精品| 国产日产欧美精品一区二区三区| 国产欧美日韩精品一区| 亚洲精品大片www| 亚洲一区在线观看免费| 亚洲成人激情av| 久久精品国内一区二区三区| 韩国三级电影一区二区| 丁香亚洲综合激情啪啪综合| 成人av免费在线观看| 欧美性猛交xxxxxxxx| 日韩一区二区免费在线电影| 精品电影一区二区三区 | 欧美二区在线观看| 欧美变态tickling挠脚心| 国产亚洲欧洲997久久综合| 国产精品久久久久7777按摩| 亚洲免费在线播放| 日韩精品91亚洲二区在线观看| 开心九九激情九九欧美日韩精美视频电影| 精品一区二区三区视频在线观看| 成人福利电影精品一区二区在线观看 | 国产成人h网站| 成人白浆超碰人人人人| 欧美在线观看一区| 精品久久国产字幕高潮| 亚洲国产精品ⅴa在线观看| 亚洲免费在线电影| 免费看日韩a级影片| 99热精品国产| 日韩视频在线你懂得| 中文字幕一区三区| 日韩av一区二区在线影视| 成人激情免费电影网址| 91麻豆精品91久久久久同性| 国产情人综合久久777777| 亚洲一区二区三区在线播放| 久久精品国产第一区二区三区| 91视频国产观看| 欧美成人video| 亚洲主播在线观看| 懂色av中文字幕一区二区三区| 欧美午夜精品久久久久久孕妇| 久久先锋资源网| 调教+趴+乳夹+国产+精品| www.日韩在线| 亚洲精品一线二线三线无人区| 亚洲人妖av一区二区| 国产一区二区三区日韩| 欧美福利一区二区| 亚洲欧美日韩国产综合| 国产91丝袜在线播放| 日韩欧美中文字幕公布| 亚洲成av人影院在线观看网| 97se亚洲国产综合自在线| www久久精品| 蜜桃精品在线观看| 欧美乱妇23p| 亚洲午夜精品17c| 在线看日本不卡| 亚洲男女一区二区三区| 不卡的av电影| 国产色婷婷亚洲99精品小说| 日本亚洲一区二区| 欧美日韩国产成人在线91| 亚洲精品成人精品456| 菠萝蜜视频在线观看一区| 2020国产成人综合网| 久久精品国产第一区二区三区| 欧美日本国产视频| 亚洲五月六月丁香激情| 色哟哟日韩精品| 亚洲欧洲日产国码二区| hitomi一区二区三区精品| 国产精品污污网站在线观看| 成人中文字幕在线| 国产精品久久久久一区| 国产91富婆露脸刺激对白|