您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ Box2d函数代码示例

51自学网 2021-06-01 19:55:38
  C++
这篇教程C++ Box2d函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中Box2d函数的典型用法代码示例。如果您正苦于以下问题:C++ Box2d函数的具体用法?C++ Box2d怎么用?C++ Box2d使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了Box2d函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: fabsf

bool GiGraphics::beginPaint(GiCanvas* canvas, const RECT_2D& clipBox){    if (!canvas || m_impl->canvas || isStopping()) {        return false;    }        m_impl->canvas = canvas;    m_impl->ctxused = 0;    m_impl->stopping = 0;        float phase = fabsf(m_impl->phase);    m_impl->phase = (phase < 1e4f ? phase + 0.5f : 0.5f) * (m_impl->phase > 0 ? 1.f : -1.f);        if (m_impl->lastZoomTimes != xf().getZoomTimes()) {        m_impl->zoomChanged();        m_impl->lastZoomTimes = xf().getZoomTimes();    }        m_impl->clipBox0 = clipBox;    if (Box2d(clipBox).isEmpty()) {        xf().getWndRect().get(m_impl->clipBox0);    }    m_impl->clipBox  = m_impl->clipBox0;    m_impl->rectDraw = m_impl->clipBox0;    m_impl->rectDraw.inflate(GiGraphicsImpl::CLIP_INFLATE);    m_impl->rectDrawM = Box2d(m_impl->rectDraw) * xf().displayToModel();    m_impl->rectDrawMaxM = xf().getWndRectM();    m_impl->rectDrawW = m_impl->rectDrawM * xf().modelToWorld();    m_impl->rectDrawMaxW = m_impl->rectDrawMaxM * xf().modelToWorld();        return true;}
开发者ID:Vito2015,项目名称:vgcore,代码行数:32,


示例2: box

bool GiGraphics::setClipWorld(const Box2d& rectWorld){    bool ret = false;    if (isDrawing() && !rectWorld.isEmpty())    {        Box2d box (rectWorld * xf().worldToDisplay());        box.intersectWith(Box2d(m_impl->clipBox0));        if (!box.isEmpty(Tol(1, 0)))        {            if (box != Box2d(m_impl->clipBox))            {                box.get(m_impl->clipBox);                m_impl->rectDraw = box;                m_impl->rectDraw.inflate(GiGraphicsImpl::CLIP_INFLATE);                m_impl->rectDrawM = m_impl->rectDraw * xf().displayToModel();                m_impl->rectDrawW = m_impl->rectDrawM * xf().modelToWorld();                SafeCall(m_impl->canvas, _clipBoxChanged(m_impl->clipBox));            }            ret = true;        }    }    return ret;}
开发者ID:acekiller,项目名称:touchvg,代码行数:27,


示例3: setClipBox

bool GiGraphics::setClipBox(const RECT_2D& rc){    if (m_impl->drawRefcnt < 1)        return false;    bool ret = false;    Box2d rect;    if (!rect.intersectWith(Box2d(rc), Box2d(m_impl->clipBox0)).isEmpty())    {        if (rect != Box2d(m_impl->clipBox))        {            rect.get(m_impl->clipBox);            m_impl->rectDraw.set(Box2d(rc));            m_impl->rectDraw.inflate(GiGraphicsImpl::CLIP_INFLATE);            m_impl->rectDrawM = m_impl->rectDraw * xf().displayToModel();            m_impl->rectDrawW = m_impl->rectDrawM * xf().modelToWorld();            SafeCall(m_impl->canvas, clipRect(m_impl->clipBox.left, m_impl->clipBox.top,                                              m_impl->clipBox.width(),                                              m_impl->clipBox.height()));        }        ret = true;    }    return ret;}
开发者ID:gkrists,项目名称:TouchVG,代码行数:26,


示例4: giInterlockedIncrement

