370 likes | 477 Views
COMPUTER GRAPHICS. Prepared by S.MAHALAKSHMI Asst. Prof(Sr) / SCSE VIT University. Programming in SRGP. INTRO. Advantages of Raster Displays Fill areas with uniform color or repeated pattern with 2 or more colors.
E N D
COMPUTER GRAPHICS Prepared byS.MAHALAKSHMIAsst. Prof(Sr) / SCSEVIT University
INTRO • Advantages of Raster Displays • Fill areas with uniform color or repeated pattern with 2 or more colors. • Stores images which allows manipulation @ fine level : individual pixels can be read or written and arbitrary portions can be copied or moved.
SRGP(Simple Raster Graphics Package) • Device independent Graphics package • Similar to Macintosh QuickDraw Raster package and Xlib package of Windows system
SRGP (Continued..) • Drawing with SRGP • Basic Interaction Handling • Raster Graphics Features • Limitations of SRGP
1.Drawing with SRGP • 1.1 Specification of Graphics Primitives • 1.2 Attributes • 1.3 Filled primitives and attributes • 1.4 Saving and Restoring Attributes • 1.5Text
1.1 Specification of Graphics Primitives • Drawing in integer graphics package such as SRGP is like plotting graphs on graph paper with very fine grid • Grid varies from 80-120 points per inch to 300 or more on high resolution displays • (0,0)--> bottom left of the screen . +ve x increases towards right and +ve Y increases towards top
1.1 continued... • SRGP supports basic collections of primitives • Lines • Polygons • Circles • Ellipses • Text
Lines and Poly lines • Void SRGP_lineCoord(int x1, int y1, int x2, int y2); • eg: • SRGP_lineCoord(0,0,100,300) • (or) • void SRGP_line(point pt1,point pt2); • Point is a defined type, a record holding 2 integer x,y values • typedef struct • {int x,y; • }point;
Lines and Poly lines • A sequence of lines connecting successive vertices is called polyline. • There are 2 polyline procedures. These take array as parameter. • Void SRGP_polyLineCoord (int vertexcount, • int*xArray, int*yArray); • Void SRGP_polyLine(int vertexcount, point • *vertices);
continued.. • /* plot the axes*/ • SRGP_lineCoord(175,200,320,200); • SRGP_lineCoord(200,140,200,280); • /*plot the data*/ • SRGP_polyLineCoord (12 ,months, balanceOfTrade); • SRGP_polyLine(7, bowtieArray);
contiued.. • Markers and polymarkers • It is convenient to place markers(dots,asterisks or circles) at the data points on graphs. • Void SRGP_markerCoord(intx,inty); • Void SRGP_marker(point pt) • Void SRGP_polyMarkerCoord (int vertexcount, int*xArray, int*yArray); • Void SRGP_polyMarker(int vertexcount, point *vertices);
continued... • Polygons and Rectangles • --> To draw an outline polygon, we can either specify a polyline on itself by making the first and last vertices identical (or) we can use • void SRGP_polygon(int vertexCount, point *vertices) • Now bowtieArray is of only 6 points it automatically closes the figure.
Continued • Any rectangle can be specified as a polygon having 4 vertices. • Uses only 2 primitives(lower left & upper right) • Void SRGP_rectangleCoord(int leftx, intbottomY,int rightX, int topY); • Void SRGP_rectanglePt(point bottomLeft, point topRight); • void SRGP_rectangle(rectangle rect); • typedef struct{ point bottomLeft,topRight; • }rectangle;
Rectangles continued.. • Point SRGP_defPoint(intx,int y); • Rectangle SRGP_defRectangle(int leftX,int bottomY,int rightX, int topY);
Circles and Ellipses • Circles are Special types of ellipses. • The term ellipse arc used for circular,elliptical,closed or partial arcs. • It is easy to specify arcs via upright rectangles (bounding boxes or extents) • Void SRGP_ellipseArc(rectangle extentRect, float startAngle, float endAngle);
Circles and ellipses • Relationship between rectangular and circular angle is • Rectangular angle=arctan(tan(circularangle).width/height)+ • adjust • where the angles are in radians and • adjust = 0, for 0<= circular angle<∏/2 • adjust = ∏/2 , for ∏/2 <=circular angle < 3∏/2 • adjust = 2∏, for 3∏/2<= circular angle < 2∏
1.2 Attributes • The specification of a primitive can be controlled by specification of its attributes • Line style and Line width • Color • Penstyle • Attributes are global state variables that retain their values until they are changed explicitly • Void SRGP_setLineStyle(lineStyle CONTINUOUS / DASHED /DOTTED/….); • Void SRGP_setLineWidth(int widthValue);
Attributes.. • Each attribute has a default.. Eg., default for linestyle is CONTINUOUS that for line width is 1. • Line style can be represented as bit mask and it is scan converted by SRGP. • For eg.. Contimuous all 1’s • DASHED 1111001111001111…..
Attributes for marker primitive • Void SRGP_setMarkerSize(int sizeValue); • Void SRGP_setMarkerStyle(markerStyle MARKER_CIRCLE / MARKER_SQUARE/…); • The default is circle style • COLOR • bilevel system the color value is 0 and 1. • -1 black, 0 white for black on white devices • 1 green, 0 black for green on black devices
Attribute-color • The integer color attribute is an index to SRGP;s color table. Each entry defines color or gray scale value. • There are 2d entries and d is the depth of frame buffer • 2 methods to specify colors • 1. use integers 0 and 1 directly • 2. use color names supported by SRGP • We can also select color by calling • Void SRGP_setColor(int colorIndex)
1.3 Filled Primitives and Their Attributes • Primitives can be drawn in 2 ways • Outline • Filled • SRGP’s filled versions of area defining primitives draw the interior pixels with no outline
Odd Parity rule • We need a rule for specifying which regions are interior, and thus should be filled and which is exterior • This can done in SRGP through odd parity rule. • To check whether the region lies inside/ outside • Choose a test point • Choose a ray that starts at the test point extends indefinitely in any direction and does not pass any vertices. • If this ray intersect the polygon outline an odd no of times ->interior • else exterior
Fill style and fill pattern for areas • 4 ways • VoidSRGP_setFillStyle(drawStyle SOLID/ BITMAP_PATTERN_OPAQUE / BITMAP_PATTERN_TRANSPARENT/ PIXMAP_PATTERN); • There is no distinction in opaque & transparent in pix map patterns
Application screen background • Background color 0 bits in bitmap patterns used in opaque mode. • Suppose user expects the uniform screen background pattern then the application should set up the background in desired pattern. Default solid color 0 • Erase primitive is done by redraw them in the application background pattern.(Quick & dirty technique). This yield damaged image if primitives overlaps. • Damage repair is done by respecifying primitives in application data
1.4 Saving and restoring Attributes • Attributes can be saved for later restoration. • It does not affect the global attribute state. • SRGP does this attribute group via • void SRGP_inquireAttributes(attributeGroup * group); • void SRGP_setAttributes(attributeGroup * group);
1.5 Text • Specifying and implementing text drawing is always complex in graphics package. (style,font,bold,italic,width,spacing) • In SRGP text is horizontally aligned and character widths vary, but space b/w characters is constant. • High quality documents need specialized packages that offer more ctrl. • Eg. Post script • Text in SRGP is generated by • void SRGP_text(point origin, char *text);
1.5 Text continued.. • The location of text is ctrlled by specification of its origin/Anchor point • Text primitive’s appearance is determined by only 2 attributes (color and font) • void SRGP_setFont(int valueIndex) • Each character in the font is defined as rectangular bitmap. • SRGP draws a character by filling a rectangle using character bitmap as pattern in transparent mode.
Formatting text • Void SRGP_inquireTextExtent(Char*text, int *width, int * height, int *descent);
2.Basic Interaction Handling • Topics to be discussed • Human Factors • Logical Input Devices • Sampling versus Event driven Processing • Sample mode • Event mode • Pick correlation for Interaction Handling • Setting Device Measure and Attributes
2.1 Human Factors • Interaction style(look and feel) • Ease of learning and use • Guidelines for user computer interaction • Provide simple and Consistent interaction sequence • Do not overload the user with too many different options • Show the available options clearly • Give appropriate feedback • Allow the user ti recover gracefully from mistakes.
2.2 Logical Input Devices • Device types in SRGP • 2 logical input devices supported by SRGP • a) Locator • b) Keyboard • SRGP maps the logical devices to physical devices(eg locator to mouse, joystick, tablet….) • SRGP provides only one logical locator and one keyboard device