This example creates a layout object then defines the values that need to be changed and uses the LayoutTransformText function to change them.
#include <layout.h> LAYOUT_OBJECT plh; UCHAR InpBuf[30]; UCHAR OutBuf[30]; UCHAR BidiLvl[30]; ULONG ToOutBuf[30]; ULONG ToInpBuf[30]; ULONG InpSize = 30 ; ULONG OutSize = 30 ; LAYOUT_VALUES layout[2]; LAYOUT_TEXT_DESCRIPTOR Descr; ULONG index; ULONG RC; RC= LayoutCreateObject (Locale_Arabic,&plh); /* or: Locale_Hebrew */ if (RC) { printf("Create Error! !!\n"); exit(0);} /* Define the LayoutValues that will need changing */ layout[0].name= TypeOfText|Orientation|Numerals|TextShaping; layout[0].value = &Descr ; /* using the OR operator, we set the bits in the Layout Descriptor, * to describe the input string attributes, it is RTL, contains * Arabic numerals, and it is in Base shapes */ Descr.in=TEXT_IMPLICIT|ORIENTATION_RTL|NUMERALS_NOMINAL|TEXT_NOMINAL; /* Now let's compose the Text Descriptor for the output string to be * LTR, Hindu numeral, and Shaped (Automatic Shape Determination) */ Descr.out=TEXT_VISUAL|ORIENTATION_LTR| NUMERALS_CONTEXTUAL|TEXT_SHAPED; layout[1].name = 0 ; /* Set the LayoutValues */ RC=LayoutSetValues (plh,layout,&index); /* calling the function.. to convert the string */ RC=LayoutTransformText (plh, InpBuf, &InpSize, OutBuf, &OutSize, ToOutBuf, ToInpBuf, BidiLvl); if (RC) { printf("Transform Error %d!!!\n",RC); exit(0);} RC = LayoutDestroyObject(plh); if (RC) { printf(" DESTROY Error!!!\n"); exit(0);}************************************************************