1418 end of the text. |
1418 end of the text. |
1419 @see CGraphicsContext::DrawText() */ |
1419 @see CGraphicsContext::DrawText() */ |
1420 { |
1420 { |
1421 iPimpl->WriteAnyPendingStateChanges(); |
1421 iPimpl->WriteAnyPendingStateChanges(); |
1422 TWsGcCmdDrawText printText(aPos,aBuf.Length()); |
1422 TWsGcCmdDrawText printText(aPos,aBuf.Length()); |
|
1423 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(printText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1423 WriteTextCommand(&printText,sizeof(printText),aBuf,EWsGcOpDrawText,EWsGcOpDrawTextPtr); |
1424 WriteTextCommand(&printText,sizeof(printText),aBuf,EWsGcOpDrawText,EWsGcOpDrawTextPtr); |
1424 } |
1425 } |
1425 |
1426 |
1426 EXPORT_C void CWindowGc::DrawText(const TDesC &aBuf,const TRect &aBox,TInt aBaselineOffset,TTextAlign aHoriz,TInt aLeftMrg) |
1427 EXPORT_C void CWindowGc::DrawText(const TDesC &aBuf,const TRect &aBox,TInt aBaselineOffset,TTextAlign aHoriz,TInt aLeftMrg) |
1427 /** Draws horizontal text within a cleared box. |
1428 /** Draws horizontal text within a cleared box. |
1450 if (aBuf.Size()<(TInt)(iBuffer->BufferSize()-sizeof(TWsCmdHeader)-sizeof(TWsGcCmdBoxTextOptimised2))) |
1451 if (aBuf.Size()<(TInt)(iBuffer->BufferSize()-sizeof(TWsCmdHeader)-sizeof(TWsGcCmdBoxTextOptimised2))) |
1451 { |
1452 { |
1452 if (aHoriz==ELeft && aLeftMrg==0) |
1453 if (aHoriz==ELeft && aLeftMrg==0) |
1453 { |
1454 { |
1454 TWsGcCmdBoxTextOptimised1 boxTextOpt1(aBox,aBaselineOffset,aBuf.Length()); |
1455 TWsGcCmdBoxTextOptimised1 boxTextOpt1(aBox,aBaselineOffset,aBuf.Length()); |
|
1456 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(boxTextOpt1))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1455 Write(&boxTextOpt1,sizeof(boxTextOpt1),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextOptimised1); |
1457 Write(&boxTextOpt1,sizeof(boxTextOpt1),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextOptimised1); |
1456 } |
1458 } |
1457 else |
1459 else |
1458 { |
1460 { |
1459 TWsGcCmdBoxTextOptimised2 boxTextOpt2(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length()); |
1461 TWsGcCmdBoxTextOptimised2 boxTextOpt2(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length()); |
|
1462 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(boxTextOpt2))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1460 Write(&boxTextOpt2,sizeof(boxTextOpt2),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextOptimised2); |
1463 Write(&boxTextOpt2,sizeof(boxTextOpt2),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextOptimised2); |
1461 } |
1464 } |
1462 } |
1465 } |
1463 else |
1466 else |
1464 { |
1467 { |
1465 TWsGcCmdBoxText boxText(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length(),iPimpl->iFont->TextWidthInPixels(aBuf)); |
1468 TWsGcCmdBoxText boxText(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length(),iPimpl->iFont->TextWidthInPixels(aBuf)); |
|
1469 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(boxText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1466 WriteTextCommand(&boxText,sizeof(boxText),aBuf,EWsGcOpDrawBoxText,EWsGcOpDrawBoxTextPtr); |
1470 WriteTextCommand(&boxText,sizeof(boxText),aBuf,EWsGcOpDrawBoxText,EWsGcOpDrawBoxTextPtr); |
1467 } |
1471 } |
1468 } |
1472 } |
1469 |
1473 |
1470 TInt CWindowGc::APIExDrawText(const TDesC& aBuf,const TTextParameters* aParam,const TPoint& aPos) |
1474 TInt CWindowGc::APIExDrawText(const TDesC& aBuf,const TTextParameters* aParam,const TPoint& aPos) |
1471 { |
1475 { |
1472 iPimpl->WriteAnyPendingStateChanges(); |
1476 iPimpl->WriteAnyPendingStateChanges(); |
1473 TWsGcCmdDrawTextInContext printTextInContext(aPos,aBuf.Length(),aParam->iStart,aParam->iEnd); |
1477 TWsGcCmdDrawTextInContext printTextInContext(aPos,aBuf.Length(),aParam->iStart,aParam->iEnd); |
|
1478 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(printTextInContext))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1474 WriteTextCommand(&printTextInContext,sizeof(printTextInContext),aBuf,EWsGcOpDrawTextInContext,EWsGcOpDrawTextInContextPtr); |
1479 WriteTextCommand(&printTextInContext,sizeof(printTextInContext),aBuf,EWsGcOpDrawTextInContext,EWsGcOpDrawTextInContextPtr); |
1475 return KErrNone; |
1480 return KErrNone; |
1476 } |
1481 } |
1477 |
1482 |
1478 TInt CWindowGc::APIExDrawText(const TDesC& aBuf,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TTextAlign aHoriz,TInt aLeftMrg) |
1483 TInt CWindowGc::APIExDrawText(const TDesC& aBuf,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TTextAlign aHoriz,TInt aLeftMrg) |
1481 if (aBuf.Size()<(TInt)(iBuffer->BufferSize()-sizeof(TWsCmdHeader)-sizeof(TWsGcCmdBoxTextInContextOptimised2))) |
1486 if (aBuf.Size()<(TInt)(iBuffer->BufferSize()-sizeof(TWsCmdHeader)-sizeof(TWsGcCmdBoxTextInContextOptimised2))) |
1482 { |
1487 { |
1483 if (aHoriz==ELeft && aLeftMrg==0) |
1488 if (aHoriz==ELeft && aLeftMrg==0) |
1484 { |
1489 { |
1485 TWsGcCmdBoxTextInContextOptimised1 boxTextOpt1(aBox,aBaselineOffset,aBuf.Length(),aParam->iStart,aParam->iEnd); |
1490 TWsGcCmdBoxTextInContextOptimised1 boxTextOpt1(aBox,aBaselineOffset,aBuf.Length(),aParam->iStart,aParam->iEnd); |
|
1491 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(boxTextOpt1))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1486 Write(&boxTextOpt1,sizeof(boxTextOpt1),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextInContextOptimised1); |
1492 Write(&boxTextOpt1,sizeof(boxTextOpt1),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextInContextOptimised1); |
1487 } |
1493 } |
1488 else |
1494 else |
1489 { |
1495 { |
1490 TWsGcCmdBoxTextInContextOptimised2 boxTextOpt2(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length(),aParam->iStart,aParam->iEnd); |
1496 TWsGcCmdBoxTextInContextOptimised2 boxTextOpt2(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length(),aParam->iStart,aParam->iEnd); |
|
1497 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(boxTextOpt2))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1491 Write(&boxTextOpt2,sizeof(boxTextOpt2),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextInContextOptimised2); |
1498 Write(&boxTextOpt2,sizeof(boxTextOpt2),aBuf.Ptr(),aBuf.Size(),EWsGcOpDrawBoxTextInContextOptimised2); |
1492 } |
1499 } |
1493 } |
1500 } |
1494 else |
1501 else |
1495 { |
1502 { |
1496 TWsGcCmdBoxTextInContext boxText(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length(),iPimpl->iFont->TextWidthInPixels(aBuf),aParam->iStart,aParam->iEnd); |
1503 TWsGcCmdBoxTextInContext boxText(aBox,aBaselineOffset,aHoriz,aLeftMrg,aBuf.Length(),iPimpl->iFont->TextWidthInPixels(aBuf),aParam->iStart,aParam->iEnd); |
|
1504 __ASSERT_ALWAYS(((aBuf.Size()+sizeof(boxText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1497 WriteTextCommand(&boxText,sizeof(boxText),aBuf,EWsGcOpDrawBoxTextInContext,EWsGcOpDrawBoxTextInContextPtr); |
1505 WriteTextCommand(&boxText,sizeof(boxText),aBuf,EWsGcOpDrawBoxTextInContext,EWsGcOpDrawBoxTextInContextPtr); |
1498 } |
1506 } |
1499 return KErrNone; |
1507 return KErrNone; |
1500 } |
1508 } |
1501 EXPORT_C void CWindowGc::DrawTextVertical(const TDesC& aText,const TPoint& aPos,TBool aUp) |
1509 EXPORT_C void CWindowGc::DrawTextVertical(const TDesC& aText,const TPoint& aPos,TBool aUp) |
1507 @param aPos Point of origin of the text baseline. |
1515 @param aPos Point of origin of the text baseline. |
1508 @param aUp Direction. ETrue for up, EFalse for down. */ |
1516 @param aUp Direction. ETrue for up, EFalse for down. */ |
1509 { |
1517 { |
1510 iPimpl->WriteAnyPendingStateChanges(); |
1518 iPimpl->WriteAnyPendingStateChanges(); |
1511 TWsGcCmdDrawTextVertical printText(aPos,aText.Length(),aUp); |
1519 TWsGcCmdDrawTextVertical printText(aPos,aText.Length(),aUp); |
|
1520 __ASSERT_ALWAYS(((aText.Size()+sizeof(printText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1512 WriteTextCommand(&printText,sizeof(printText),aText,EWsGcOpDrawTextVertical,EWsGcOpDrawTextVerticalPtr); |
1521 WriteTextCommand(&printText,sizeof(printText),aText,EWsGcOpDrawTextVertical,EWsGcOpDrawTextVerticalPtr); |
1513 } |
1522 } |
1514 |
1523 |
1515 EXPORT_C void CWindowGc::DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert,TInt aMargin) |
1524 EXPORT_C void CWindowGc::DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert,TInt aMargin) |
1516 /** Draws text vertically in the specified direction, within a box of the specified |
1525 /** Draws text vertically in the specified direction, within a box of the specified |
1533 boxText.up=aUp; |
1542 boxText.up=aUp; |
1534 boxText.vert=aVert; |
1543 boxText.vert=aVert; |
1535 boxText.margin=aMargin; |
1544 boxText.margin=aMargin; |
1536 boxText.length=aText.Length(); |
1545 boxText.length=aText.Length(); |
1537 boxText.width=iPimpl->iFont->TextWidthInPixels(aText); |
1546 boxText.width=iPimpl->iFont->TextWidthInPixels(aText); |
|
1547 __ASSERT_ALWAYS(((aText.Size()+sizeof(boxText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1538 WriteTextCommand(&boxText,sizeof(boxText),aText,EWsGcOpDrawBoxTextVertical,EWsGcOpDrawBoxTextVerticalPtr); |
1548 WriteTextCommand(&boxText,sizeof(boxText),aText,EWsGcOpDrawBoxTextVertical,EWsGcOpDrawBoxTextVerticalPtr); |
1539 } |
1549 } |
1540 |
1550 |
1541 TInt CWindowGc::APIExDrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TPoint& aPos,TBool aUp) |
1551 TInt CWindowGc::APIExDrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TPoint& aPos,TBool aUp) |
1542 { |
1552 { |
1543 iPimpl->WriteAnyPendingStateChanges(); |
1553 iPimpl->WriteAnyPendingStateChanges(); |
1544 TWsGcCmdDrawTextInContextVertical printText(aPos,aText.Length(),aUp,aParam->iStart,aParam->iEnd); |
1554 TWsGcCmdDrawTextInContextVertical printText(aPos,aText.Length(),aUp,aParam->iStart,aParam->iEnd); |
|
1555 __ASSERT_ALWAYS(((aText.Size()+sizeof(printText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1545 WriteTextCommand(&printText,sizeof(printText),aText,EWsGcOpDrawTextInContextVertical,EWsGcOpDrawTextInContextVerticalPtr); |
1556 WriteTextCommand(&printText,sizeof(printText),aText,EWsGcOpDrawTextInContextVertical,EWsGcOpDrawTextInContextVerticalPtr); |
1546 return KErrNone; |
1557 return KErrNone; |
1547 } |
1558 } |
1548 |
1559 |
1549 TInt CWindowGc::APIExDrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert,TInt aMargin) |
1560 TInt CWindowGc::APIExDrawTextVertical(const TDesC& aText,const TTextParameters* aParam,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert,TInt aMargin) |
1556 boxText.margin=aMargin; |
1567 boxText.margin=aMargin; |
1557 boxText.length=aText.Length(); |
1568 boxText.length=aText.Length(); |
1558 boxText.width=iPimpl->iFont->TextWidthInPixels(aText); |
1569 boxText.width=iPimpl->iFont->TextWidthInPixels(aText); |
1559 boxText.start = aParam->iStart; |
1570 boxText.start = aParam->iStart; |
1560 boxText.end = aParam->iEnd; |
1571 boxText.end = aParam->iEnd; |
|
1572 __ASSERT_ALWAYS(((aText.Size()+sizeof(boxText))<=EClientBufferMaxSize),Panic(EW32PanicSizeNotExpected)); |
1561 WriteTextCommand(&boxText,sizeof(boxText),aText,EWsGcOpDrawBoxTextInContextVertical,EWsGcOpDrawBoxTextInContextVerticalPtr); |
1573 WriteTextCommand(&boxText,sizeof(boxText),aText,EWsGcOpDrawBoxTextInContextVertical,EWsGcOpDrawBoxTextInContextVerticalPtr); |
1562 return KErrNone; |
1574 return KErrNone; |
1563 } |
1575 } |
1564 |
1576 |
1565 //========================Extra functions============================ |
1577 //========================Extra functions============================ |