1. Field of the Invention
The present invention relates to image processing of rendering a stroke formed by a plurality of continuative paths.
2. Description of the Related Art
Generally, when rendering a stroke having a line width, a round type, bevel type, or miter type is used as a modification method of filling a gap at a connection point. A round type, square type, or butt type is used as a modification method for a start point and terminal point serving as the end points of a stroke.
Japanese Patent Laid-Open No. 06-168339 discloses a method of generating a figure at a gap and performing fill processing in order to fill the gap at a connection point. Japanese Patent Laid-Open No. 11-015985 discloses a method of slightly superimposing and rendering two strokes sharing a connection point, and a figure filling a gap at the connection point, so as not to generate a gap between them owing to a calculation error.
However, the gap shape changes depending on the connection point. According to the above-described methods, a figure for filling a gap needs to be generated for each connection point. When rendering a path having many connection points, the calculation cost rises. If many figures for small gaps are generated and held, the memory utilization increases.
In one aspect, an image processing apparatus for rendering a stroke formed by a plurality of continuative paths, comprising: a first obtaining unit configured to obtain shape information representing a shape of a path; a second obtaining unit configured to obtain end-point information representing a modification method for an end point of the stroke; a third obtaining unit configured to obtain connection-point information representing a modification method for a connection point of the stroke; and a generation unit configured to generate stencil data of the stroke based on the shape information, the connection-point information, and the end-point information.
According to the aspect, when rendering a stroke formed by a plurality of continuative paths, a stroke having a modified connection point and end point can be rendered quickly.
Further features of the present invention will become apparent from the following description of exemplary embodiments with reference to the attached drawings.
Vector graphics rendering as image processing according to an embodiment of the present invention will now be described in detail with reference to the accompanying drawings. Note that the embodiment is not intended to limit the present invention to the scope of the appended claims, and not all combinations of arrangements described in the following embodiment are indispensable for the means to solve the problems according to the present invention.
[Apparatus Arrangement]
The arrangement of a computer apparatus 101 which implements an image processing apparatus for executing vector graphics rendering processing according to the embodiment will be explained with reference to the block diagram of
Referring to
A graphics accelerator 108 includes a video interface such as HDMI® or DisplayPort™, and displays graphics and a user interface (UI) on a connected monitor 109. A general-purpose interface (I/F) 106 is, for example, a USB (Universal Serial Bus) interface, and an input device 107 such as a keyboard or mouse is connected to the general-purpose I/F 106. A network I/F 110 is connected to a wired or wireless network 111.
The storage unit 105 is, for example, a hard disk drive (HDD) or solid state disk (SSD), and stores various programs and various parameters including a program for vector graphics rendering processing according to the embodiment. The storage unit 105 may be a recording medium such as a USB memory connectable to the general-purpose I/F 106, or a memory card readable/writable through a card reader connected to the general-purpose I/F 106. The storage unit 105 may be a network device connected to the network I/F 110 through the network 111.
When the computer apparatus 101 is, for example, a tablet device, the monitor 109 including a touch panel equivalent to the input device 107 is integrated with the computer apparatus 101.
When vector graphics rendering is designated through the UI and input device 107, the CPU 102 activates the program for vector graphics rendering processing, and executes vector graphics rendering processing to render a stroke which is formed by a plurality of continuative paths and has a predetermined line width.
[Vector Graphics Rendering Processing]
The processing arrangement of the image processing apparatus in vector graphics rendering processing will be explained with reference to the block diagram of
A path shape obtaining unit 201 obtains, from the RAM 103, information (to be referred to as “shape information” hereinafter) representing the shape of a path (S301). The shape information of the path includes information in which a plurality of pairs each of a path command and coordinate value are aligned in the designation order.
The relationship between a stroke, and a path command example included in shape information of a path that is obtained by the path shape obtaining unit 201 will be explained with reference to
Then, a line-width information obtaining unit 202 obtains, from the RAM 103, information (to be referred to as “line-width information” hereinafter) representing the line width of a stroke corresponding to the path (S302), and determines whether the line width is 0 (S303). If the line width is 0, the stroke need not be rendered, and the processing for one path ends. If no line-width information is stored in the RAM 103, the line-width information obtaining unit 202 obtains line-width information of an initial value from the storage unit 105 or the like.
If the line width >0, a color information obtaining unit 205 obtains, from the RAM 103, information (to be referred to as “color information” hereinafter) representing the color of the stroke corresponding to the path (S304), and determines whether the transparency included in the color information indicates transparence (S305). If the transparency indicates transparence, the stroke need not be rendered, and the processing for one path ends. If no color information is stored in the RAM 103, the color information obtaining unit 205 obtains color information of an initial value from the storage unit 105 or the like.
If the transparency does not indicate transparence, an end-point information obtaining unit 203 obtains, from the RAM 103, information (to be referred to as “end-point information” hereinafter) representing a stroke modification method at the start point and terminal point of the path (S306). If no end-point information is stored in the RAM 103, the end-point information obtaining unit 203 obtains end-point information of an initial value from the storage unit 105 or the like.
The type of modification method will be explained with reference to
As for the modification method for an end point, different modification methods can be designated for the start point and terminal point of a path in some cases, or the same modification method needs to be designated for the start point and terminal point in other cases.
After that, a connection-point information obtaining unit 204 obtains information (to be referred to as “connection-point information” hereinafter) representing a modification method at the connection point of the stroke (S307).
“Bevel” shown in
The modification method for a connection point can be designated for each connection point in some cases, and one modification method needs to be designated for one path in other cases. When the miter is designated and the angle formed by strokes at a connection point is small, the distal end of the stroke becomes very long. To prevent such extension of a stroke at the distal end, when the angle formed by strokes is small, processing of changing the modification method to the bevel is sometimes performed.
Then, a stroke stencil generation unit 206 generates stencil data of the stroke in a stencil buffer based on the shape information, line-width information, end-point information, and connection-point information (S308), details of which will be described later. Note that the stencil buffer is allocated in a predetermined area of the RAM 103.
A color buffer change unit 207 changes a color buffer based on the generated stencil data and the color information obtained by the color information obtaining unit 205 (S309), details of which will be described later. The processing for one path then ends. Note that the color buffer is allocated in a predetermined area of the RAM 103.
In the above-described example, a data file stored in the storage unit 105 is loaded into the RAM 103, and various kinds of information are obtained from the RAM 103. However, various kinds of information may be obtained through a UI and the input device 107.
[Stencil Creation Processing]
The stencil data creation processing (S308) will be explained with reference to the flowchart of
A basic-stroke stencil generation unit 2061 generates, as basic stencil data (
After that, a connection-point stencil generation unit 2063 determines, for all connection points, whether the angle formed by strokes at a connection point is 180°. If the angle is not 180°, the connection-point stencil generation unit 2063 generates connection-point stencil data, and merges it into the basic stencil data (S604 to S607). When one or both of strokes sharing a connection point have curve commands, tangents at the end points of the curve commands are used to calculate an angle. In an example of path commands shown in
An end-point stencil generation unit 2062 determines which of an open path and closed path is the path (S608). For example, path commands shown in
If it is determined that the path is a closed path, the end-point stencil generation unit 2062 determines whether the modification method for an end point is the butt (S609). If the butt is designated as the modification method for an end point, no end-point stencil data need be generated, and the end-point stencil generation unit 2062 ends the stencil data generation processing. If a method other than the butt is designated as the modification method for an end point, the end-point stencil generation unit 2062 generates end-point stencil data for the start point and terminal point of the path, and merges the end-point stencil data into the basic stencil data (S610 to S612).
Connection-Point Stencil Generation Unit
Details of the processing by the connection-point stencil generation unit 2063 will be explained with reference to the flowchart of
The connection-point stencil generation unit 2063 determines a modification method for a connection point of interest (S901). If the modification method is the round, the connection-point stencil generation unit 2063 determines whether the connection-point stencil shape of the round has already been generated and saved in the RAM 103 (S902). If the connection-point stencil shape has already been generated, the connection-point stencil generation unit 2063 obtains the connection-point stencil shape from the RAM 103 (S903), and advances the process to step S911.
If the connection-point stencil shape has not been generated yet, the connection-point stencil generation unit 2063 generates the connection-point stencil shape of the round (S904), saves the generated stencil shape in a predetermined area of the RAM 103 (S905), and advances the process to step S911. At the time of saving, the modification method and the line width of the stroke are associated with the connection-point stencil shape, as generation parameters of the connection-point stencil shape. That is, in step S902, it is determined whether a desired connection-point stencil shape has been saved based on the modification method and the line width of the stroke.
In the path commands shown in
When the round is designated as the modification method for a connection point, the inside of a circle having the same size at all the connection points of one path serves as a connection-point stencil shape. That is, once a circle is generated as a connection-point stencil shape, it suffices to copy this circle at other connection points.
Similarly, even if the modification method is the miter, the connection-point stencil generation unit 2063 determines whether the connection-point stencil shape of the miter has already been generated and saved in the RAM 103 (S906). If the connection-point stencil shape has already been generated, the connection-point stencil generation unit 2063 obtains the connection-point stencil shape from the RAM 103 (S906). If the connection-point stencil shape has not been generated yet, the connection-point stencil generation unit 2063 generates the connection-point stencil shape of the miter (S907), and saves the generated stencil shape in a predetermined area of the RAM 103 in association with generation parameters (S908).
As the connection-point stencil shape of the miter, the connection-point stencil generation unit 2063 generates a square, the length of one side of which is the line width. The sides of the square are parallel to the X- and Y-axes, and the center of the square is the origin of the X- and Y-axes (
Then, the connection-point stencil generation unit 2063 deforms the connection-point stencil shape (square) in accordance with a connection point (S909). Letting φ be the angle formed by strokes at a connection point, the square is enlarged by (1/sin φ) in the X-axis direction, and shear processing is performed at the angle φ in the horizontal direction (rhombus in
After the end of obtaining or generating (and deforming) the connection-point stencil shape, the connection-point stencil generation unit 2063 stores, as stencil data in the stencil buffer, a union of the connection-point stencil shape data and basic stencil data (S910). In other words, stencil data is generated by merging the connection-point stencil shape data into the basic stencil data.
End-Point Stencil Generation Unit
In the path commands shown in
When a path is a composite path formed from a plurality of sub-paths, the same processing is performed at the start point and terminal point of each sub-path.
Even when the square is designated as the modification method for an end point, the processing can be performed similarly. The end-point stencil generation unit 2062 generates a square, the length of one side of which is the line width. The sides of the square are parallel to the X- and Y-axes, and the center of the square is the origin of the X- and Y-axes. Then, the square is rotated in accordance with the slope of the stroke at the end point. Further, the square is translated so that the center of the square coincides with the end point.
Another Stencil Creation Processing
In the above-described example, a method of calculating a rectangle by fatting each stroke is used to generate basic stencil data. However, depending on hardware for processing a rendering instruction, the speed is sometimes increased using another method. As this hardware, the graphics accelerator 108 including a graphics processing unit (GPU) is usable.
A stencil data generation method using OpenGL® hardware will be explained with reference to the flowchart of
First, the four vertices of a rectangle when a stroke is fatted are obtained for each stroke, and a vertex list in which vertices A′, A″, B′, B″, C′, C″, D′, and D″ are aligned in order is created (see
Then, GL_TRIANGLE_STRIP is designated as a rendering mode (S702). This rendering mode is a mode in which when vertices V0, V1, V2, V3, V4, . . . , Vn are given, the insides of triangles V0V2V2V, V2V3V4, . . . , Vn-2Vn-1Vn are filled. As a result, basic stencil data in which modification processing for a connection point is the bevel, and modification processing for an end point is the butt is generated (see
Then, it is determined whether the bevel is designated as the modification method for a connection point (S703). If the bevel is designated, modification data for the connection point has already been generated in basic stencil data, and modification processing for the connection point is skipped, and the process advances to step S704. If a method other than the bevel is designated as the modification method for a connection point, the same modification processing for a connection point (S604 to S607) as that in
Similarly to the processing in
When OpenGL® hardware is used, vertex information is stored in the video RAM (VRAM) of the GPU, and the vertex buffer object function is usable. By using this function to arrange stencil shapes at an end point and connection point, higher-speed processing is expected while preventing transmission of vertex coordinates from the CPU to the GPU.
[Stencil Buffer and Color Buffer]
Assume that a stencil area 803 is set in the stencil buffer 801, as shown in
When a stroke stencil area 806 is set, as shown in
When obtained color information represents a gradation, if the inclusive
Affine Transformation
The same processing as that described above is possible even in stroke rendering accompanied by two-dimensional affine transformation. If shear processing or the like is applied in two-dimensional affine transformation, the shape of a fatted stroke may become not a rectangle but a parallelogram, and the thickness may not be uniform. If the same two-dimensional affine transformation is applied to a connection-point stencil shape and end-point stencil shape serving as figures used to generate connection-point stencil data and end-point stencil data in modification processing at a connection point and end point, the same processing as that described above becomes possible.
In this case, a transformation information obtaining unit 208 shown in
Especially when the round is designated as the modification method for a connection point or end point, a circle whose radius is a length corresponding to half the line width undergoes two-dimensional affine transformation to generate an ellipse, and this ellipse is arranged at an end point or connection point, thereby generating stencil data of the connection point or end point.
Processing of generating stencil data of a stroke accompanied by two-dimensional affine transformation will be explained with reference to
When a shear deformation at −20° in the X-axis direction is applied to the basic stencil data 1002 shown in
When the modification method for a connection point and the modification method for an end point are the round, a circle whose radius is a length corresponding to half the line width is generated, and the inside of the circle is saved as a stencil shape in the RAM 103. Then, this stencil shape is arranged at connection points and end points, as shown in
Although line segment commands have been explained above as path commands, the above-described processing is applicable even to a path including curve commands.
In the path commands shown in
The processes in steps S302 and S303 of
The process in step S305 of
In this manner, a stroke having a modified connection point and end point can be rendered quickly.
Embodiments of the present invention can also be realized by a computer of a system or apparatus that reads out and executes computer executable instructions recorded on a storage medium (e.g., non-transitory computer-readable storage medium) to perform the functions of one or more of the above-described embodiment(s) of the present invention, and by a method performed by the computer of the system or apparatus by, for example, reading out and executing the computer executable instructions from the storage medium to perform the functions of one or more of the above-described embodiment(s). The computer may comprise one or more of a central processing unit (CPU), micro processing unit (MPU), or other circuitry, and may include a network of separate computers or separate computer processors. The computer executable instructions may be provided to the computer, for example, from a network or the storage medium. The storage medium may include, for example, one or more of a hard disk, a random-access memory (RAM), a read only memory (ROM), a storage of distributed computing systems, an optical disk (such as a compact disc (CD), digital versatile disc (DVD), or Blu-ray Disc (BD)™), a flash memory device, a memory card, and the like.
While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures and functions.
This application claims the benefit of Japanese Patent Applications No. 2013-176076 filed Aug. 27, 2013 and No. 2014-096225 filed May 7, 2014 which are hereby incorporated by reference herein in their entirety.
Number | Date | Country | Kind |
---|---|---|---|
2013-176076 | Aug 2013 | JP | national |
2014-096225 | May 2014 | JP | national |