/* ciitest.c * Copyright Ó 1990, 1993 by Xerox Corporation. All rights reserved. * Michael Plass, December 26, 1990 8:50:37 am PST */ #include "cii.h" #include "cii_matrix.h" #define NIL ((void*)0); CII_RES Shape1(CII_PathGenerator self, CII_PathSink sink) { CII_RectangleRep* rect = self->data; CII_VectorRep p; CII_VectorRep c[3]; p.x = rect->x; p.y = rect->y; CII_MoveTo(sink, &p); c[0].x = rect->x; c[0].y = rect->y + rect->h; c[1].x = rect->x + rect->w; c[1].y = rect->y + rect->h; c[2].x = rect->x + rect->w; c[2].y = rect->y; CII_CurveTo(sink, c); return(CII_RES_ok); } CII_RES HardChar(CII_Handle h, struct CII_ShowArgs* s) { return (CII_DoHardChar(h, s)); } CII_RES HardMetrics40(CII_Handle h, struct CII_ShowArgs* s, CII_MaskInfo* m) { s->cp.y = s->cp.y + 40.0; return (CII_RES_ok); } void TextExample(CII_Handle dev) { CII_ShowArgs showArgs; float m[6]; float ct[6]; CII_VectorRep scale = {30.0, 42.0}; CII_VectorRep p0 = {40.0, 200.0}; CII_CharCode chars[5] = {'H','e','l','l','o'}; CII_Font font; CII_Font mfont; float black = 0.0; CII_GetMatrix(dev, ct); CIU_MakeScale(1.0, m); CIU_ApplyPreScale2(scale.x, scale.y, m); CII_FindFont(dev, "xerox/ps/garamond-bolditalic", &font); CII_ModifyFont(dev, font, m, &mfont); CII_MakeFontAtom(dev, mfont, ct, &showArgs.fontAtom); CII_DestroyFont(dev, mfont); showArgs.easyMetrics = CII_ALL_EASY_METRICS; showArgs.noImage = 0; showArgs.hardChar = &HardChar; showArgs.hardMetrics = &HardMetrics40; CIU_TransformPoint(&p0, ct, &(showArgs.cp)); showArgs.start = 0; showArgs.end = 5; showArgs.characters = chars; showArgs.clientData = (void*)0; CII_Show(dev, &showArgs); showArgs.easyMetrics = CII_NONE_EASY_METRICS; showArgs.start = 0; CII_Show(dev, &showArgs); showArgs.hardChar = dev->DoHardChar; showArgs.hardMetrics = dev->DoHardMetrics; showArgs.start = 0; CII_Show(dev, &showArgs); CII_ModifyFont(dev, font, m, &mfont); CII_DestroyFont(dev, showArgs.fontAtom); CII_MakeFontAtom(dev, mfont, ct, &(showArgs.fontAtom)); showArgs.start = 0; CIU_TransformPoint(&p0, ct, &(showArgs.cp)); CII_SetGray(dev, &black); CII_Show(dev, &showArgs); CII_DestroyFont(dev, showArgs.fontAtom); CII_DestroyFont(dev, mfont); CII_DestroyFont(dev, font); } void XR_run_ciitest() { CII_Handle dev = (CII_Handle)CII_TestDevice(); CII_RectangleRep rect1 = {50.0, 100.0, 3.0, 100.0}; CII_RectangleRep rect2 = {2.0, 150.0, 100.0, 3.0}; CII_RectangleRep rect3 = {2.0, 100.0, 100.0, 100.0}; CII_StrokeControlRep stroke1 = CII_INITIALSTROKECONTROL; float pattern[1] = {13.0}; CII_PathGeneratorObjectRep shape1; float red[3] = {1.,0.,0.}; float green[3] = {0.,1.,0.}; float blue[3] = {0.,0.,1.}; float lightblue[3] = {0.6,0.6,1.}; float gray = 0.75; float t[6]; CII_GetInitialMatrix(dev, t); CII_SetMatrix(dev, t); CII_SetRGB(dev, blue); shape1.GeneratePath = &Shape1; shape1.data = &rect3; CII_MaskFill(dev, &shape1, CII_NONZERO_FILL); CII_SetRGB(dev, green); rect3.x = rect3.x + 100.0; CII_MaskFill(dev, &shape1, CII_NONZERO_FILL); CII_SetRGB(dev, red); rect3.x = rect3.x + 100.0; CII_MaskFill(dev, &shape1, CII_NONZERO_FILL); CII_SetRGB(dev, red); CII_MaskRectangle(dev, &rect1); CII_SetRGB(dev, green); CII_MaskRectangle(dev, &rect2); CII_SetRGB(dev, blue); stroke1.strokeType = CII_OPEN_STROKE; stroke1.end = CII_BUTT_END; stroke1.joint = CII_ROUND_JOINT; stroke1.strokeWidth = 8.0; stroke1.dashCount = 1; stroke1.dashArray = pattern; stroke1.dashOffset = 6.5; stroke1.dashCorrectLength = 208.0; CII_MaskStroke(dev, &shape1, &stroke1); CII_SetRGB(dev, lightblue); CII_MaskDeviceTrapezoid(dev, /* int sMin */ 300, /* int fMin */ 200, /* int sMax */ 700, /* int fMax */ 500, /* CII_Scaled f0 */ 200 << 16, /* CII_Scaled df0 */ (((int)(250-200)) << 16)/(700-300-1), /* CII_Scaled f1 */ 500 << 16, /* CII_Scaled df1 */ (((int)(400-500)) << 16)/(700-300-1) ); #ifdef MASKT CII_MaskDeviceTrapezoid(dev, 700, 800, 250, 400, 300, 300); #endif CII_SetGray(dev, &gray); TextExample(dev); CII_Destroy(dev); }