bool GiGraphics::beginPaint(GiCanvas* canvas, const RECT_2D& clipBox){    if (!canvas || m_impl->canvas || m_impl->drawRefcnt > 0) {        return false;    }        m_impl->canvas = canvas;    m_impl->ctxused = 0;    m_impl->stopping = 0;    giInterlockedIncrement(&m_impl->drawRefcnt);        if (m_impl->lastZoomTimes != xf().getZoomTimes()) {        m_impl->zoomChanged();        m_impl->lastZoomTimes = xf().getZoomTimes();    }        m_impl->clipBox0 = clipBox;    if (Box2d(clipBox).isEmpty()) {        (xf().getWndRectW() * xf().worldToDisplay()).get(m_impl->clipBox0);    }    m_impl->clipBox  = m_impl->clipBox0;    m_impl->rectDraw = m_impl->clipBox0;    m_impl->rectDraw.inflate(GiGraphicsImpl::CLIP_INFLATE);    m_impl->rectDrawM = Box2d(m_impl->rectDraw) * xf().displayToModel();    m_impl->rectDrawMaxM = xf().getWndRectM();    m_impl->rectDrawW = m_impl->rectDrawM * xf().modelToWorld();    m_impl->rectDrawMaxW = m_impl->rectDrawMaxM * xf().modelToWorld();        return true;}
开发者ID:gkrists,项目名称:TouchVG,代码行数:30,


示例5: xf

