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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? shapes.cpp

?? wxWidgets 2.8.9 Downloads
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/////////////////////////////////////////////////////////////////////////////// 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;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费国产视频网站| 高清国产一区二区| 麻豆精品一区二区三区| 乱一区二区av| 国产99久久久国产精品潘金网站| 成人a免费在线看| 欧美视频一二三区| 精品电影一区二区| 国产精品福利一区二区三区| 亚洲精品va在线观看| 日本免费在线视频不卡一不卡二| 蜜桃视频在线一区| 99久久精品费精品国产一区二区| 欧美午夜精品一区二区蜜桃| 日韩美一区二区三区| 亚洲日本乱码在线观看| 免费高清不卡av| 91丝袜高跟美女视频| 日韩三级在线免费观看| 亚洲视频在线一区二区| 美女网站视频久久| 91香蕉国产在线观看软件| 日韩欧美久久久| 亚洲女同一区二区| 久88久久88久久久| 欧美自拍丝袜亚洲| 欧美激情在线免费观看| 日韩中文字幕不卡| 成人h精品动漫一区二区三区| 在线观看区一区二| 久久精品在线免费观看| 亚洲一级二级三级在线免费观看| 国产精品影视在线| 欧美麻豆精品久久久久久| 国产精品沙发午睡系列990531| 亚洲国产成人高清精品| 成人精品视频一区二区三区 | 亚洲色图.com| 精品亚洲porn| 欧美日韩国产综合久久| 国产精品久久久久一区二区三区共| 日韩不卡一区二区三区| 91蜜桃在线免费视频| 久久久久国产精品厨房| 日韩经典一区二区| 欧美性xxxxxx少妇| 欧美激情一区二区三区在线| 七七婷婷婷婷精品国产| 欧美性色黄大片| 亚洲日本青草视频在线怡红院 | 午夜精品爽啪视频| 成人黄色777网| 中文在线免费一区三区高中清不卡| 日本美女一区二区三区视频| 一本高清dvd不卡在线观看| 久久一区二区三区国产精品| 麻豆精品视频在线| 777午夜精品免费视频| 亚洲图片欧美综合| 99国产精品久久久久| 亚洲欧美在线高清| 成人18视频在线播放| 欧美国产精品一区二区三区| 国产一区二区三区电影在线观看 | 亚洲愉拍自拍另类高清精品| 成人av免费在线| 国产精品久久久久四虎| 国产高清在线观看免费不卡| 日韩免费视频一区二区| 免费高清在线视频一区·| 欧美一区二区在线免费观看| 日韩精品一级二级| 精品日韩在线观看| 不卡视频一二三| 亚洲1区2区3区4区| 久久久久久久久久久久久夜| a美女胸又www黄视频久久| 亚洲免费资源在线播放| 欧美一级高清片| 国产黄色精品视频| 亚洲综合久久久| 精品精品国产高清一毛片一天堂| 国产成人一区二区精品非洲| 亚洲欧美一区二区三区极速播放| 欧美日韩精品综合在线| 国模娜娜一区二区三区| 成人免费小视频| 欧美一区二区三区免费在线看 | 成年人午夜久久久| 国产精品天美传媒沈樵| 懂色av一区二区三区蜜臀| 国产精品久久久久久久久快鸭 | 欧美丰满一区二区免费视频| 亚洲免费伊人电影| 99免费精品在线| 亚洲天堂免费在线观看视频| 91美女在线视频| 亚洲一区二区三区中文字幕在线| 欧美亚洲愉拍一区二区| 午夜视频久久久久久| 91麻豆精品国产自产在线观看一区| 亚洲成人免费视频| 欧美成人精品1314www| 国产69精品久久久久777| 亚洲视频在线观看一区| 欧美日韩国产综合久久| 韩国午夜理伦三级不卡影院| 中文字幕第一区第二区| 日韩免费看网站| 丁香桃色午夜亚洲一区二区三区| ●精品国产综合乱码久久久久| 欧美色图激情小说| 久久99久久99精品免视看婷婷| 国产日韩欧美激情| 色播五月激情综合网| 亚洲日本一区二区| 欧美日韩二区三区| 懂色av一区二区三区蜜臀| 亚洲福利一二三区| 精品国产髙清在线看国产毛片| 国产91对白在线观看九色| 亚洲成人av在线电影| 国产午夜精品美女毛片视频| 91官网在线免费观看| 国产在线播精品第三| 亚洲色图丝袜美腿| 欧美成人bangbros| 在线精品国精品国产尤物884a | 日韩国产精品久久| 国产日韩欧美制服另类| 欧美欧美欧美欧美首页| 丁香激情综合国产| 日日夜夜免费精品| 最近日韩中文字幕| 在线电影国产精品| 成人h动漫精品一区二| 国产成人亚洲精品狼色在线| 视频一区欧美精品| 日韩理论片一区二区| 26uuu欧美日本| 在线免费观看一区| 春色校园综合激情亚洲| 美女免费视频一区二区| 亚洲国产精品精华液网站| 国产精品色哟哟网站| 久久综合九色综合久久久精品综合| 欧美专区在线观看一区| av成人老司机| 91女神在线视频| 久久精品国产久精国产爱| 夜夜嗨av一区二区三区中文字幕 | 在线免费av一区| 99re热这里只有精品视频| 国产sm精品调教视频网站| 激情综合色丁香一区二区| 亚洲一区二区在线观看视频 | 日韩精品一级中文字幕精品视频免费观看| 国产视频视频一区| 亚洲精品一线二线三线无人区| 欧美日韩一区二区在线观看| 93久久精品日日躁夜夜躁欧美| 国产精品一区在线| 午夜视频一区二区| 亚洲一卡二卡三卡四卡无卡久久| 中文字幕在线不卡一区| 日韩色在线观看| 日韩欧美中文字幕制服| 欧美无人高清视频在线观看| 成人av综合一区| 91尤物视频在线观看| 成a人片亚洲日本久久| 色综合婷婷久久| 色狠狠桃花综合| 在线观看免费成人| 在线精品视频小说1| 欧美在线999| 91精品国产综合久久久蜜臀图片| 欧美日本高清视频在线观看| 欧美裸体一区二区三区| 日韩美一区二区三区| 久久精品一区四区| 国产精品久久99| 中文字幕一区在线观看| 久久久久久97三级| 国产欧美日韩三级| 成人免费在线视频| 五月天中文字幕一区二区| 奇米影视7777精品一区二区| 美腿丝袜亚洲综合| 成人免费看的视频| 欧美三区在线视频| 精品嫩草影院久久| 国产精品久久久久久久久久久免费看| 综合色天天鬼久久鬼色| 亚洲一区二区三区在线看| 日韩国产欧美三级| 国产盗摄一区二区三区| 成人av一区二区三区| www.视频一区| 欧美一区二区三区四区高清|