svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp
branchRCL_3
changeset 39 1902ade171ab
parent 38 db5c883ad1c5
equal deleted inserted replaced
38:db5c883ad1c5 39:1902ade171ab
    37     iPathHandleCount    = 0;
    37     iPathHandleCount    = 0;
    38     iEncodedData        = 0;
    38     iEncodedData        = 0;
    39     iHandle             = 1;
    39     iHandle             = 1;
    40     iCommonHeaderLength = 0;
    40     iCommonHeaderLength = 0;
    41     iCommonHeader = 0;
    41     iCommonHeader = 0;
       
    42     iVgErrorCode = VG_NO_ERROR;
    42     }
    43     }
    43 
    44 
    44 CPseodoVGRendererImpl::~CPseodoVGRendererImpl()
    45 CPseodoVGRendererImpl::~CPseodoVGRendererImpl()
    45     {
    46     {
    46     delete iEncodedData;
    47     delete iEncodedData;
   230 #endif
   231 #endif
   231     }
   232     }
   232 
   233 
   233 TUint CPseodoVGRendererImpl::vgCreatePaint()
   234 TUint CPseodoVGRendererImpl::vgCreatePaint()
   234     {
   235     {
       
   236     if(iVgErrorCode != VG_NO_ERROR)
       
   237         return VG_INVALID_HANDLE;
       
   238     
   235     iHandle++;
   239     iHandle++;
   236     EncodeInt8(EvgCreatePaint);
   240     EncodeInt8(EvgCreatePaint);
   237     EncodeInt32(iHandle);
   241     EncodeInt32(iHandle);
   238 #ifdef VGRENDERER_LOG
   242 #ifdef VGRENDERER_LOG
   239     iLog.WriteFormat(_L("vgCreatePaint"));
   243     iLog.WriteFormat(_L("vgCreatePaint"));
   242     }
   246     }
   243 
   247 
   244 TUint CPseodoVGRendererImpl::vgCreatePath(TInt pathFormat, TInt datatype, TReal32 scale, TReal32 bias,
   248 TUint CPseodoVGRendererImpl::vgCreatePath(TInt pathFormat, TInt datatype, TReal32 scale, TReal32 bias,
   245         TInt segmentCapacityHint, TInt coordCapacityHint, TInt capabilities)
   249         TInt segmentCapacityHint, TInt coordCapacityHint, TInt capabilities)
   246     {
   250     {
       
   251     if(iVgErrorCode != VG_NO_ERROR)
       
   252         return VG_INVALID_HANDLE;
       
   253     
       
   254         
   247     iHandle++;
   255     iHandle++;
   248     EncodeInt8(EvgCreatePath);
   256     EncodeInt8(EvgCreatePath);
   249     EncodeInt32(pathFormat);
   257     EncodeInt32(pathFormat);
   250     EncodeInt8(datatype);
   258     EncodeInt8(datatype);
   251     EncodeReal32(scale);
   259     EncodeReal32(scale);
   381     EncodeInt8(EvgDrawPath);
   389     EncodeInt8(EvgDrawPath);
   382     EncodeInt32(path);
   390     EncodeInt32(path);
   383     EncodeInt16(capabilities);
   391     EncodeInt16(capabilities);
   384 
   392 
   385 #ifdef VGRENDERER_LOG
   393 #ifdef VGRENDERER_LOG
   386     LogvgDrawPath(paintModes,0);   
   394     LogvgDrawPath(path,0);   
   387 #endif
   395 #endif
   388 
   396 
   389     }
   397     }
   390 
   398 
   391 void CPseodoVGRendererImpl::vgClearPath(TUint path, TUint capabilities)
   399 void CPseodoVGRendererImpl::vgClearPath(TUint path, TUint capabilities)
   458     return KErrNone;
   466     return KErrNone;
   459     }
   467     }
   460 
   468 
   461 TUint CPseodoVGRendererImpl::vgCreateImage(TInt format, TInt width, TInt height, TInt allowedQuality)
   469 TUint CPseodoVGRendererImpl::vgCreateImage(TInt format, TInt width, TInt height, TInt allowedQuality)
   462     {
   470     {
       
   471     if(iVgErrorCode != VG_NO_ERROR)
       
   472         return VG_INVALID_HANDLE;
       
   473     
   463     iHandle++;
   474     iHandle++;
   464     EncodeInt8(EvgCreateImage);
   475     EncodeInt8(EvgCreateImage);
   465     EncodeInt32(format);
   476     EncodeInt32(format);
   466     EncodeInt32(width);
   477     EncodeInt32(width);
   467     EncodeInt32(height);
   478     EncodeInt32(height);
   468     EncodeInt8(allowedQuality);
   479     EncodeInt8(allowedQuality);
   469     EncodeInt32(iHandle);
   480     EncodeInt32(iHandle);
       
   481 #ifdef VGRENDERER_LOG
       
   482     iLog.WriteFormat(_L("vgcreateimage"));
       
   483 #endif
   470     return iHandle;
   484     return iHandle;
   471     }
   485     }
   472 
   486 
   473 void CPseodoVGRendererImpl::vgGetPixels(TUint /*dst*/, TInt /*dx*/, TInt /*dy*/, TInt /*sx*/, TInt /*sy*/, TInt /*width*/, TInt /*height*/)
   487 void CPseodoVGRendererImpl::vgGetPixels(TUint /*dst*/, TInt /*dx*/, TInt /*dy*/, TInt /*sx*/, TInt /*sy*/, TInt /*width*/, TInt /*height*/)
   474     {
   488     {
   477 
   491 
   478 void CPseodoVGRendererImpl::vgDrawImage(TUint image)
   492 void CPseodoVGRendererImpl::vgDrawImage(TUint image)
   479     {
   493     {
   480     EncodeInt8(EvgDrawImage);
   494     EncodeInt8(EvgDrawImage);
   481     EncodeInt32(image);
   495     EncodeInt32(image);
       
   496 #ifdef VGRENDERER_LOG
       
   497     iLog.WriteFormat(_L("vgdrawimage"));
       
   498 #endif
   482     }
   499     }
   483 
   500 
   484 void CPseodoVGRendererImpl::vgClearImage(TUint image, TInt x, TInt y, TInt width, TInt height)
   501 void CPseodoVGRendererImpl::vgClearImage(TUint image, TInt x, TInt y, TInt width, TInt height)
   485     {
   502     {
   486     EncodeInt8(EvgClearImage);
   503     EncodeInt8(EvgClearImage);
   487     EncodeInt32(image);
   504     EncodeInt32(image);
   488     EncodeInt32(x);
   505     EncodeInt32(x);
   489     EncodeInt32(y);
   506     EncodeInt32(y);
   490     EncodeInt32(width);
   507     EncodeInt32(width);
   491     EncodeInt32(height);
   508     EncodeInt32(height);
       
   509 #ifdef VGRENDERER_LOG
       
   510     iLog.WriteFormat(_L("vgclearimage"));
       
   511 #endif    
   492     }
   512     }
   493 
   513 
   494 void CPseodoVGRendererImpl::vgImageSubData(TUint image, const void * data, TInt dataStride,
   514 void CPseodoVGRendererImpl::vgImageSubData(TUint image, const void * data, TInt dataStride,
   495             TInt dataFormat, TInt x, TInt y, TInt width, TInt height)
   515             TInt dataFormat, TInt x, TInt y, TInt width, TInt height)
   496     {
   516     {
   621             } while( --height );
   641             } while( --height );
   622 
   642 
   623 
   643 
   624         EncodeData(dstData, dataLength);
   644         EncodeData(dstData, dataLength);
   625         delete [] dstData;
   645         delete [] dstData;
       
   646 #ifdef VGRENDERER_LOG
       
   647         iLog.WriteFormat(_L("vgimagesubdata"));
       
   648 #endif        
   626         }
   649         }
   627     else
   650     else
   628         {
   651         {
   629 
   652 
   630 #ifdef VGRENDERER_LOG
   653 #ifdef VGRENDERER_LOG
   646 
   669 
   647 void CPseodoVGRendererImpl::vgDestroyImage(TUint aHandle)
   670 void CPseodoVGRendererImpl::vgDestroyImage(TUint aHandle)
   648     {
   671     {
   649     EncodeInt8(EvgDestroyImage);
   672     EncodeInt8(EvgDestroyImage);
   650     EncodeInt32(aHandle);
   673     EncodeInt32(aHandle);
       
   674 #ifdef VGRENDERER_LOG
       
   675     iLog.WriteFormat(_L("vgdestroyimage"));
       
   676 #endif    
   651     }
   677     }
   652 
   678 
   653 void CPseodoVGRendererImpl::vgDestroyPaint(TUint /*aHandle*/)
   679 void CPseodoVGRendererImpl::vgDestroyPaint(TUint /*aHandle*/)
   654     {
   680     {
   655     //TODO
   681     //TODO
   665     //TODO
   691     //TODO
   666     }
   692     }
   667 
   693 
   668 TInt CPseodoVGRendererImpl::vgGetError()
   694 TInt CPseodoVGRendererImpl::vgGetError()
   669     {
   695     {
   670     //TODO
   696    return iVgErrorCode;
   671     return 0;
       
   672     }
   697     }
   673 
   698 
   674 MVGSurfaceImpl* CPseodoVGRendererImpl::CreateVGSurfaceL(TInt /*aOption*/)
   699 MVGSurfaceImpl* CPseodoVGRendererImpl::CreateVGSurfaceL(TInt /*aOption*/)
   675     {
   700     {
   676     return CPseudoVGSurfaceImpl::NewL(this);
   701     return CPseudoVGSurfaceImpl::NewL(this);
   706     return EncodeData(&aVal, sizeof(aVal));
   731     return EncodeData(&aVal, sizeof(aVal));
   707     }
   732     }
   708 
   733 
   709 TInt CPseodoVGRendererImpl::EncodeData(const TAny *aData, TUint aLength)
   734 TInt CPseodoVGRendererImpl::EncodeData(const TAny *aData, TUint aLength)
   710     {
   735     {
   711     TInt result = KErrNone;
   736 
   712     TPtr8 lPtr( iEncodedData->Des() );
   737     if(iVgErrorCode==VG_NO_ERROR)
   713     TInt encodedDataLength      = lPtr.Length() + aLength;
   738         {
   714     TInt encodedDataMaxLength   = lPtr.MaxLength();
   739         TInt result = KErrNone;
       
   740         TPtr8 lPtr( iEncodedData->Des() );
       
   741         TInt encodedDataLength      = lPtr.Length() + aLength;
       
   742         TInt encodedDataMaxLength   = lPtr.MaxLength();
   715 
   743 
   716     if (encodedDataLength >= encodedDataMaxLength)
   744     if (encodedDataLength >= encodedDataMaxLength)
   717         {
   745         {
   718         if ((result = ExpandEncodedData(encodedDataLength)) == KErrNone)
   746         if ((result = ExpandEncodedData(encodedDataLength)) == KErrNone)
   719             {
   747             {
   724     else
   752     else
   725         {
   753         {
   726         lPtr.Append((TUint8*)(aData), aLength);
   754         lPtr.Append((TUint8*)(aData), aLength);
   727         }
   755         }
   728 
   756 
   729     return result;
   757         return result;
       
   758         }
       
   759     else
       
   760         {
       
   761         return iVgErrorCode;
       
   762         }
   730     }
   763     }
   731 
   764 
   732 TInt CPseodoVGRendererImpl::ExpandEncodedData(TUint aNewLength)
   765 TInt CPseodoVGRendererImpl::ExpandEncodedData(TUint aNewLength)
   733     {
   766     {
   734     TInt result = KErrNone;
   767     TInt result = KErrNone;
   738     HBufC8 * tmpBuf = HBufC8::New(encodedDataMaxLength + granularities * CPseodoVGRendererImpl::ENCODEDDATAGRANULARITY);
   771     HBufC8 * tmpBuf = HBufC8::New(encodedDataMaxLength + granularities * CPseodoVGRendererImpl::ENCODEDDATAGRANULARITY);
   739 
   772 
   740     if (tmpBuf == 0)
   773     if (tmpBuf == 0)
   741         {
   774         {
   742         result = KErrNoMemory;
   775         result = KErrNoMemory;
       
   776         iVgErrorCode = VG_OUT_OF_MEMORY_ERROR;
   743         }
   777         }
   744 
   778 
   745     else
   779     else
   746         {
   780         {
   747         TPtr8 tmpBufPtr (tmpBuf->Des());
   781         TPtr8 tmpBufPtr (tmpBuf->Des());
   755     }
   789     }
   756 
   790 
   757 
   791 
   758 void CPseodoVGRendererImpl::EmptyEncodedData()
   792 void CPseodoVGRendererImpl::EmptyEncodedData()
   759     {
   793     {
       
   794     iVgErrorCode = VG_NO_ERROR;
       
   795     if(iEncodedData->Length() > CPseodoVGRendererImpl::ENCODEDDATALENGTH)
       
   796         {
       
   797         delete iEncodedData;    
       
   798         iEncodedData = HBufC8::New(CPseodoVGRendererImpl::ENCODEDDATALENGTH);
       
   799         if(!iEncodedData)
       
   800             {
       
   801             iVgErrorCode = VG_OUT_OF_MEMORY_ERROR;
       
   802             return;
       
   803             }
       
   804         }
   760     TPtr8 lPtr( iEncodedData->Des() );
   805     TPtr8 lPtr( iEncodedData->Des() );
   761     lPtr.Zero();
   806     lPtr.Zero();
   762     WriteHeader();
   807     WriteHeader();
   763 
   808 
   764 #ifdef VGRENDERER_LOG
   809 #ifdef VGRENDERER_LOG