コード例 #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
ファイル: data.c プロジェクト: amba/pdfout
pdfout_data *
pdfout_data_copy (fz_context *ctx, pdfout_data *data)
{
  if (pdfout_data_is_scalar (ctx, data))
    return copy_scalar (ctx, data);
  else if (pdfout_data_is_hash (ctx, data))
    return copy_hash (ctx, data);
  else if (pdfout_data_is_array (ctx, data))
    return copy_array (ctx, data);
  else
    abort ();
}
コード例 #3
0
int
handle_scalar(struct streamstate* stp)
{
    struct mapping*  map = stp->curmap;
    struct keyvalue* kv  = stp->curkv;
    if (kv) 
    {
        /*
         * this scalar is the value for current keyvalue
         */
        kv->type         = KV_SCALAR;
        kv->scalar       = copy_scalar(stp);
        if (! kv->scalar)
            return 1;
        kv->valuemark    = stp->event.start_mark;
        stp->curkv       = NULL;
    } 
    else 
    {
        /*
         * this scalar is the name of a new keyvalue pair
         */
        if (stp->event.data.scalar.length > MAX_KEYLEN) 
        {
            snprintf(stp->errbuf, sizeof(stp->errbuf), 
					 "%s:%zu:%zu:key name exceeds maximum length %d",
                     stp->filename, stp->event.start_mark.line+1, stp->event.start_mark.column+1, MAX_KEYLEN);
            return 1;
        }
        kv = stp->curkv  = map->kvlist = new_keyvalue(stp, map->kvlist);
        if (! kv)
            return 1;
        kv->key          = copy_scalar(stp);
        if (! kv->key)
            return 1;
        kv->keymark      = stp->event.start_mark;
    }
    return 0;
}
コード例 #4
0
void setRectValues(ahm::PropertyValue *pTarget, ahm::PropertyValue* pSourceLeft, ahm::PropertyValue* pSourceTop, ahm::PropertyValue* pSourceRight, ahm::PropertyValue* pSourceBottom) {

    if(pTarget) {
        if(pTarget->derivedType() == ahm::PropertyValue::TYPE_RECT) {
            ahm::PropertyValueRect *pTargetRect  = (ahm::PropertyValueRect *) pTarget;
            copy_scalar(pTargetRect->left(), pSourceLeft);
            copy_scalar(pTargetRect->top(), pSourceTop);
            copy_scalar(pTargetRect->right(), pSourceRight);
            copy_scalar(pTargetRect->bottom(), pSourceBottom);
        }
        else  if(pTarget->derivedType() == ahm::PropertyValue::TYPE_FLOAT_RECT) {
            ahm::PropertyValueFloatRect *pTargetRect  = (ahm::PropertyValueFloatRect *) pTarget;
            ahm::FLOAT_RECT frect = {0,0,0,0 };
            getFloat(frect.left, pSourceLeft);
            getFloat(frect.top, pSourceTop);
            getFloat(frect.right, pSourceRight);
            getFloat(frect.bottom, pSourceBottom);

            // change
            pTargetRect->setValue(frect);
        }
    }
}