src/hbcore/effects/hbeffectopacity.cpp
changeset 5 627c4a0fd0e7
parent 1 f7ac710697a9
equal deleted inserted replaced
3:11d3954df52a 5:627c4a0fd0e7
    30 #include <QRectF>
    30 #include <QRectF>
    31 #include <QtDebug>
    31 #include <QtDebug>
    32 
    32 
    33 HbEffectOpacityAnimation::HbEffectOpacityAnimation(
    33 HbEffectOpacityAnimation::HbEffectOpacityAnimation(
    34     HbEffectGroup *group,
    34     HbEffectGroup *group,
    35     int duration ) :
    35     int duration) :
    36         HbEffectAnimation(group)
    36     HbEffectAnimation(group)
    37 {
    37 {
    38     setDuration(duration);
    38     setDuration(duration);
    39 }
    39 }
    40 
    40 
    41 void HbEffectOpacityAnimation::handleAnimationUpdate(const QVariant &value)
    41 void HbEffectOpacityAnimation::handleAnimationUpdate(const QVariant &value)
    53 
    53 
    54 HbEffectOpacity::HbEffectOpacity(
    54 HbEffectOpacity::HbEffectOpacity(
    55     const QList<HbEffectFxmlParamData> &data,
    55     const QList<HbEffectFxmlParamData> &data,
    56     QGraphicsItem *item,
    56     QGraphicsItem *item,
    57     HbEffectGroup *group) :
    57     HbEffectGroup *group) :
    58         HbEffectAbstract(0, item, group),
    58     HbEffectAbstract(0, item, group),
    59         mAnimation(0)
    59     mAnimation(0)
    60 {
    60 {
    61     // Default values of if something is not passed in FXML
    61     // Default values of if something is not passed in FXML
    62     mStartOpacity = 1.0f;
    62     mStartOpacity = 1.0f;
    63     mEndOpacity = 1.0f;
    63     mEndOpacity = 1.0f;
    64 
    64 
    68     QList<HbKeyFrame> keyFrameList;
    68     QList<HbKeyFrame> keyFrameList;
    69 
    69 
    70     const HbEffectFxmlParamData *opacityParam = 0;
    70     const HbEffectFxmlParamData *opacityParam = 0;
    71 
    71 
    72     // Handle FXML parameters
    72     // Handle FXML parameters
    73     Q_FOREACH(const HbEffectFxmlParamData &param, data) {
    73     Q_FOREACH(const HbEffectFxmlParamData & param, data) {
    74 	    if (param.name() == FXML_KEYWORD_OPACITY) {
    74         if (param.name() == FXML_KEYWORD_OPACITY) {
    75             keyFrameList = param.keyFrames();
    75             keyFrameList = param.keyFrames();
    76             HbEffectUtils::resolveFxmlDuration(duration, param);
    76             HbEffectUtils::resolveFxmlDuration(duration, param);
    77             HbEffectUtils::resolveFxmlCurveShape(curve, param);
    77             HbEffectUtils::resolveFxmlCurveShape(curve, param);
    78 
    78 
    79             // Get static value
    79             // Get static value
    80             param.getValue(mStartOpacity);
    80             param.getValue(mStartOpacity);
    81             mEndOpacity = mStartOpacity;
    81             mEndOpacity = mStartOpacity;
    82 
    82 
    83             opacityParam = &param;
    83             opacityParam = &param;
    84 	    }
    84         }
    85     }
    85     }
    86 
    86 
    87     if (duration > 0) {
    87     if (duration > 0) {
    88         mAnimation = new HbEffectOpacityAnimation(group, duration); 
    88         mAnimation = new HbEffectOpacityAnimation(group, duration);
    89 
    89 
    90         foreach( const HbKeyFrame &kf, keyFrameList ) {
    90         foreach(const HbKeyFrame & kf, keyFrameList) {
    91 	        if (HbEffectUtils::fuzzyIsNull(kf.pos)) {
    91             if (HbEffectUtils::fuzzyIsNull(kf.pos)) {
    92 		        // Start value 0.0 does not work so this trick fixes that.
    92                 // Start value 0.0 does not work so this trick fixes that.
    93                 mStartOpacity = kf.val + 0.0001f;
    93                 mStartOpacity = kf.val + 0.0001f;
    94 	        }
    94             } else if (HbEffectUtils::fuzzyIsOneOrGreater(kf.pos)) {
    95 	        else if (HbEffectUtils::fuzzyIsOneOrGreater(kf.pos)) {
    95                 mEndOpacity = kf.val;
    96 		        mEndOpacity = kf.val;
    96             }
    97 	        }
       
    98             // Set keyframe in animation
    97             // Set keyframe in animation
    99             else {
    98             else {
   100                 mAnimation->setKeyValueAt(kf.pos, QVariant(kf.val));
    99                 mAnimation->setKeyValueAt(kf.pos, QVariant(kf.val));
   101             }
   100             }
   102         }
   101         }