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