bool GiCanvasGdi::drawImage(long hmWidth, long hmHeight, HBITMAP hbitmap,                             const Box2d& rectW, bool fast){    BOOL ret = FALSE;    HDC hdc = m_draw->getDrawDC();    if (hdc != NULL && hmWidth > 0 && hmHeight > 0 && hbitmap != NULL        && m_owner->getClipWorld().isIntersect(Box2d(rectW, true)))    {        RECT_2D clipBox;        RECT rc, rcDraw, rcFrom;        // rc: 整个图像对应的显示坐标区域        (rectW * xf().worldToDisplay()).get(rc);        // rcDraw: 图像经剪裁后的可显示部分        Box2d(gs()->getClipBox(clipBox)).get(rcFrom);        if (!IntersectRect(&rcDraw, &rc, &rcFrom))            return false;        long width, height;       // pixel units        width = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), 2540);        height = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), 2540);        // rcFrom: rcDraw在原始图像上对应的图像范围        rcFrom.left = MulDiv(rcDraw.left - rc.left, width, rc.right - rc.left);        rcFrom.top = MulDiv(rcDraw.top - rc.top, height, rc.bottom - rc.top);        rcFrom.right = MulDiv(rcDraw.right - rc.left, width, rc.right - rc.left);        rcFrom.bottom = MulDiv(rcDraw.bottom - rc.top, height, rc.bottom - rc.top);        // 根据rectW正负决定是否颠倒显示图像        if (rectW.xmin > rectW.xmax)            mgSwap(rcDraw.left, rcDraw.right);        if (rectW.ymin > rectW.ymax)            mgSwap(rcDraw.top, rcDraw.bottom);        GiCompatibleDC memDC (hdc);        if (memDC == NULL)            return false;        KGDIObject bmp (memDC, hbitmap, false);        KGDIObject brush (hdc, ::GetStockObject(NULL_BRUSH), false);        int nBltMode = (!fast || m_owner->isPrint()) ? HALFTONE : COLORONCOLOR;        int nOldMode = ::SetStretchBltMode(hdc, nBltMode);        ::SetBrushOrgEx(hdc, rcDraw.left % 8, rcDraw.top % 8, NULL);        ret = ::StretchBlt(hdc,             rcDraw.left, rcDraw.top,             rcDraw.right - rcDraw.left,             rcDraw.bottom - rcDraw.top,             memDC,             rcFrom.left, rcFrom.top,             rcFrom.right - rcFrom.left,             rcFrom.bottom - rcFrom.top,             SRCCOPY);        ::SetStretchBltMode(hdc, nOldMode);    }    return ret ? true : false;}
开发者ID:huangzongwu,项目名称:touchvg,代码行数:59,


示例6: matD

bool GiGraphics::drawBeziers(const GiContext* ctx, int count,                              const Point2d* points, bool closed, bool modelUnit){    if (count < 4 || !points || isStopping())        return false;    if (count > 0x2000)        count = 0x2000;    count = 1 + (count - 1) / 3 * 3;    bool ret = false;    vector<Point2d> pxpoints;    vector<Point2d> pointBuf;    int i, j, n, si, ei;    Point2d * pxs;    Matrix2d matD(S2D(xf(), modelUnit));    const Box2d extent (count, points);                 // 模型坐标范围    if (!DRAW_RECT(m_impl, modelUnit).isIntersect(extent))  // 全部在显示区域外        return false;        if (closed) {        pxpoints.resize(count);        pxs = &pxpoints.front();        for (i = 0; i < count; i++)            pxs[i] = points[i] * matD;        ret = rawBeziers(ctx, pxs, count, closed);    }    else if (DRAW_MAXR(m_impl, modelUnit).contains(extent)) {   // 全部在显示区域内        pxpoints.resize(count);        pxs = &pxpoints.front();        for (i = 0; i < count; i++)            pxs[i] = points[i] * matD;        ret = rawBeziers(ctx, pxs, count);    } else {        pointBuf.resize(count);        for (i = 0; i < count; i++)                 // 转换到像素坐标            pointBuf[i] = points[i] * matD;        Point2d* pts = &pointBuf.front();        for (i = 0; i + 3 < count;) {            for (; i + 3 < count && !m_impl->rectDraw.isIntersect(Box2d(4, &pts[i])); i += 3) ;            si = ei = i;            for (; i + 3 < count && m_impl->rectDraw.isIntersect(Box2d(4, &pts[i])); i += 3)                ei = i + 3;            if (ei > si) {                n = ei - si + 1;                pxpoints.resize(n);                pxs = &pxpoints.front();                for (j=0; j<n; j++)                    pxs[j] = pts[si + j];                ret = rawBeziers(ctx, pxs, n);            }        }    }    return ret;}
开发者ID:Vito2015,项目名称:vgcore,代码行数:56,


示例7: pt1

float MgEllipse::_hitTest(const Point2d& pt, float tol, MgHitResult& res) const{    if (isCircle()) {        Point2d pt1(getCenter()), pt2(pt);        crossCircle(pt1, pt2, this);        float d1 = pt.distanceTo(pt1);        float d2 = pt.distanceTo(pt2);        res.nearpt = d1 < d2 ? pt1 : pt2;        return mgMin(d1, d2);    }        float distMin = _FLT_MAX;    const Box2d rect (pt, 2 * tol, 2 * tol);    Point2d ptTemp;    for (int i = 0; i < 4; i++) {        if (rect.isIntersect(Box2d(4, _bzpts + 3 * i))) {            mgnear::nearestOnBezier(pt, _bzpts + 3 * i, ptTemp);            float dist = pt.distanceTo(ptTemp);            if (dist <= tol && dist < distMin) {                distMin = dist;                res.nearpt = ptTemp;                res.segment = i;            }        }    }    return distMin;}
开发者ID:Vito2015,项目名称:vgcore,代码行数:29,


示例8: size

MgShape* MgCmdManagerImpl::addImageShape(const MgMotion* sender,        const char* name, float width, float height){    if (!name || *name == 0 || width < 1 || height < 1)        return NULL;    Vector2d size(Vector2d(width, height) * sender->view->xform()->displayToWorld());    while (fabsf(size.x) > 200.f || fabsf(size.y) > 200.f) {        size *= 0.95f;    }    Box2d rect(sender->view->xform()->getWndRectW() + Vector2d(10.f, -10.f));    rect = Box2d(rect.leftTop(), rect.leftTop() + size);    rect *= sender->view->xform()->worldToModel();    MgShapeT<MgImageShape> shape;    MgImageShape* imagesp = (MgImageShape*)shape.shape();    shape.context()->setLineStyle(kGiLineNull);         // 默认没有边框    shape.context()->setFillColor(GiColor::White());    // 设为实填充,避免在中心无法点中    imagesp->setName(name);    imagesp->setRect2P(rect.leftTop(), rect.rightBottom());    MgShapesLock locker(MgShapesLock::Add, sender->view);    if (sender->view->shapeWillAdded(&shape)) {        MgShape* newsp = sender->view->shapes()->addShape(shape);        sender->view->shapeAdded(newsp);        sender->view->setNewShapeID(newsp->getID());        sender->view->cancel(sender);        return newsp;    }    return NULL;}
开发者ID:rhcad,项目名称:touchvg-v0.6,代码行数:35,


示例9: rect

float MgEllipse::_hitTest(const Point2d& pt, float tol,                           Point2d& nearpt, int& segment) const{    float distMin = _FLT_MAX;    const Box2d rect (pt, 2 * tol, 2 * tol);    Point2d ptTemp;    segment = -1;    for (int i = 0; i < 4; i++)    {        if (rect.isIntersect(Box2d(4, _bzpts + 3 * i)))        {            mgNearestOnBezier(pt, _bzpts + 3 * i, ptTemp);            float dist = pt.distanceTo(ptTemp);            if (dist <= tol && dist < distMin)            {                distMin = dist;                nearpt = ptTemp;                segment = i;            }        }    }    return distMin;}
开发者ID:firehot,项目名称:touchvg,代码行数:25,


示例10: Box2d

Box2d GiTransform::setWorldLimits(const Box2d& rect){    Box2d ret = m_impl->rectLimitsW;    m_impl->rectLimitsW = rect.isEmpty() ? Box2d(Point2d::kOrigin(), 2e5f, 2e5f) : rect;    m_impl->rectLimitsW.normalize();    return ret;}
开发者ID:wangzhengnan,项目名称:vgcore,代码行数:7,


示例11: Box2d

 inline Box2d Circle2d::bounds() const {     return Box2d(         Interval(centerPoint().x() - radius(), centerPoint().x() + radius()),         Interval(centerPoint().y() - radius(), centerPoint().y() + radius())     ); }
开发者ID:ianmackenzie,项目名称:cpp-opensolid-core,代码行数:8,


示例12: rect

bool GiCoreView::zoomToModel(float x, float y, float w, float h){    Box2d rect(Box2d(x, y, x + w, y + h) * impl->xform()->modelToWorld());    bool ret = impl->xform()->zoomTo(rect);    if (ret) {        impl->regenAll();    }    return ret;}
开发者ID:arthur-zhang,项目名称:touchvg,代码行数:9,


示例13: fabs

void MgEllipse::setRadius(float rx, float ry){    rx = fabs(rx);    rx = fabs(ry);    if (rx < _MGZERO)        rx = rx;    setRect(Box2d(getCenter(), rx * 2, ry * 2), getAngle());}
开发者ID:acekiller,项目名称:touchvg,代码行数:9,


示例14: drawHandle

 bool drawHandle(GiGraphics* gs, const Point2d& pnt, bool hotdot) {     GiContext ctx(0, GiColor::Black(), kGiLineSolid,         GiColor(240, 240, 240, hotdot ? 200 : 128));     bool old = gs->setAntiAliasMode(false);     gs->drawRect(&ctx, Box2d(pnt, gs->xf().displayToModel(hotdot ? 3.f : 1.5f, true), 0));     gs->setAntiAliasMode(old);     return true; }
开发者ID:thinkfeed,项目名称:touchvg,代码行数:9,


示例15: gs

bool GiCanvasGdipImpl::drawImage(G::Bitmap* pBmp, const Box2d& rectW, bool fast){    RECT_2D rc, rcDraw, rcFrom;    Box2d rect;    float width = (float)pBmp->GetWidth();    float height = (float)pBmp->GetHeight();    // rc: 整个图像对应的显示坐标区域    (rectW * gs()->xf().worldToDisplay()).get(rc);    // rcDraw: 图像经剪裁后的可显示部分    gs()->getClipBox(rcDraw);    if (rect.intersectWith(Box2d(rc), Box2d(rcDraw)).isEmpty())        return false;    rect.get(rcDraw);    // rcFrom: rcDraw在原始图像上对应的图像范围    rcFrom.left = (rcDraw.left - rc.left) * width / (rc.right - rc.left);    rcFrom.top  = (rcDraw.top - rc.top) * height / (rc.bottom - rc.top);    rcFrom.right = (rcDraw.right - rc.left) * width / (rc.right - rc.left);    rcFrom.bottom = (rcDraw.bottom - rc.top) * height / (rc.bottom - rc.top);    // 根据rectW正负决定是否颠倒显示图像    if (rectW.xmin > rectW.xmax)        mgSwap(rcDraw.left, rcDraw.right);    if (rectW.ymin > rectW.ymax)        mgSwap(rcDraw.top, rcDraw.bottom);    G::InterpolationMode nOldMode = getDrawGs()->GetInterpolationMode();    getDrawGs()->SetInterpolationMode( (!fast || gs()->isPrint())        ? G::InterpolationModeBilinear : G::InterpolationModeLowQuality);    G::Status ret = getDrawGs()->DrawImage(pBmp,         G::RectF(rcDraw.left, rcDraw.top,         rcDraw.right - rcDraw.left,         rcDraw.bottom - rcDraw.top),         rcFrom.left, rcFrom.top,         rcFrom.right - rcFrom.left,         rcFrom.bottom - rcFrom.top,         G::UnitPixel);    getDrawGs()->SetInterpolationMode(nOldMode);    return G::Ok == ret;}
开发者ID:fanliugen,项目名称:touchvg,代码行数:44,


示例16: lock

bool GiGraphics::drawBeziers(const GiContext* ctx, int count,                              const Point2d* points, bool modelUnit){    if (m_impl->drawRefcnt == 0 || count < 4 || points == NULL)        return false;    GiLock lock (&m_impl->drawRefcnt);    if (count > 0x2000)        count = 0x2000;    count = 1 + (count - 1) / 3 * 3;    bool ret = false;    vector<Point2d> pxpoints;    vector<Point2d> pointBuf;    int i, j, n, si, ei;    Point2d * pxs;    Matrix2d matD(S2D(xf(), modelUnit));    const Box2d extent (count, points);                 // 模型坐标范围    if (!DRAW_RECT(m_impl, modelUnit).isIntersect(extent))  // 全部在显示区域外        return false;    if (DRAW_MAXR(m_impl, modelUnit).contains(extent))  // 全部在显示区域内    {        pxpoints.resize(count);        pxs = &pxpoints.front();        for (i = 0; i < count; i++)            pxs[i] = points[i] * matD;        ret = rawBeziers(ctx, pxs, count);    }    else    {                pointBuf.resize(count);        for (i = 0; i < count; i++)                 // 转换到像素坐标            pointBuf[i] = points[i] * matD;        Point2d* pts = &pointBuf.front();        si = ei = 0;        for (i = 3; i < count; i += 3)        {            for ( ; i < count                && m_impl->rectDraw.isIntersect(Box2d(4, &pts[ei])); i += 3)                ei = i;            n = ei - si + 1;            if (n > 1)            {                pxpoints.resize(n);                pxs = &pxpoints.front();                for (j=0; j<n; j++)                    pxs[j] = pts[si + j];                ret = rawBeziers(ctx, pxs, n);            }            si = ei = i;        }    }    return ret;}
开发者ID:acekiller,项目名称:touchvg,代码行数:56,


示例17: Box2d

void CScrollShapeView::OnZoomed(){    CRandomShapeView::OnZoomed();    Box2d rect;    // m_rcLimits: 极限范围对应的坐标范围, 像素    rect = m_shapes->getExtent() * m_graph->xf.modelToDisplay();    rect.inflate(1, 1);    rect.get(m_rcLimits);    // m_rcScrWnd: 当前窗口对应的坐标范围, 像素    rect = Box2d(m_graph->xf.getCenterW(),        m_graph->xf.getWidth() / m_graph->xf.getWorldToDisplayX(),        m_graph->xf.getHeight() / m_graph->xf.getWorldToDisplayY());    rect *= m_graph->xf.worldToDisplay();    rect.get(m_rcScrWnd);    // 以m_rcLimits左上角为原点调整m_rcScrWnd和m_rcLimits    ::OffsetRect(&m_rcScrWnd, -m_rcLimits.left, -m_rcLimits.top);    ::OffsetRect(&m_rcLimits, -m_rcLimits.left, -m_rcLimits.top);    // 避免m_rcScrWnd部分超出m_rcLimits    ::UnionRect(&m_rcLimits, &m_rcLimits, &m_rcScrWnd);    SCROLLINFO si;    si.cbSize = sizeof(si);    si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS;    si.nMin = 0;    if (m_rcLimits.right - m_rcLimits.left > m_rcScrWnd.right - m_rcScrWnd.left)    {        si.nMax = max(1, m_rcLimits.right - m_rcLimits.left);        si.nPage = m_rcScrWnd.right - m_rcScrWnd.left;        si.nPos = m_rcScrWnd.left;        ::EnableScrollBar(m_hWnd, SB_HORZ, ESB_ENABLE_BOTH);        ::SetScrollInfo(m_hWnd, SB_HORZ, &si, TRUE);    }    else    {        ::EnableScrollBar(m_hWnd, SB_HORZ, ESB_DISABLE_BOTH);    }    if (m_rcLimits.bottom - m_rcLimits.top > m_rcScrWnd.bottom - m_rcScrWnd.top)    {        si.nMax = max(1, m_rcLimits.bottom - m_rcLimits.top);        si.nPage = m_rcScrWnd.bottom - m_rcScrWnd.top;        si.nPos = m_rcScrWnd.top;        ::EnableScrollBar(m_hWnd, SB_VERT, ESB_ENABLE_BOTH);        ::SetScrollInfo(m_hWnd, SB_VERT, &si, TRUE);    }    else    {        ::EnableScrollBar(m_hWnd, SB_VERT, ESB_DISABLE_BOTH);    }}
开发者ID:thinkfeed,项目名称:touchvg,代码行数:56,


示例18: Box2d

void GiCanvasGdi::clearWindow(){    if (!m_owner->isPrint() && m_owner->isDrawing())    {        RECT rc;        RECT_2D clipBox;        Box2d(gs()->getClipBox(clipBox)).get(rc);        ExtTextOut(m_draw->getDrawDC(), 0, 0, ETO_OPAQUE, &rc, NULL, 0, NULL);    }}
开发者ID:huangzongwu,项目名称:touchvg,代码行数:11,


示例19: processLine

 virtual bool processLine(int, int&, const Point2d& startpt, const Point2d& endpt) {     if (box.contains(Box2d(startpt, endpt))         && mglnrel::cross2Line(startpt, endpt, a, b, tmpcross)) {         dist = tmpcross.distanceTo(box.center());         if (mindist > dist) {             mindist = dist;             crosspt = tmpcross;         }     }     return true; }
开发者ID:Vito2015,项目名称:vgcore,代码行数:11,


示例20: _hitTestBox

bool MgParallel::_hitTestBox(const Box2d& rect) const{    if (!__super::_hitTestBox(rect))        return false;    for (int i = 0; i < 4; i++) {        if (Box2d(_points[i], _points[(i + 1) % 4]).isIntersect(rect))            return true;    }    return false;}
开发者ID:CharlyZhang,项目名称:vgcore,代码行数:12,


示例21: _hitTestBox

bool MgDiamond::_hitTestBox(const Box2d& rect) const{    if (!__super::_hitTestBox(rect))        return false;        for (int i = 0; i < 3; i++) {        if (Box2d(_getHandlePoint(i), _getHandlePoint(i + 1)).isIntersect(rect))            return true;    }        return false;}
开发者ID:fanliugen,项目名称:touchvg,代码行数:12,


示例22: _hitTestBox

bool MgBaseRect::_hitTestBox(const Box2d& rect) const{    if (!__super::_hitTestBox(rect))        return false;        for (int i = 0; i < 3; i++) {        if (Box2d(_points[i], _points[i + 1]).isIntersect(rect))            return true;    }        return false;}
开发者ID:acekiller,项目名称:touchvg,代码行数:12,


示例23: _hitTestBox

bool MgBaseLines::_hitTestBox(const Box2d& rect) const{    if (!__super::_hitTestBox(rect))        return false;        for (UInt32 i = 0; i + 1 < _count; i++) {        if (Box2d(_points[i], _points[i + 1]).isIntersect(rect))            return true;    }        return _count < 2;}
开发者ID:acekiller,项目名称:touchvg,代码行数:12,


示例24: xf

void GiGraphics::_beginPaint(const RECT2D& clipBox){    if (m_impl->lastZoomTimes != xf().getZoomTimes())    {        m_impl->zoomChanged();        m_impl->lastZoomTimes = xf().getZoomTimes();    }    giInterlockedIncrement(&m_impl->drawRefcnt);    if (!Box2d(clipBox).isEmpty())    {        m_impl->clipBox0 = clipBox;        m_impl->clipBox  = clipBox;        m_impl->rectDraw = Box2d(clipBox);        m_impl->rectDraw.inflate(GiGraphicsImpl::CLIP_INFLATE);        m_impl->rectDrawM = m_impl->rectDraw * xf().displayToModel();        m_impl->rectDrawMaxM = Box2d(0, 0, xf().getWidth(), xf().getHeight()) * xf().displayToModel();        m_impl->rectDrawW = m_impl->rectDrawM * xf().modelToWorld();        m_impl->rectDrawMaxW = m_impl->rectDrawMaxM * xf().modelToWorld();    }}
开发者ID:acekiller,项目名称:touchvg,代码行数:21,


示例25: drawLine

bool GiGraphics::drawLine(const GiContext* ctx, const Point2d& startPt,                          const Point2d& endPt, bool modelUnit){    if (!DRAW_RECT(m_impl, modelUnit).isIntersect(Box2d(startPt, endPt)))        return false;    Point2d pts[2] = { startPt * S2D(xf(), modelUnit), endPt * S2D(xf(), modelUnit) };    if (!mglnrel::clipLine(pts[0], pts[1], m_impl->rectDraw))        return false;    return rawLine(ctx, pts[0].x, pts[0].y, pts[1].x, pts[1].y);}
开发者ID:Vito2015,项目名称:vgcore,代码行数:13,


示例26: mgRoundRectHit

float MgRoundRect::_hitTest(const Point2d& pt, float tol,                             Point2d& nearpt, Int32& segment) const{    float dist;    if (isOrtho())    {        dist = mgRoundRectHit(Box2d(_points[0], _points[2]), _rx, _ry, pt, tol, nearpt, segment);    }    else    {        Matrix2d mat(Matrix2d::rotation(getAngle(), getCenter()));        Box2d rect(Box2d(pt, 2 * tol, 2 * tol) * mat.inverse());        dist = mgRoundRectHit(getRect(), _rx, _ry,             rect.center(), rect.width(), nearpt, segment);        if (dist < 1e10)            nearpt *= mat;    }    return dist;}
开发者ID:acekiller,项目名称:touchvg,代码行数:22,


示例27: basept

bool MgBaseRect::_setHandlePoint(UInt32 index, const Point2d& pt, float){    if (index < 4 && getFlag(kMgSquare)) {        Point2d basept(getCenter());        Point2d pt2(pt * Matrix2d::rotation(-getAngle(), basept));        setRect(basept * 2.f - pt2.asVector(), pt2, getAngle(), basept);    }    else {        Point2d pt2(pt * Matrix2d::rotation(-getAngle(), getCenter()));        Box2d rect(getRect());        mgMoveRectHandle(rect, index, pt2);        if (getFlag(kMgSquare) && (4 == index || 6 == index)) {            rect = Box2d(rect.center(), rect.height(), rect.height());        }        else if (getFlag(kMgSquare)) {            rect = Box2d(rect.center(), rect.width(), rect.width());        }        setRect(rect.leftTop(), rect.rightBottom(), getAngle(), getCenter());    }    update();    return true;}
开发者ID:fanliugen,项目名称:touchvg,代码行数:22,


示例28: clearSnap

bool MgCmdManagerImpl::cancel(const MgMotion* sender){    clearSnap();        int actions[] = { 0 };    sender->view->showContextActions(0, actions, Box2d(), NULL);    CMDS::iterator it = _cmds.find(_cmdname);    if (it != _cmds.end()) {        return it->second->cancel(sender);    }    return false;}
开发者ID:arthur-zhang,项目名称:touchvg,代码行数:13,



注:本文中的Box2d函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ BoxToRect函数代码示例
C++ Box函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。