Segments in Computer Graphics

11 May, 2018
To view an entire image or a part of image with various attributes, we need to organize image information in a particular manner since existing structure of display file does not satisfy our requirements of viewing an image. To achieve this display, file is divided into Segments. Each segment corresponds to a component and is associated with a set of attributes and image transformation parameters like scaling, rotation. Presence of Segment allows :
Subdivision of picture.
Visualization of particular part of picture.
Scaling, rotation and translation of picture.
Types of Segments :
Posted Segment : When visible attribute of segment is set to 1, it is called Posted segment. This is included in active segment list.
Unposted Segment : When visible attribute of segment is set to 0, it is called Unposted segment. This is not included in active segment list.
Functions for Segmenting the display :
Segment Creation : Segment must be created or opened when no other segment is open, since two segments can’t be opened at the same time because it’s difficult to assign drawing instruction to particular segment. The segment created must be given a name to identify it which must be a valid one and there should be no segment with the same name. After this, we initialize items in segment table under our segment name and the first instruction of this segment is allocated at next free storage in display file and attributes of segments are initialized to default.Algorithm :If any segment is open, give error message : “Segment is still open” and go to step 8.Read the name of the new segment.If the segment name is not valid, give error message : “Segment name not a valid name” and go to step 8.If given segment name already exists, give error message : “Segment name already exists in name list” and go to step 8.Make next free storage area in display file as start of new segment.Initialize size of new segment to 0 and all its attributes to their default values.Inform that the new segment is now open.Stop.Closing a Segment : After completing entry of all display file instructions, the segment needs to be closed for which it has to be renamed, which is done by changing the name of currently open segment as 0. Now the segment with name 0 is open i.e. unnamed segment is open and if two unnamed segments are present in display file one needs to be deleted.Algorithm :If any segment is not open, give error message : “No segment is open now” and go to step 6.Change the name of currently opened segment to any unnamed segment, lets say 0.Delete any other unnamed segment instruction which may have been saved and initialize above unnamed segment with no instructions.Make the next free storage area available in display file as start of the unnamed segment.Initialize size of unnamed segment to 0.Stop.Deleting a Segment : To delete a particular segment from display file, we must just delete that one segment without destroying or reforming the entire display and recover space occupied by this segment. Use this space for some other segment. The method to achieve this depends upon the data structure used to represent display file. In case of arrays, the gap left by deleted segment is filled by shifting up all the segments following it.Algorithm :Read the name of the segment to be deleted.If segment name is not valid, give error message : “Segment name is not a valid name” and go to step 8.If the segment is open, give error message : “Can’t delete an open segment” and go to step 8.If size of segment is less than 0, no processing is required and go to step 8.The segments which follow the deleted segment are shifted by its size.Recover deleted space by resetting index of next free instruction.The starting position of shifted segments is adjusted by subtracting the size of deleted segment from it.Stop.Renaming a Segment : This is done to achieve Double Buffering i.e. the idea of storing two images, one to show and other to create, alter and for animation.Algorithm :If both old and new segment names are not valid, give error message : “Segment names are not valid names” and go to step 6.If any of two segments is open, give error message : “Segments are still open” and go to step 6.If new segment name given already exists in the display list, give error message : “Segment name already exists” and go to step 6.The old segment table entry are copied into new position.Delete the old segment.Stop.
Segment Creation : Segment must be created or opened when no other segment is open, since two segments can’t be opened at the same time because it’s difficult to assign drawing instruction to particular segment. The segment created must be given a name to identify it which must be a valid one and there should be no segment with the same name. After this, we initialize items in segment table under our segment name and the first instruction of this segment is allocated at next free storage in display file and attributes of segments are initialized to default.Algorithm :If any segment is open, give error message : “Segment is still open” and go to step 8.Read the name of the new segment.If the segment name is not valid, give error message : “Segment name not a valid name” and go to step 8.If given segment name already exists, give error message : “Segment name already exists in name list” and go to step 8.Make next free storage area in display file as start of new segment.Initialize size of new segment to 0 and all its attributes to their default values.Inform that the new segment is now open.Stop.
If any segment is open, give error message : “Segment is still open” and go to step 8.Read the name of the new segment.If the segment name is not valid, give error message : “Segment name not a valid name” and go to step 8.If given segment name already exists, give error message : “Segment name already exists in name list” and go to step 8.Make next free storage area in display file as start of new segment.Initialize size of new segment to 0 and all its attributes to their default values.Inform that the new segment is now open.Stop.
If any segment is open, give error message : “Segment is still open” and go to step 8.
Read the name of the new segment.
If the segment name is not valid, give error message : “Segment name not a valid name” and go to step 8.
If given segment name already exists, give error message : “Segment name already exists in name list” and go to step 8.
Make next free storage area in display file as start of new segment.
Initialize size of new segment to 0 and all its attributes to their default values.
Inform that the new segment is now open.
Stop.
Closing a Segment : After completing entry of all display file instructions, the segment needs to be closed for which it has to be renamed, which is done by changing the name of currently open segment as 0. Now the segment with name 0 is open i.e. unnamed segment is open and if two unnamed segments are present in display file one needs to be deleted.Algorithm :If any segment is not open, give error message : “No segment is open now” and go to step 6.Change the name of currently opened segment to any unnamed segment, lets say 0.Delete any other unnamed segment instruction which may have been saved and initialize above unnamed segment with no instructions.Make the next free storage area available in display file as start of the unnamed segment.Initialize size of unnamed segment to 0.Stop.
If any segment is not open, give error message : “No segment is open now” and go to step 6.Change the name of currently opened segment to any unnamed segment, lets say 0.Delete any other unnamed segment instruction which may have been saved and initialize above unnamed segment with no instructions.Make the next free storage area available in display file as start of the unnamed segment.Initialize size of unnamed segment to 0.Stop.
If any segment is not open, give error message : “No segment is open now” and go to step 6.
Change the name of currently opened segment to any unnamed segment, lets say 0.
Delete any other unnamed segment instruction which may have been saved and initialize above unnamed segment with no instructions.
Make the next free storage area available in display file as start of the unnamed segment.
Initialize size of unnamed segment to 0.
Stop.
Deleting a Segment : To delete a particular segment from display file, we must just delete that one segment without destroying or reforming the entire display and recover space occupied by this segment. Use this space for some other segment. The method to achieve this depends upon the data structure used to represent display file. In case of arrays, the gap left by deleted segment is filled by shifting up all the segments following it.Algorithm :Read the name of the segment to be deleted.If segment name is not valid, give error message : “Segment name is not a valid name” and go to step 8.If the segment is open, give error message : “Can’t delete an open segment” and go to step 8.If size of segment is less than 0, no processing is required and go to step 8.The segments which follow the deleted segment are shifted by its size.Recover deleted space by resetting index of next free instruction.The starting position of shifted segments is adjusted by subtracting the size of deleted segment from it.Stop.
Algorithm :
Read the name of the segment to be deleted.If segment name is not valid, give error message : “Segment name is not a valid name” and go to step 8.If the segment is open, give error message : “Can’t delete an open segment” and go to step 8.If size of segment is less than 0, no processing is required and go to step 8.The segments which follow the deleted segment are shifted by its size.Recover deleted space by resetting index of next free instruction.The starting position of shifted segments is adjusted by subtracting the size of deleted segment from it.Stop.
Read the name of the segment to be deleted.
If segment name is not valid, give error message : “Segment name is not a valid name” and go to step 8.
If the segment is open, give error message : “Can’t delete an open segment” and go to step 8.
If size of segment is less than 0, no processing is required and go to step 8.
The segments which follow the deleted segment are shifted by its size.
Recover deleted space by resetting index of next free instruction.
The starting position of shifted segments is adjusted by subtracting the size of deleted segment from it.
Stop.
Renaming a Segment : This is done to achieve Double Buffering i.e. the idea of storing two images, one to show and other to create, alter and for animation.Algorithm :If both old and new segment names are not valid, give error message : “Segment names are not valid names” and go to step 6.If any of two segments is open, give error message : “Segments are still open” and go to step 6.If new segment name given already exists in the display list, give error message : “Segment name already exists” and go to step 6.The old segment table entry are copied into new position.Delete the old segment.Stop.
If both old and new segment names are not valid, give error message : “Segment names are not valid names” and go to step 6.If any of two segments is open, give error message : “Segments are still open” and go to step 6.If new segment name given already exists in the display list, give error message : “Segment name already exists” and go to step 6.The old segment table entry are copied into new position.Delete the old segment.Stop.
If both old and new segment names are not valid, give error message : “Segment names are not valid names” and go to step 6.
If any of two segments is open, give error message : “Segments are still open” and go to step 6.
If new segment name given already exists in the display list, give error message : “Segment name already exists” and go to step 6.
The old segment table entry are copied into new position.
Delete the old segment.
Stop.
Advantages of using segmented display :
Segmentation allows to organize display files in sub-picture structure.
It allows to apply different set of attributes to different portions of image.
It makes it easier to the picture by changing/replacing segments.
It allows application of transformation on selective portions of image.
computer-graphics
Advanced Computer Subject
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.