コード例 #1
0
void copy_rect(ahm::PropertyValue *pTarget, ahm::PropertyValue *pSource) {
    if(isRect(pTarget) && isRect(pSource)) {
        // same types!
        if( pTarget->derivedType() == ahm::PropertyValue::TYPE_RECT
                && pSource->derivedType() == ahm::PropertyValue::TYPE_RECT)
        {
            ahm::PropertyValueRect* pSourceRect =  (ahm::PropertyValueRect* ) pSource;
            ahm::PropertyValueRect* pTargetRect =  (ahm::PropertyValueRect* ) pTarget;
            copy_scalar(pTargetRect->left(), pSourceRect->left());
            copy_scalar(pTargetRect->top(), pSourceRect->top());
            copy_scalar(pTargetRect->right(), pSourceRect->right());
            copy_scalar(pTargetRect->bottom(), pSourceRect->bottom());
        }
        else if( pTarget->derivedType() == ahm::PropertyValue::TYPE_FLOAT_RECT
                 && pSource->derivedType() == ahm::PropertyValue::TYPE_FLOAT_RECT)
        {
            ahm::PropertyValueFloatRect* pSourceFloatRect =  (ahm::PropertyValueFloatRect* ) pSource;
            ahm::PropertyValueFloatRect* pTargetFloatRect =  (ahm::PropertyValueFloatRect* ) pTarget;
            ahm::FLOAT_RECT frect = {  0,0,0,0};
            pSourceFloatRect->getValue(frect);
            pTargetFloatRect->setValue(frect);
        }
        // different types
        else if( pTarget->derivedType() == ahm::PropertyValue::TYPE_RECT
                 && pSource->derivedType() == ahm::PropertyValue::TYPE_FLOAT_RECT)
        {
            ahm::PropertyValueFloatRect* pSourceFloatRect =  (ahm::PropertyValueFloatRect* ) pSource;
            ahm::PropertyValueRect* pTargetRect =  (ahm::PropertyValueRect* ) pTarget;
            ahm::FLOAT_RECT frect = {  0,0,0,0 };

            setFloat(pTargetRect->left(), frect.left);
            setFloat(pTargetRect->top(), frect.top);
            setFloat(pTargetRect->right(), frect.right);
            setFloat(pTargetRect->bottom(), frect.bottom);

        }

        else if( pTarget->derivedType() == ahm::PropertyValue::TYPE_FLOAT_RECT
                 && pSource->derivedType() == ahm::PropertyValue::TYPE_RECT)
        {
            ahm::PropertyValueRect* pSourceRect =  (ahm::PropertyValueRect* ) pSource;
            ahm::PropertyValueFloatRect* pTargetFloatRect =  (ahm::PropertyValueFloatRect* ) pTarget;
            ahm::FLOAT_RECT frect = {  0,0,0,0 };
            getFloat(frect.left, pSourceRect->left());
            getFloat(frect.top, pSourceRect->top());
            getFloat(frect.right, pSourceRect->right());
            getFloat(frect.bottom, pSourceRect->bottom());

            pTargetFloatRect->setValue(frect);

        }


    }
}
コード例 #2
0
ファイル: 测试Dlg.cpp プロジェクト: chenwp/shuax
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CPoint Button1(165,122);
	CPoint Button2(350,122);
	if (isRect(point,Button1))
	{
		crack();
	}
	if (isRect(point,Button2)) restore();
	SendMessage(WM_NCLBUTTONDOWN,(WPARAM)HTCAPTION,(LPARAM)HTCAPTION);
	CDialog::OnLButtonDown(nFlags, point);
}
SharedBuffer const* Region::getSharedBuffer(size_t* count) const {
    // We can get to the SharedBuffer of a Vector<Rect> because Rect has
    // a trivial destructor.
    SharedBuffer const* sb = SharedBuffer::bufferFromData(mStorage.array());
    if (count) {
        size_t numRects = isRect() ? 1 : mStorage.size() - 1;
        count[0] = numRects;
    }
    sb->acquire();
    return sb;
}
コード例 #4
0
void Region::unite(const Region& region)
{
    if (region.isEmpty())
        return;
    if (isRect() && m_bounds.contains(region.m_bounds))
        return;
    if (region.isRect() && region.m_bounds.contains(m_bounds)) {
        m_shape = region.m_shape;
        m_bounds = region.m_bounds;
        return;
    }
    // FIXME: We may want another way to construct a Region without doing this test when we expect it to be false.
    if (!isRect() && contains(region))
        return;

    Shape unitedShape = Shape::unionShapes(m_shape, region.m_shape);

    m_shape.swap(unitedShape);
    m_bounds.unite(region.m_bounds);
}
コード例 #5
0
ファイル: Region.cpp プロジェクト: Alberto96/frameworks_base
Region::const_iterator Region::end() const {
    return isRect() ? ((&mBounds) + 1) : (mStorage.array() + mStorage.size());
}
コード例 #6
0
ファイル: Region.cpp プロジェクト: Alberto96/frameworks_base
Region::const_iterator Region::begin() const {
    return isRect() ? &mBounds : mStorage.array();
}
コード例 #7
0
Region::const_iterator Region::end() const {
    size_t numRects = isRect() ? 1 : mStorage.size() - 1;
    return mStorage.array() + numRects;
}
コード例 #8
0
bool isRect(ahm::Property* pProperty) {
    return pProperty ? isRect(pProperty->value()) : false;
}