Abstract:
An image forming apparatus: upon determining that OR drawing of a first drawing object and a second drawing object included in received drawing data is not possible, drives one of a plurality of arithmetic processors to sequentially execute a first drawing process of the first drawing object and a second drawing process of the second drawing object in an original order of the first drawing object and the second drawing object in commands of the received drawing data; and, upon determining that the OR drawing is possible, distributes and assigns the first drawing process and the second drawing process to two or more of the plurality of arithmetic processors and drives the two or more arithmetic processors to execute the first drawing process and the second drawing process in parallel.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
       [0001]    This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2015-213007/filed on Oct. 29, 2015, the entire contents of which are incorporated herein by reference. 
       BACKGROUND 
       [0002]    1. Technical Field 
         [0003]    The disclosure relates to an image forming apparatus which performs drawing processing according to drawing commands of drawing data described in a page description language (PDL). 
         [0004]    2. Related Art 
         [0005]    In order to increase the speed of drawing processing in an image forming apparatus which receives drawing data described in a page description language (PDL) from a client, it is effective to generate multiple drawing instructions by dividing the drawing data and cause multiple processors to simultaneously process the multiple drawing instructions in parallel. 
         [0006]    Japanese Patent No. 4614389 proposes the following technique. The drawing data is divided into units of drawing objects. When there are drawing objects intersecting each other, the drawing instructions for these drawing objects are grouped and processed together. Meanwhile, when there are drawing objects not intersecting each other, the drawing instructions for these drawing objects are processed by separate processors in parallel. 
       SUMMARY 
       [0007]    In the proposal described above, the image forming apparatus performs the intersection determination of the drawing objects by analyzing the inputted drawing data. Accordingly, even when the drawing instructions are processed by multiple processors in parallel, the speed of the drawing processing cannot be sufficiently increased due to a large processing burden of the intersection determination performed before the processing of the drawing instructions. 
         [0008]    An object of the disclosure is to provide an image forming apparatus which can determine whether OR (logical addition) drawing of multiple drawing objects included in drawing data is possible without bearing a large processing burden. 
         [0009]    An image forming apparatus in accordance with some embodiments includes: a processor having a plurality of arithmetic processors; and a memory including instructions that, when executed by the processor, cause the processor to perform operations. The operations include: receiving drawing data described in a page description language and including commands for a first drawing object and a second drawing object; determining whether OR drawing of the first drawing object and the second drawing object is possible, based on contents of the commands of the received drawing data; upon determining that the OR drawing is not possible, driving one of the plurality of arithmetic processors to sequentially execute a first drawing process of the first drawing object and a second drawing process of the second drawing object in an original order of the first drawing object and the second drawing object in the commands of the received drawing data; and upon determining that the OR drawing is possible, distributing and assigning the first drawing process and the second drawing process to two or more of the plurality of arithmetic processors and driving the two or more arithmetic processors to execute the first drawing process and the second drawing process in parallel. 
         [0010]    In the configuration described above, the processor only needs to read the contents of the commands of the drawing data in the case of determining whether the OR drawing of the plurality of drawing objects included in the drawing data is possible, and does not have to analyze the read contents and bear a large processing burden. Accordingly, the processor can determine whether the OR drawing of the plurality of drawing objects included in the drawing data is possible without hearing a large processing burden. Hence, the processor can determine whether the OR drawing of the plurality of drawing objects included in the drawing data is possible without bearing the burden of a large processing amount, and increase the speed of the drawing processing for the plurality of drawing objects which can be subjected to the OR drawing, by dividing the drawing processes among the plurality of arithmetic processors and causing them to process the drawing processes in parallel. 
         [0011]    The commands may include status information indicating whether the OR drawing of the first drawing object and the second drawing object is possible. The operations may include determining whether the OR drawing of the first drawing object and the second drawing object is possible, based on the status information. 
         [0012]    In the configuration described above, when an output source of a print job of an image being a source of the drawing data generates data of the image by combining the plurality of drawing objects, the output source can determine whether the OR drawing of the drawing objects is possible based on the contents of the combination of the drawing objects and output the determination result by including the determination result in the print job as the status information. 
         [0013]    Accordingly, the processor can determine whether the OR drawing of the plurality of drawing objects included in the drawing data is possible only by reading the status information included in the commands of the drawing data generated from the inputted print job, without bearing a large processing burden. 
         [0014]    The commands may include drawing position information indicating a first drawing position of the first drawing object and a second drawing position of the second drawing object. The operations may include determining whether the OR drawing of the first drawing object and the second drawing object is possible, based on match or mismatch of the first drawing position and the second drawing position indicated in the drawing position information. 
         [0015]    In this case, when the plurality of drawing objects indicated by the commands include drawing objects at the same drawing position, changing the drawing order of the drawing objects at the same drawing position may cause changes in contents of an image formed by the drawing. 
         [0016]    In view of this, in the configuration described above, for example, when the processor recognizes that a plurality of drawing objects whose drawing positions match exist in the drawing data based on the drawing position information included in the commands of the drawing data, the processor determines that the OR drawing of the drawing objects indicated by the commands is impossible. Meanwhile, when the drawing positions of the drawing objects do not match at all (mismatch), the processor determines that the OR drawing of the drawing objects indicated by the commands is possible. 
         [0017]    Accordingly, the processor can determine whether the OR drawing of the drawing objects is possible based on matching or mismatching of the drawing positions of the drawing objects indicated in the drawing position information, without bearing a large processing burden. 
         [0018]    The operations may include, upon determining that the OR drawing is possible, assigning the first drawing process and the second drawing process to the two or more arithmetic processors such that a drawing process of the first drawing process and the second drawing process with a larger data amount is assigned to an arithmetic processor of the two or more arithmetic processors with a higher clock rate. 
         [0019]    In the configuration described above, when the data amounts of the plurality of drawing objects which can be subjected to the OR drawing vary, the drawing process of the drawing object with a larger data amount is preferentially assigned to the arithmetic processor with a higher clock rate and a faster processing speed. Hence, it is possible to increase efficiency of the speed increase achieved by performing the drawing processes for the plurality of drawing objects in parallel with the plurality of arithmetic processors. 
         [0020]    The first drawing object and the second drawing object may be drawing objects of different colors forming a color image. The operations may include, upon determining that the OR drawing is possible, assigning the first drawing process and the second drawing process to the two or more arithmetic processors such that a drawing process of the first drawing process and the second drawing process with a higher resolution is assigned to an arithmetic processor of the two or more arithmetic processors with a higher clock rate. 
         [0021]    In the configuration described above, when the plurality of drawing objects which can be subjected to the OR drawing includes the drawing objects of different colors forming the color image and the resolutions of the drawing objects of different colors vary, the drawing process of the drawing object with a higher resolution is preferentially assigned to the arithmetic processor with a higher clock rate and a faster processing speed. 
         [0022]    Hence, it is possible to increase the efficiency of the speed increase achieved by performing the drawing processes for the plurality of drawing objects in parallel with the plurality of arithmetic processors. 
         [0023]    The operations may include assigning the first drawing process and the second drawing process preferentially to the two or more arithmetic processors in an ascending order of usage of the two or more arithmetic processors. 
         [0024]    In the configuration described above, for example, causing the arithmetic processor whose usage is lower than a predetermined reference value and which has good operation efficiency to execute the drawing process for the drawing object indicated by the command can increase the efficiency of the speed increase achieved by performing the drawing processes for the plurality of drawing objects: in parallel with the plurality of arithmetic processors. 
         [0025]    The commands may include: drawing position information indicating a first drawing position of the first drawing object and a second drawing position of the second drawing object; and ink color information of the first drawing object and the second drawing object. The operations may include: determining whether the first drawing position and the second drawing position indicated in the drawing position information match; upon determining that the first drawing position and the second drawing position match, determining whether the first drawing object and the second drawing object are drawing objects of different colors forming a color image, based on the ink color information; and upon determining that the first drawing object and the second drawing object are the drawing objects of different colors, determining that the OR drawing is possible. 
         [0026]    In the configuration described above, the processor can determine whether the OR drawing of the drawing objects of the different colors forming the color image is possible without bearing a large processing burden, and increase the speed of the drawing processing for the plurality of drawing objects which can be subjected to the OR drawing, by dividing the drawing processes among the plurality of arithmetic processors and causing them to process the drawing processes in parallel. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0027]      FIG. 1  is a block diagram illustrating a schematic configuration of a printer network system in a first embodiment of the present invention. 
           [0028]      FIG. 2  is an explanatory view depicting contents of a print job which is described in a PDL and which is outputted by a printer driver of a client in  FIG. 1  to an inkjet recording apparatus. 
           [0029]      FIGS. 3A to 3C  are explanatory views illustrating an idea of OR drawing of drawing objects in  FIG. 2 . 
           [0030]      FIG. 4  is a block diagram illustrating a schematic configuration of a quad-core processor forming a CPU of a control unit in the inkjet recording apparatus of  FIG. 1 . 
           [0031]      FIG. 5  is a flowchart depicting steps of a process performed by the CPU of the control unit in the inkjet recording apparatus upon receiving the print job with contents of  FIG. 2  from the client of  FIG. 1 . 
           [0032]      FIG. 6  is an explanatory view depicting contents of a print job which is described in the PDL and which is outputted by the printer driver of the client in  FIG. 1  to the inkjet recording apparatus in a second embodiment. 
           [0033]      FIG. 7  is a flowchart depicting steps of a process performed by the CPU of the control unit in the inkjet recording apparatus upon receiving the print job with contents of  FIG. 6  from the client of  FIG. 1 . 
           [0034]      FIG. 8  is an explanatory view depicting contents of a print job of a color original image which is described in PDT: and which is outputted by the printer driver of the client of  FIG. 1  to the inkjet recording apparatus in a third embodiment. 
           [0035]      FIG. 9  is a flowchart depicting steps of a process performed by the CPU of the control unit in the inkjet recording apparatus upon receiving the print job with contents of  FIG. 8  from the client of  FIG. 1 . 
       
    
    
     DETAILED DESCRIPTION 
       [0036]    In the following detailed description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosed embodiments. It will be apparent, however, that one or more embodiments may be practiced without these specific details. In other instances, well-known structures and devices are schematically shown in order to simplify the drawing. 
         [0037]    Description will be hereinbelow provided for embodiments of the present invention by referring to the drawings. It should be noted that the same or similar parts and components throughout the drawings will be denoted by the same or similar reference signs, and that descriptions for such parts and components will be omitted or simplified. In addition, it should be noted that the drawings are schematic and therefore different from the actual ones. 
         [0038]    Embodiments of the present invention are described below with reference to the drawings. 
       First Embodiment 
       [0039]      FIG. 1  is an explanatory view illustrating a schematic configuration of a printer network system in a first embodiment of the present invention. Note that an inkjet recording apparatus. In the first embodiment which is illustrated in  FIG. 1  is assumed to be a line inkjet color printer. 
       Overall Configuration of Printer Network System 
       [0040]    As illustrated in  FIG. 1 , the printer network system of the embodiment includes the inkjet recording apparatus  1  (image forming apparatus) and clients  14 . 
       Configuration of Client 
       [0041]    Each of the clients  14  is formed of a personal computer (PC) and the like. The client  14  includes a CPU  16  which executes various processes based on a control program stored in a ROM  17 . A RAM  18  configured to function as a working area, an input unit  19  including a keyboard, a mouse, and the like, an output unit  20  including a liquid crystal display and the like, an external storage  21 , and a disk drive  22  are connected to the CPU  16 . 
         [0042]    The external storage  21  has a storage region for an application program used to generate original data including print images of documents, images, and the like, a storage region for a printer driver program of the inkjet recording apparatus  1 , and a storage region for other various application programs. The external storage  21  also has a database region. The original data generated by using the application program and similar data are stored in the database region. 
         [0043]    The CPU  16  is an arithmetic device formed of a processor, a memory, and other peripheral devices, and activates the application program in the external storage  21  according to an activation request inputted from the input unit  19 . Moreover, the CPU  16  generates the original data of an image on the activated application program by receiving inputs of parameters from the input unit  19 . The generated original data is outputted to and displayed on the output unit  20 . Moreover, when the CPU  16  receives a save request from the input unit  19 , the generated original data is stored in the database region of the external storage  21 . 
         [0044]    The original data stored in the database region of the external storage  21  is read from the external storage  21  when the CPU  16  receives a read request from the input unit  19  while the application program is activated. The print image of the read original data can be outputted to and displayed on the output unit  20 . Moreover, the print image can be processed on the application program to be regenerated into new original data. 
         [0045]    When the CPU  16  receives a print request for the original data generated by using an original application program, a form creating application program, or the like, the CPU  16  virtually constructs a printer driver  110  by executing the printer driver program. Then, the printer driver  110  outputs a print job to the inkjet recording apparatus  1 . 
         [0046]    The printer driver  110  is a data conversion program to be executed on the client  14  to control the inkjet recording apparatus  1  connected to the client  14 . The printer driver  110  obtains the original data including a print image generated by the original application program or the like and generates the print job according to predetermined print setting information. Then, the printer driver  110  outputs the generated print job from an external interface  15  to an external interface  11  of a control unit  10 . 
         [0047]    In this case, the print setting information is information required for normal printing such as, for example, the size or the original data, the resolution, the size of a print sheet, and the print direction. The print setting information also includes information relating to a print mode for printing the print image with the inkjet recording apparatus  1 . 
       Print Job 
       [0048]      FIG. 2  is an explanatory view depicting contents of the print job outputted by the printer driver  110  to the inkjet recording apparatus  1 . The printer driver  110  of the embodiment outputs the print job described in a page description language (PDL) to the inkjet recording apparatus  1 . As illustrated in  FIG. 2 , the print job includes commands of an owner, a job name, and an OR (logical addition) flag (status information) and, subsequent to these commands, repeatedly includes commands of a vertical position, a horizontal position, a drawing area, and obj (object), for each of objects. 
         [0049]    The owner name is a user name of the client  14 . The job name is a file name of the original data being a target of the print request for which the print job is generated. The vertical position is a position of a start point of drawing in the vertical direction (Y coordinate axis direction) of the drawing object. The horizontal position is a position of a start point of drawing in the horizontal direction (X coordinate axis direction) of the drawing object. The drawing area is the width (X coordinate axis direction) and the height (Y coordinate axis direction) of the drawing object. obj is data (raster or vector) of the drawing object forming the image of the original such as “curve” and symbols of “circle,” “triangle,” and “quadrilateral.” 
         [0050]    The OR flag is a flag indicating whether OR (logical addition) drawing of the drawing objects defined in the commands of obj is possible or not. The OR flag set to 1 means that the OR drawing is possible, and the OR flag set to 0 means that the OR drawing is impossible. 
         [0051]    The OR drawing of the drawing objects is described with reference to the explanatory views of  FIGS. 3A to 3C . For example, assume a case where an object A which is a black-solid rectangle elongating in a vertical direction and an object B which is a white equilateral triangle are provided as illustrated in  FIG. 3A  and, in an image obtained by overlapping these objects, a portion where the objects: A and B overlap each other is to be drawn as a black-solid portion as illustrated in  FIG. 3B . 
         [0052]    In this case, in the image of  FIG. 3B , the portion where the objects A and B overlap each other is drawn as the black-solid portion regardless of which one of the objects A and Bis drawn first in OR (logical addition) calculation, and the contents of the image does not change. Accordingly, in the case of drawing the image of  FIG. 3B , either of the drawing processes for the objects A and B may be performed first and the OR drawing is possible. 
         [0053]    Meanwhile, assume a case where, in the image obtained by overlapping the objects A and B, the portion where the objects A and B overlap each other is to be drawn as a white portion as illustrated in  FIG. 3C . In this case, in the image of  FIG. 30 , the portion where the objects A and B overlap each other is drawn as the white portion when the drawing process of the object B is performed first. However, when the drawing process of the object. A is performed first, the overlapping portion is drawn as a black-solid portion and the contents of the image changes. Accordingly, in the image of  FIG. 3C , the drawing process of the object A must be performed first, and the OR drawing is impossible in this case. 
         [0054]    When the OR drawing is possible, the image of  FIG. 3B  can be drawn even if the order of the drawing processes for the objects A and B is changed. Meanwhile, when the OR drawing is impossible, the image of  FIG. 3C  cannot be drawn if the order of the drawing processes for the objects A and B are changed. 
         [0055]    In view of this, in the embodiment, whether the order of the drawing processes for the objects A and B is fixed (cannot be changed) or arbitrary (can be changed) is indicated in the command of OR flag in the print job depicted in  FIG. 2 . Note that the OR flag is set to “1” when the OR drawing is possible and is set to “0” when the OR drawing is impossible. 
         [0056]    Note that, in the embodiment, when the print request for the original data generated by using the original application program, the form creating application program, or the like is inputted, the printer driver  110  obtains the drawing objects forming the image of the original data and information on how to combine the drawing objects, from the application program. 
         [0057]    The information indicates the order in which the objects are to be overlapped, which one of the objects is to be arranged in the foreground, and the like in the case where the image of the original data is formed by overlapping multiple objects, and is used to determine the content of the OR flag in the generation of the print job by the printer driver  110 . 
       Configuration of Inkjet Recording Apparatus 
       [0058]    As illustrated in  FIG. 1 , the inkjet recording apparatus  1  includes a scanning unit  101  which reads image information on an original as the print image and which outputs an image signal, a printing unit  102  which prints the print image on a print sheet based on the image signal outputted from the scanning unit  101 , and the control unit  10  for overall control. The print sheet used in the printing of the print image in the printing unit  102  is conveyed from a not-illustrated sheet feeding unit to the printing unit  102 , and then to a not-illustrated sheet delivery unit. 
         [0059]    The external interfaces  15  of the multiple clients  14  are connected to the external interface  11  of the control unit  10  via a local area network LAN. Note that, in  FIG. 1 , only one of the clients  14  is described in detail as a representative. The control unit  10  receives the print job of the print image from each of the clients  14 . 
         [0060]    The control unit  10  generates raster data of the print image by using the received print job. Then, the inkjet recording apparatus  1  prints the print image onto the print sheet in the printing unit  102 , under the conditions specified in the print, setting information of the print job. 
         [0061]    A display  80  is connected to the control unit  10 . The display  80  is arranged in an upper portion of the inkjet recording apparatus  1 . The display  80  is used as a user interface of the inkjet recording apparatus  1 . Specifically, the display  80  is used as, for example, an input operation unit and the like to which a user inputs copying conditions such as the number of copies and a copying magnification scale in copying and printing of the print image set in the scanning unit  101 . 
         [0062]    The control unit  10  of the inkjet recording apparatus  1  which causes the printing unit  102  to perform printing operations includes a CPU  90  (processor). The CPU  90  controls operations of the scanning unit  101  and the printing unit  102  according to contents set by being inputted from the display  80 , based on a program and setting information stored in a ROM  91  (memory). 
         [0063]    The control unit  10  is provided with a RAM  92 . The RAM  92  stores the print job inputted into the control unit  10  from the client  14 , various setting contents such as the number of copies in copying inputted from the display  80 , and the like from time to time. 
         [0064]    The PAM  92  is provided with a frame memory region. The print job from the client  14  and the raster data of the print image generated by the CPU  90  by using the image signal from the scanning unit  101  are temporarily stored in the frame memory region until the print job and the raster data are outputted to the printing unit  102 . 
         [0065]    The control unit  10  is provided with an external storage  93 . The external storage  93  is connected to the CPU  90 . The external storage  93  is provided with multiple regions for storing the print job transferred from the aforementioned RAM  92 . Moreover, the external storage  93  stores various tables, counters, and the like. 
         [0066]    Note that, as illustrated in the block diagram of  FIG. 4 , the CPU  90  in the embodiment is a quad-core processor including four CPU cores  90   a  to  90   d  (arithmetic processors). Commands inputted into the CPU  90  are stored in a built-in cache memory included in an internal bus interface (I/F)  90   e  to be grouped into units of commands processed in the respective CPU cores  90   a  to  90   d , and are distributed to the CPU cores  90   a  to  90   d.    
       Print Process 
       [0067]    With reference to the flowchart of  FIG. 5 , description is given below of processing procedures performed by the control unit  10  of the inkjet recording apparatus  1  when receiving the print job from the client  14 . 
         [0068]    First, as illustrated in  FIG. 5 , when the print job from the client  14  is inputted (YES in step S 1 ), one of the CPU cores  90   a  to  90   d  which performs user interface (UI) control in the CPU  90  of the control unit  10  (also referred to as the UI-controlling CPU core, below) determines whether the OR flag of the print job inputted via the bus I/F  90   e  is “1” (step S 3 ). 
         [0069]    When determining that the OR flag is not “1” (NO in step S 3 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  stores commands of drawing objects obj 1 , obj 2 , . . . of the print job in the built-in cache memory of the bus I/F  90   e  together as one drawing process unit such that the drawing processes for these objects are performed by one (single CPU core) of the CPU cores  90   a  to  90   d  Without changing the order (i.e. in the original order of the commands) (step S 5 ). 
         [0070]    Meanwhile, when determining that the OR flag is “1” (YES in step S 3 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  stores the commands of each of the drawing objects obj 1 , obj 2 , of the print job in the built-in cache memory of the bus I/F  90   e  as one drawing process unit respectively such that the commands of the drawing objects are processed by the separate CPU cores  90   a  to  90   d  in a distributed manner (step S 7 ). 
         [0071]    After the commands of the drawing objects obj 1 , obj 2 , . . . are stored in the built-in cache memory of the bus I/F  90   e  (YES in step S 5  or S 7 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  determines whether any of the CPU cores  90   a  to  90   d  satisfies a process condition of the drawing objects obj 1 , obj 2 , . . . (step S 9 ). 
         [0072]    Whether each of the CPU cores  90   a  to  90   d  satisfies the process condition can be determined by, for example, determining whether a usage of each of the CPU cores  90   a  to  90   d  is below a reference value determined in advance such as 20%. When determining that none of the CPU cores  90   a  to  90   d  satisfies the process condition (NO in step S the UI-controlling CPU core among the CPU cores  90   a  to  90   d  repeats step S 9 . 
         [0073]    Meanwhile, when determining that any of the CPU cores  90   a  to  90   d  satisfies the process condition (YES in step  39 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  causes the CPU core  90   a ,  90   b ,  90   c  or  90   d  which satisfies the process condition to read the commands of the drawing objects obj 1 , obj 2 , . . . the cache memory from the command stored first, for one drawing process unit at a time, and perform the drawing processes (step S 11 ). 
         [0074]    In the case where two or more of the CPU cores  90   a  to  90   d  satisfy the process condition such as the case where the usages of two or more of the CPU cores  90   a  to  90   d  are equal to or lower than 201 in the determination of step S 9 , the drawing processes for the commands of the drawing objects obj, obj 2 , . . . may be performed preferentially by, for example, a CPU core with the lowest usage among the CPU cores  90   a  to  90   d  in step S 11 . 
         [0075]    Moreover, when the clock rates of the respective CPU cores  90   a  to  90   d  vary, for example, the drawing process of a command with a larger data amount out of the commands of the drawing objects obj 1 , obj 2 , . . . may be performed preferentially by a CPU core with a higher clock rate out of the CPU cores  90   a  to  90   d.    
         [0076]    Then, the UI-controlling CPU core among the CPU cores  90   a  to  90   d  determines whether any of the commands of the drawing objects obj 1 , obj 2 , . . . is left in the cache memory without being processed by the drawing process (step S 13 ). When determining that such unprocessed command is left in the cache memory (YES in step S 13 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  returns to step S 9 . When determining that no such command is left in the cache memory (NO in step S 13 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  terminates the series of processes. 
         [0077]    In the inkjet recording apparatus  1  of the embodiment configured as described above, the CPU  90  of the control unit  10  determines whether to execute the drawing processes for the drawing objects obj 1 , obj 2 , . . . of the print job described in the page description language (PDL) in parallel by using the separate CPU cores  90   a  to  90   d , based on the content of the OR flag of the print job. 
         [0078]    Accordingly, the CPU  90  can determine whether the OR drawing of multiple drawing objects is possible without bearing a burden of a large processing amount by performing analysis of determining whether the drawing objects in the print job intersect (overlap) each other on an image. Hence, the CPU  90  can determine whether the OR drawing of multiple drawing objects is possible without bearing the burden of a large processing amount, and increase the speed of the drawing processing for the drawing objects which can be subjected to the OR drawing, by causing the multiple CPU cores  90   a  to  90   d  to execute the drawing processes in parallel. 
       Second Embodiment 
       [0079]    In the first embodiment, description is given of the case where the print, job includes the commands of the drawing objects obj 1 , obj 2 , . . . forming the image of the original being, the target of the print request for which the print job is generated. 
         [0080]    In the second embodiment, as depicted in the explanatory view of  FIG. 6  for example, the print job repeatedly includes, subsequent to the owner and the job name, a command of a drawing object obj which is a command of compressed raster data of one line in the image of the original and a command of vertical position (corresponding to the drawing position of the drawing object in Y coordinate axis direction) which is a drawing start position of the drawing object obj on the image in the vertical direction of the line, for each of the drawing objects. 
         [0081]    When there are commands of vertical positions indicating the same drawing start position in the vertical direction of the drawing objects, the contents of the image may change depending on the order of drawing processes. Accordingly, in this case, the CPU  90  of the control unit  10  of the inkjet recording apparatus  1  performs the drawing processes for the case where the OR drawing is impossible, as in the case where the OR flag is “0” in the print job of  FIG. 2 . 
         [0082]    Meanwhile, when there are no commands of vertical positions indicating the same drawing start position in the vertical direction of the drawing objects, there is no possibility of the contents of the image changing depending on the order of drawing processes. Accordingly, in this case, the CPU  90  of the control unit  10  of the inkjet recording apparatus  1  performs the drawing processes for the case where the OR drawing is possible, as in the case where the OR flag is in the print job of  FIG. 2 . 
         [0083]    Specifically, as illustrated in the flowchart, of  FIG. 7 , UI-controlling CPU core among the CPU cores  90   a  to  90   d  in the CPU  90  of the control unit  10  receives the print job from the client  14  (YES in step S 1 ) and determines, among the commands of all drawing objects obj 1 , obj 2 , . . . , whether any two or more of the commands have the same contents in the commands of vertical positions (vertical position  1 , vertical position  2 , . . . ), that is, whether there are commands of the same drawing start position in the vertical direction of the drawing objects (step S 3 ′). 
         [0084]    When determining that there are commands of the same drawing start position in the vertical direction of the drawing objects (YES in step S 3 ′), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  stores the commands of the drawing objects obj 1 , obj 2 , . . . of the print job in the built-in cache memory of the bus I/F  90   e  together as one drawing process unit such that the drawing processes for these objects are performed by one of the CPU cores  90   a  to  90   d  without changing the order (step S 5 ). 
         [0085]    Meanwhile, when determining that there are no commands of the same drawing start position in the vertical direction of the drawing objects (NO in step S 3 ′) the UI-controlling CPU core among the CPU cores  90   a  to  90   d  stores the commands of each of the drawing objects obj 1 , obj 2 , . . . of the print job in the built-in cache memory of the bus I/F  90   e  as one drawing process unit such that the commands of the drawing objects are processed in the separate CPU cores  90   a  to  90   d  in a distributed manner (step S 7 ). 
         [0086]    Note that procedures hereafter are the same as the procedures in steps S 9  to S 13  described in the flowchart of  FIG. 5 . 
         [0087]    In the inkjet recording apparatus  1  of the second embodiment configured as described above, the CPU  90  of the control unit  10  determines whether to execute the (drawing processes for the drawing objects obj 1 , obj 2 , in the print job described in the page description language (PDL) in parallel by using the separate CPU cores  90   a  to  90   d , based on match or mismatch of the contents of the drawing positions of the drawing objects in the print job. 
         [0088]    Accordingly, the CPU  90  can determine whether the OR drawing of multiple drawing objects is possible without bearing a burden of a large processing amount by converting the drawing objects of the print job from vector data to raster data and performing analysis of determining whether the drawing objects intersect each other. Hence, as in the inkjet recording apparatus  1  of the first embodiment, the CPU  90  can determine whether the OR drawing of multiple drawing objects is possible without bearing the burden of a large processing amount, and increase the speed of the drawing processing for the drawing objects which can be subjected to the OR drawing, by causing the multiple CPU cores  90   a  to  90   d  to execute the drawing processes in parallel. 
       Third Embodiment 
       [0089]    When the print job is a job relating to a color original image and a print resolution varies among ink colors, as illustrated in the explanatory view of  FIG. 8 , commands of an ink color and a resolution are added to the print job described in the page description language (PDL), for each of the drawing objects of various colors in the print job to be drawn in the same page. 
         [0090]    In the print job relating to the color original image, unlike the case where a monochrome image is formed by combining multiple drawing objects, no unfavorable changes occur in the contents of the drawn color image even when the order of drawing processes for the drawing objects forming the color image changes. 
         [0091]    Accordingly, in the third embodiment, when there are drawing objects at the same drawing position, whether these drawing objects are related to the print job of the color original image is determined based on match or mismatch of the commands of the ink color. When the print job is determined to be related to the color original image, the drawing processes for the case where the OR drawing is possible are performed. 
         [0092]    Specifically, when there are commands of drawing objects at the same drawing position in step S 3 ′ of the flowchart of  FIG. 9  (YES), UI-controlling CPU core among the CPU cores  90   a  to  90   d  in the CPU  90  of the control unit  10  determines whether the inputted print job is a job relating to the color original image, based on the contents of the commands of the ink color (ink color information) corresponding to the drawing objects at the same drawing position as illustrated in the flowchart of  FIG. 9  (step S 4 ). 
         [0093]    Then, when the print job is not a job relating to a color original image (NO in step S 4 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  causes the process to proceed to step S 5 . Meanwhile, when the print job is a job relating to a color original image (YES in step S 4 ), the UI-controlling CPU core among the CPU cores  90   a  to  90   d  causes the process to proceed to step S 7 . Procedures in Step S 5  and steps subsequent thereto are the same as the procedures in steps S 5  to S 13  described in the flowchart of  FIG. 5 . 
         [0094]    In the inkjet recording apparatus  1  of the third embodiment configured as described above, the CPU  90  can determine whether the OR drawing of multiple drawing objects is possible without bearing a burden of a large processing amount by analyzing the drawing objects, for the print jobs relating to the color original image. Hence, as in the inkjet recording apparatus  1  of the first embodiment, to the CPU  90  can determine whether the OR drawing of multiple drawing objects is possible without bearing the burden of a large processing amount, and increase the speed of the drawing processes for the drawing objects which can be subjected to the OR drawing, by causing the multiple CPU cores  90   a  to  90   d  to execute the drawing processes in parallel. 
         [0095]    Note that, when two or more of the CPU cores  90   a  to  90   d  with varying clock rates satisfy the process condition in the determination of step S 9 , for example, the drawing processes for the commands of the drawing objects obj 1 , obj 2 , . . . of the various colors which form the color original image and whose drawing positions are the same may be performed in step S 11  such that the drawing process of the command of a drawing object with a higher resolution is performed preferentially by a CPU core with a higher clock rate out of the CPU cores  90   a  to  90   d.    
         [0096]    In the first to third embodiments, description is given of the case where the CPU  90  includes the four CPU cores  90   a  to  90   d . However, the number of CPU cores included in one CPU may be other than four, such as two (dual core). 
         [0097]    Moreover, the arithmetic processors may be, instead of the CPU cores, multiple CPUs formed of separate chips without sharing the interface, the cache memory, and the like. 
         [0098]    Moreover, in the embodiments described above, description is given of the example in which the inkjet recording apparatus  1  is used as the image forming apparatus. However, the present disclosure is not limited to the case of using the inkjet method and can be widely applied to the case where a printer using a method other than the inkjet method such as an electrophotographic method is used as the image forming apparatus. 
         [0099]    Embodiments of the present invention have been described above. However, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than by the foregoing description and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein. 
         [0100]    Moreover, the effects described in the embodiments of the present invention are only a list of optimum effects achieved by the present invention. Hence, the effects of the present invention are not limited to those described in the embodiment of the present invention.