Patent Description:
When creating designs that are to be printed (for example posters, cards, and other printed design products) print bleeds are often used to ensure that where printing is intended to extend to the edge of a final product it does.

Generally speaking, this involves creating a design with content that extends into one or more print bleeds - i.e. areas on a page that are intended to be trimmed (cut off) the final product post printing. The design is then printed on a sheet and trimmed. This ensures that where intended printing extends to the very edge of the final sheet without whitespace.

Given the accessibility of content design tools and printing services many people who prepare designs for printing are not professional designers and do not necessarily understand or use print bleeds well.

If bleeds are not properly used and printing goes ahead it may well be the case that the printed product needs to be discarded and reprinted (with correct use of bleeds). This could be the case whether a copy of the design is printed or hundreds (or thousands). This is a significant waste of resources - e.g. the sheet material being printed on; the printing inks; the energy consumption of the printer; the wear on the printer; the available printer time; and the computational processing and network activity.

Background information described in this specification is background information known to the inventors. Reference to this information as background information is not an acknowledgment or suggestion that this background information is prior art or is common general knowledge to a person of ordinary skill in the art. United States Patent Application Publication No. <CIT> presents methods and apparatus for receiving a print file having an actual frame size, and a nominal imposition template specifying a nominal page size, and generating an imposition flat for printing.

Described herein is a computer implemented method according to claim <NUM> and a computer processing system according to claim <NUM>.

In the following description numerous specific details are set forth in order to provide a thorough understanding of the claimed invention. In some instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessary obscuring.

Various computer implemented design tools. Such tools allow users to create designs that can then be sent to a printer (or printing service) for printing. In the present disclosure reference to printing is to two-dimensional printing on a sheet material - e.g. paper, cardboard, fabric, or other sheet material.

In some cases a printing service will simply print what is provided without review or comment. In other cases, part of the printing service may involve some level of design review to ensure, for example, a submitted design is compliant with the printer being used.

As discussed above, where a designer's intention is for printing to extend all the way to one or more edges of the sheet print bleeds can be used (and the printed product trimmed). Print bleeds are, however, often used incorrectly. In this case, unless the design is corrected, the final product may not have printing all the way to one or more edges even after trimming.

To address this issue, the present disclosure provides a process for automatically identifying and correcting (or suggesting correction of) potential print bleed errors in designs.

Initially various concepts relevant to the present disclosure will be described.

Various design tools can be used to create designs. While a design that is being (or has been) created may have multiple distinct pages, the techniques described herein operate on an individual page basis.

A page as created in a design tool will have certain page attributes, for example a page identifier (typically assigned by the design tool and unique at least for the design in question), a page width, and a page height. The width and height of a page define both its size and aspect ratio.

While a design tool may allow designs to create designs with multiple distinct pages, the techniques described herein operate on an individual page basis.

A page has an associated coordinate system. Any coordinate system may be used, but in the present disclosure the page coordinate system is a Cartesian coordinate system defining a horizontal (x) axis and vertical (y) axis. In the present disclosure, the origin (x, y) = (<NUM>, <NUM>) is the top left corner of the page with x coordinates increasing from left to right and y coordinates increasing from top to bottom.

The units of the coordinate system can be any appropriate units, for example pixels, millimetres, centimetres, inches, or an alternative unit.

In the embodiments described herein, a page (e.g. the page identifier) is associated with a list of design elements. A page's design element list is used to record all design elements that have been added to the page - e.g. a set (such as a list or array) of design elements.

Page (and element data) may be stored in a device independent design descriptor. By way of example, a design descriptor may be stored in a JSON format file such as the following:.

In this example, the design descriptor includes design metadata (e.g. a design identifier, a design creation date), page dimensions (a height and a width), and an elements array, each item of which is an element descriptors describing an element (or group of elements) that has been added to the page (described below).

Design elements (elements for short) are objects that are added to a page. Elements may be copied or imported from one or more element libraries (e.g. libraries of images, animations, videos, etc.). Alternatively, elements may be drawn or created using one or more design tools, for example a text tool, a line tool, a rectangle tool, an ellipse tool, a curve tool, a freehand tool, and/or other design tools or combinations thereof.

An element that has been added to a page (and added to the page's element list) may be identified in various ways. For example, an element may be identified by its position (index) in the element list. Alternatively (or in addition) an element may be assigned an element identifier that is unique at least within the page that the element has been added to.

A given design element has associated element attributes. The particular element attributes that are or can be associated with a given element may depend on the type of element in question. By way of example, however, element attributes may include one or more of those shown in the table below:.

Additional (and/or alternative) element attributes are possible.

An element is of a particular defined type - in the above example defined by an element's type attribute. For example, an element type may be: text; chart; image; grid (e.g. a grid of images); table (of data); line; vector shapes; group (indicating the element is, in fact, a group of elements), and/or other element types.

In the bleed auto correction process described herein only certain defined element types are eligible to be considered for auto correction. Generally speaking, ineligible elements are elements which are unlikely to be appropriate for automatic extension into (and beyond) a bleed. For example, text, chart, table, and line type elements are ineligible while rectangle, vector shape, and image grid type elements are eligible.

In addition, in certain embodiments elements (or element types) may be associated with an extension axis flag or attribute which has a value that indicates whether the element can be extended in a single dimension (for example rectangular elements which can be extended in the x or y dimension alone) or the element must be extended in both dimensions to maintain its aspect ratio/prevent skewing/distortion (for example circular elements which must be uniformly extended along the x and y dimensions together).

In alternative embodiments, elements that would require extension in both dimensions are ignored (i.e. treated as ineligible element types).

Element attributes for a given element may be stored in an element descriptor (which is included in the page's element list). For example:.

Any appropriate value may be used for rotation (e.g. degrees or radians). Rotation may be about a predefined constant pivot point (e.g. a centre point of the element (e.g. (((origin x coordinate + width)/<NUM>), ((origin y coordinate + height)/<NUM>)), the origin (i.e. top/left coordinates), a corner of the element, or an alternative predefined constant pivot point. Alternatively, rotation may be about a pivot point that is defined for each individual element, either by a user or automatically (e.g. a pair of pivot coordinates (pivot x, pivot y)).

Where an element is a member of an element group the elements origin (top/left coordinates), rotation, x-flipped data, and y-flipped data are relative to the group the element is a member of. This is discussed further below. If an element is not a member of a group, these attributes are with respect to the page as a whole.

When an element is added to the page the element (or element identifier) is added to the page's element list/array. Absent explicit user manipulation, elements are added to the page's element list in the order they are added to the page. In some implementations, the first item in the page's element list (i.e. list index <NUM>) will be a background element. In this case, the first element added to the page by a user becomes the second item in the page's element list (index <NUM> of the list), the next element added becomes the third item in the page's element list (index <NUM> of the list) and so forth.

Constructing a page's element list in this manner means that an element's position (index) in the element list also defines its depth or z-index in the page: i.e. an element at index n is behind an element at index n + <NUM> and in front of an element at index n - <NUM>. Where a given element is in front of one or more other elements it can, depending on position/size/rotation/transparency, occlude or partially occlude any/all elements it is in front of. an element at index n is in front of all elements with an index of < n.

In alternative embodiments element depth may be an explicitly stored design element attribute.

Design tools typically provide mechanisms for a user to manually adjust an element's depth, for example by bringing forward, sending backwards, bringing to front, sending to back. If such adjustments are made, corresponding changes are made to the order of the page's element list.

<FIG> depicts a design canvas <NUM> on which a page <NUM> is shown. The design canvas <NUM> may be limited to the dimensions of the page <NUM> or be any other dimension (or unbounded). The page <NUM> defines an area that is intended to be printed as a discrete whole - e.g. on a single sheet.

A page <NUM> has four bleeds <NUM>. In this disclosure the following naming convention will be adopted: 'T' for top; 'B' for bottom; 'L' for left; 'R' for right. Accordingly, the four bleeds <NUM> of a page <NUM> are: a top bleed 104T, bottom bleed 104B, a left bleed <NUM> a right bleed 104R.

Each bleed <NUM> has the following defined or computed parameters
A bleed orientation which may be horizontal (as per top and bottom bleeds 104T and 104B) or vertical (as per the left and right bleeds <NUM> and 104R).

A bleed inner coordinate that defines the bleed's inner edge in the transverse axis (i.e. a vertical bleed's inner coordinate is an x-coordinate and a horizontal bleed's inner coordinate is a y-coordinate). The inner edge of a bleed is the edge along which trimming occurs after the page has been printed.

A bleed outer coordinate that defines the bleed's outer edge (in the transverse axis). The outer edge of a bleed is the edge of the sheet on which the page is printed.

A bleed minimum coordinate (or bleed minimum) which is the minimum coordinate of the bleed <NUM> in the bleed's longitudinal axis.

A bleed maximum coordinate (or bleed maximum) which is the maximum coordinate of the bleed <NUM> in the bleed's longitudinal axis.

A bleed direction which indicates whether moving from the bleed's inner to outer edge is in the positive or negative direction along the bleed's transverse axis. This parameter can be computed from other parameters (e.g. the bleed's inner and outer coordinates).

A bleed's extremities, which are the furthest points of the bleed from the centre of the page. This is the intersection of the bleed's minimum/maximum and outer edge.

In <FIG>, and within the present coordinate system, the parameters of bleeds 104T/B/L/R are as follows:.

Typically print bleeds are <NUM> in width (i.e. the distance between a bleed's inner coordinate/edge and outer coordinate/edge is <NUM>), however alternative bleed widths are possible (e.g. <NUM> or any other bleed width). Bleed width for a page may be a standard/default page parameter. Alternatively bleed width(s) may be user editable attributes stored as (for example) in a design descriptor as described above. In this case a user may be able to edit bleeds collectively (i.e. so that all bleeds are the same width) or individually (i.e. so that different bleeds have different widths).

Page <NUM> includes a rectangular element <NUM> which (in this example) has been rotated by <NUM> degrees and is positioned entirely within page <NUM> (i.e. within the outer edges of the bleeds <NUM>).

An element such as <NUM> that has been added to a page <NUM> has an associated set of element edges. In the present embodiments, the set of element edges associated with an element such as <NUM> are the four edges of a rectangular bounding box <NUM> that bounds the element <NUM>. Where an element is a rectangle (such as element <NUM>) the element's bounding box <NUM> (and therefore the set of element edges) is coextensive (or substantially coextensive) with the edges of the element itself.

For non-rectangular elements (e.g. circles, ellipses, non-rectangular polygons, free-form vector drawings and the like) a rectangular bounding box that surrounds the element is calculated, and the edges of the bounding box are the edges of the set of element edges. For example, element <NUM> is a circle that has been rotated by -<NUM> degrees and has rectangular bounding box <NUM>.

In the present disclosure, an element's bounding box is defined by its four corners - for example, for bounding box <NUM>: a first (in this case top left) corner <NUM>; a second (in this case top right) corner <NUM>; a third (in this case bottom left) corner <NUM>; and a fourth (in this case bottom right) corner <NUM>. Each bounding box corner may be defined by an (x, y) coordinate pair, which can be calculated based on the position (e.g. top and left attributes) size (e.g. width and height attributes) and rotation of the element.

The bounding box corners define, in turn, four bounding box edges - for bounding box <NUM>; a first (in this case top) edge <NUM> (being a straight line between the first corner <NUM> and second corner <NUM>); a second (in this case bottom) edge <NUM> (being a straight line between the third corner <NUM> and fourth corner <NUM>); a third (in this case left) edge <NUM> (being a straight line between the first corner <NUM> and third corner <NUM>); and a fourth (in this case right ) edge <NUM> (being a straight line between the second corner <NUM> and fourth corner <NUM>). A bounding box edge may be defined by a pair of (x, y) coordinate pairs (i.e. the corner coordinate pairs).

Notably, the first corner <NUM> will not always be the top left corner and the first edge will not always be the left edge, as rotation of an element may well change these relative positions. For example if element <NUM> was rotated by <NUM> degrees the 'top left' corner <NUM> would in fact be the bottom left corner and the 'top' edge <NUM> would in fact be the 'left' edge.

In the bleed auto correct process described below the edges of a bounding box are determined to be either vertically oriented or horizontally oriented (a given bounding box having two edges of each orientation). In the example of <FIG>:.

As noted, the present disclosure provides a process for automatically identifying and correcting (or suggesting correction for) potential print bleed errors in a design. The processing performed, which is described in detail below, can be performed in various contexts (and by various systems).

Turning to <FIG>, one example of a networked environment <NUM> in which the various operations and techniques described herein can be performed will be described.

Networked environment <NUM> includes a client system <NUM> and a server system <NUM> that are interconnected via a communications network <NUM> (e.g. the Internet).

Client system <NUM> is an end user system that is operated by a user to, for example, prepare designs for printing and/or cause designs to be printed. Printing may be via a locally or remotely accessible printer or via a printing service (provided, for example, via server system <NUM> or an alternative server system).

Client system <NUM> hosts a client application <NUM> which, when executed by the client system <NUM>, configures the client system <NUM> to provide client-side functionality for/interact with the server application <NUM> of the server system <NUM>.

The functionality of client application <NUM> may be provided by a web browser application which accesses the server application <NUM> via an appropriate uniform resource locator (URL) and communicates with the server application <NUM> via general world-wide-web protocols (e.g. http, https, ftp).

Alternatively, client application <NUM> may be a specific/native application programmed to communicate with the server application <NUM> using defined application programming interface (API) calls.

Via the client application <NUM> a user can interact with the server application <NUM> in order to perform various operations. Depending on the client and server applications <NUM> and <NUM> these operations may include operations such as creating, editing, saving, retrieving/accessing, publishing, sharing, and/or printing designs.

In the example of <FIG>, the client system <NUM> is configured to locally perform a bleed auto correct process such as that described below. Client system <NUM> is configured to do so by, in this example, bleed autocorrect logic <NUM>. The bleed autocorrect logic <NUM> may be implemented by hardware or software. Where implemented by software, the bleed autocorrect logic <NUM> may be native to client application <NUM>, provided to client application <NUM> by an add-on or plug-in that extends the functionality thereof, or provided by a separate application that runs on client system <NUM> and is invoked (by client application <NUM> or directly by a user) as required.

Client system <NUM> may be any computer processing system which is configured (or configurable) by hardware and/or software to offer client-side functionality. By way of example, client system <NUM> may be a desktop computer, a laptop computer, a netbook computer, a tablet computing device, a mobile/smart phone device, a personal digital assistant, or an alternative computer processing system.

Although not illustrated in <FIG>, client system <NUM> will typically have additional applications installed thereon, for example at least an operating system application.

Server system <NUM> hosts a server application <NUM>. The server application <NUM> is executed by a computer processing system of the sever system <NUM> to configure that system to provide server-side functionality to one or more corresponding client applications (e.g. client application <NUM> described above). The server-side functionality may include administrative functions (such as user account management, login, etc.), and design creation/editing functions (for example creating, saving, publishing, sharing designs) and/or print functions (e.g. to define various print parameters and cause a design to be printed).

To provide the server-side functionality, the server application <NUM> comprises one or more application programs, libraries, APIs or other software elements. For example, where the client application <NUM> is a web browser, the server application <NUM> will be a web server such as Apache, IIS, nginx, GWS, or an alternative web server. Where the client application <NUM> is a specific/native application, the server application <NUM> will be an application server configured specifically to interact with that client application <NUM>. Server system <NUM> may host with both web server and application server modules.

Server system <NUM> will typically include additional components to those illustrated. For example, sever system <NUM> will typically include one or more data storage systems or applications (and data storage devices) for storing various data required by the server system <NUM> in the course of its operations. Such data may include, for example, user account data, design template data, design element data, and data in respect of designs that have been created by users. Where sever system <NUM> provides printing functionality it will typically include one or more print servers (which, in turn, interface with one or more physical printers).

The precise hardware architecture of server system <NUM> will vary depending on implementation, however may well include multiple computer processing systems (e.g. server computers) which communicate with one another either directly or via one or more networks, e.g. one or more LANS, WANs, or other networks (with a secure logical overlay, such as a VPN, if required).

For example, server application <NUM> may run on a single dedicated server computer. Alternatively, server system <NUM> may be a cloud computing system and configured to commission/decommission resources based on user demand. In this case there may be multiple server computers (nodes) running multiple server applications <NUM> which service clients via a load balancer.

The architecture described above and illustrated in <FIG> is provided by way of example only, and variations are possible.

For example, client system <NUM> may be configured to operate and perform a print bleed autocorrect process as described above entirely independently of a server system such as <NUM>. In this case client application <NUM> (including bleed autocorrect logic <NUM>) is a stand-alone application by which a user can, for example, create, edit, and ready designs for printing. Printing may then be performed on a locally accessible printer or via a remote printer (e.g. by transferring the design to a remote printer via a network, portable disk-drive, electronic communication, or alternative means).

Alternatively, instead of client system <NUM> being provided with bleed autocorrect logic <NUM> such logic may be provided (and the bleed autocorrect process performed by) a server system such as <NUM>. In this case the server system <NUM> receives a design that is to be prepared for printing (and/or printed). The design may be received from a client application <NUM> or independently of such a client application, for example via an electronic communication (e.g. email/sms/instant message or other communication), via a network upload (e.g. http or ftp upload), via a physical upload (e.g. from a portable memory device), or any other means. As part of preparing the design for printing, server application <NUM> may then invoke print bleed autocorrect logic (e.g. <NUM>) to perform a print bleed autocorrect process as described above.

The features and techniques described herein are implemented using one or more computer processing systems.

For example, in networked environment <NUM> described above, client system <NUM> is a computer processing system (for example a personal computer, tablet/phone device, or other computer processing system). Similarly, the various functional components of server system <NUM> are implemented using one or more computer processing systems (e.g. server computers or other computer processing systems).

<FIG> provides a block diagram of a computer processing system <NUM> configurable to implement embodiments and/or features described herein. System <NUM> is a general purpose computer processing system. It will be appreciated that <FIG> does not illustrate all functional or physical components of a computer processing system. For example, no power supply or power supply interface has been depicted, however system <NUM> will either carry a power supply or be configured for connection to a power supply (or both). It will also be appreciated that the particular type of computer processing system will determine the appropriate hardware and architecture, and alternative computer processing systems suitable for implementing features of the present disclosure may have additional, alternative, or fewer components than those depicted.

Computer processing system <NUM> includes at least one processing unit <NUM>. The processing unit <NUM> may be a single computer processing device (e.g. a central processing unit, graphics processing unit, or other computational device), or may include a plurality of computer processing devices. In some instances, where a computer processing system <NUM> is described as performing an operation or function all processing required to perform that operation or function will be performed by processing unit <NUM>. In other instances, processing required to perform that operation or function may also be performed by remote processing devices accessible to and useable by (either in a shared or dedicated manner) system <NUM>.

Through a communications bus <NUM> the processing unit <NUM> is in data communication with a one or more machine readable storage (memory) devices which store instructions and/or data for controlling operation of the processing system <NUM>. In this example, system <NUM> includes a system memory <NUM> (e.g. a BIOS), volatile memory <NUM> (e.g. random access memory such as one or more DRAM modules), and non-volatile memory <NUM> (e.g. one or more hard disk or solid state drives).

System <NUM> also includes one or more interfaces, indicated generally by <NUM>, via which system <NUM> interfaces with various devices and/or networks. Generally speaking, other devices may be integral with system <NUM>, or may be separate. Where a device is separate from system <NUM>, connection between the device and system <NUM> may be via wired or wireless hardware and communication protocols, and may be a direct or an indirect (e.g. networked) connection.

Wired connection with other devices/networks may be by any appropriate standard or proprietary hardware and connectivity protocols. For example, system <NUM> may be configured for wired connection with other devices/communications networks by one or more of: USB; FireWire; eSATA; Thunderbolt; Ethernet; OS/<NUM>; Parallel; Serial; HDMI; DVI; VGA; SCSI; AudioPort. Other wired connections are possible.

Wireless connection with other devices/networks may similarly be by any appropriate standard or proprietary hardware and communications protocols. For example, system <NUM> may be configured for wireless connection with other devices/communications networks using one or more of: infrared; BlueTooth; WiFi; near field communications (NFC); Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), long term evolution (LTE), wideband code division multiple access (W-CDMA), code division multiple access (CDMA). Other wireless connections are possible.

Generally speaking, and depending on the particular system in question, devices to which system <NUM> connects - whether by wired or wireless means - include one or more input devices to allow data to be input into/received by system <NUM> for processing by the processing unit <NUM>, and one or more output device to allow data to be output by system <NUM>. Example devices are described below, however it will be appreciated that not all computer processing systems will include all mentioned devices, and that additional and alternative devices to those mentioned may well be used.

For example, system <NUM> may include or connect to one or more input devices by which information/data is input into (received by) system <NUM>. Such input devices may include keyboards, mice, trackpads, microphones, accelerometers, proximity sensors, GPS devices and the like. System <NUM> may also include or connect to one or more output devices controlled by system <NUM> to output information. Such output devices may include devices such as a CRT displays, LCD displays, LED displays, plasma displays, touch screen displays, speakers, vibration modules, LEDs/other lights, and such like. System <NUM> may also include or connect to devices which may act as both input and output devices, for example memory devices (hard drives, solid state drives, disk drives, compact flash cards, SD cards and the like) which system <NUM> can read data from and/or write data to, and touch screen displays which can both display (output) data and receive touch signals (input).

By way of example, where system <NUM> is a client system such as <NUM> it will include at least a display <NUM> (which may be a touch screen display) and, potentially one or more (additional) input devices such as a cursor control device <NUM> (e.g. a mouse, trackpad, or other cursor control device) and a keyboard <NUM>.

Where computer processing system <NUM> connects to a printer to print designs, system <NUM> may be directly connected to a printer <NUM> (as illustrated in <FIG>). System <NUM> may also, or alternatively, connect to one or more printers over a network (e.g. a local area network or public network such as the Internet) via communications interface <NUM>.

System <NUM> also includes one or more communications interfaces <NUM> for communication with a network, such as network <NUM> of environment <NUM> (and/or a local network within the server system <NUM>). Via the communications interface(s) <NUM> system <NUM> can communicate data to and receive data from networked devices, which may themselves be other computer processing systems.

System <NUM> may be any suitable computer processing system, for example, a server computer system, a desktop computer, a laptop computer, a netbook computer, a tablet computing device, a mobile/smart phone, a personal digital assistant, or an alternative computer processing system.

System <NUM> stores or has access to computer applications (also referred to as software or programs) - i.e. computer readable instructions and data which, when executed by the processing unit <NUM>, configure system <NUM> to receive, process, and output data. Instructions and data can be stored on non-transitory machine readable medium accessible to system <NUM>. For example, instructions and data may be stored on non-transitory memory <NUM>. Instructions and data may be transmitted to/received by system <NUM> via a data signal in a transmission channel enabled (for example) by a wired or wireless network connection over interface such as <NUM>.

Applications accessible to system <NUM> will typically include an operating system application. System <NUM> also stores or has access to applications which, when executed by the processing unit <NUM>, configure system <NUM> to perform various computer-implemented processing operations described herein.

For example, and referring to the networked environment of <FIG> above: client system <NUM> includes a client application <NUM> which configures the client system <NUM> to perform the operations described herein.

In some cases, part or all of a given computer-implemented method will be performed by system <NUM> itself, while in other cases processing may be performed by other devices in data communication with system <NUM>.

The particular manner in which a design is created is not of specific relevance to the present disclosure. In order to provide context, however, one example of a design creation user interface <NUM> will be described with reference to <FIG>.

Design creation user interface <NUM> is displayed on a display <NUM> of a client system <NUM>, the client system <NUM> configured to do so by a client application <NUM>.

Via interface <NUM> a user can create a design document that comprises one or more pages and (inter alia) add elements to the page. Example design creation interface <NUM> includes a design creation pane <NUM> in which the design currently being worked on is displayed. In the present example, design creation pane <NUM> shows a single page <NUM> of a design document.

Design creation interface <NUM> also includes a design element search and selection pane <NUM> via which a user can search or browse one or more design element libraries, view design element previews <NUM>, and select design elements to be included in the design. To this end, pane <NUM> includes a search box <NUM> (allowing in this case a user to enter search text) and design element previews <NUM> providing preview images of design elements.

Design creation interface <NUM> also includes a toolbar <NUM> providing various tools for design creation and editing. In this particular example the tools include: an element selection tool <NUM> allowing a user to select a particular design element that has been added to the page <NUM>; a drawing tool <NUM> allowing a user to draw a design element having a geometric or other shape; a text tool <NUM> allowing a user to add a textual design element; a colour tool <NUM> allowing a user to manually adjust one or more colours of a given design element; an import tool <NUM> allowing a user to import an element from another source (e.g. an element stored on locally or remotely accessible memory, an element from a third party server, etc.).

In the present example, toolbar <NUM> also includes a print bleed auto correction control <NUM>, activation of which triggers an automatic print bleed correction process as described below.

While not shown, toolbar <NUM> will typically be an adaptive toolbar in that the tools provided change depending on what the user is doing. As one example, while the print bleed auto correction control <NUM> is depicted as a top-level control it may be provided as a sub control. For example toolbar <NUM> may include a 'print' control which, when activated, displays a print menu which includes a print bleed auto correction control <NUM>.

Generally speaking, in order to create a design a user creates a page and adds design elements to that page. Design elements can be added in various ways. For example, a user can interact with the design element search and selection pane <NUM> to search/browse for design elements and then add elements to the design being created - e.g. by selecting a design element preview <NUM>, dragging it to a position on the page <NUM>, and dropping it (or simply double clicking/alternatively interacting with the element preview <NUM>). Alternatively, a user may create and add an entirely new element - e.g. by drawing an element using a tool such as drawing tool <NUM> or adding custom text via text tool <NUM>. Further alternatively, a user may import an element via import tool <NUM>.

In this specific example, page <NUM> includes six design elements: a first rectangular element <NUM> (rotated by -<NUM> degrees); a circular element <NUM> (atop the rectangular element <NUM> and rotated by +<NUM> degrees); a first text element <NUM>; a second rectangular element <NUM>; a second text element <NUM>; and a third rectangular element <NUM> (rotated by +<NUM> degrees).

In this example, the fist rectangular element <NUM> is partially off-page (i.e. part of the element is beyond the left bleed's outer edge). The third rectangular element <NUM> extends into both the top and right bleeds of the page. The angle of element <NUM> is such that an area of white space <NUM> is left between the element's right edge and the top and right inner bleed edges.

Once an element has been added to the page it is added to the page's element list and the user can interact further with it - e.g. by adjusting its position, size (height and/or width), its depth with respect to other design elements on the page <NUM> (e.g. bringing forward, moving backward, bringing to front, moving to back), moving it to another page of the design document, changing its rotation, flipping it about an axis, adjusting colours, deleting it, duplicating it, adding it to a group, removing it from a group, etc..

Interface <NUM> is provided by way of example only, and alternative design creation interfaces (with alternative user interface elements and controls) are possible.

A print bleed auto correction process <NUM> will be described. Process <NUM> operates to automatically detect potential print bleed errors in a design and correct (or provide a suggested correction) thereof.

The operations of process <NUM> are described as being performed by client system <NUM> (or simply system <NUM> for short in the context of process <NUM>). In certain implementations system <NUM> is configured to perform the processing described by client application <NUM> (and bleed autocorrect logic <NUM>). As noted above, however, process <NUM> (or elements thereof) may be performed by an alternative system - e.g. a server system <NUM>.

Generally speaking, process <NUM> involves performing a pair-wise comparison between each bounding box edge of an eligible element and each bleed of the page that is relevant to that edge (horizontal bleeds being relevant to horizontally oriented edges and vertical bleeds being relevant to vertically oriented edges). This is repeated for every eligible element on the page. For a given bounding box edge/bleed pair (also referred to as edge/bleed pairs), a determination is made as to whether the element in question should be resized in order to increase the element's coverage of the bleed and, if so, to resize the element accordingly. Generally speaking, this determination is based on the position of the edge relative to the bleed.

In the present embodiments, a given edge/bleed pair may be processed in accordance with two distinct extension methods. These are referred to as the corner extension method (described with reference to <FIG> and <FIG>) and distance extension method (described with reference to <FIG> and <FIG>). Each extension method involves determining whether the element should be extended and, if so, extending the element.

More specifically, if the corner extension method determines an element should be extend it operates to extend the element until both corners of the element's bounding box sit (in the described embodiments) just outside of the bleed <NUM> in question. The corners of the element's bounding box could, alternatively, be extended to sit on the outer bleed edge.

In contrast, if the distance extension method determines an element should be extended it operates to extend an element until the element's bounding box edge sits just outside (or on) a selected bleed extremity.

In the present embodiments, the distance extension method will always yield a smaller or equal extension to that determined by the corner extension method. For this reason, the print bleed auto correct process initially processes an edge/bleed pair in accordance with the corner extension method and only processes the pair in accordance with the distance extension method if the corner extension method is not applicable.

In alternative embodiments, a bleed auto correct process may involve only the corner extension method (or an adaptation thereof), only the distance extension method (or an adaptation thereof), or either/both of the extension methods in conjunction with additional extension methods.

Operations of the print bleed auto correction process <NUM> are divided into four main parts: operations in respect of selecting and iterating through each relevant edge/bleed pair are described with reference to <FIG>; operations involved in processing a specific edge/bleed pair according to the corner extension method <NUM> are described with reference to <FIG> and <FIG>; operations involved in processing a specific edge/bleed pair according to the distance extension method <NUM> are described with reference to <FIG> and <FIG>; and operations involved in a design approval process <NUM> are described with reference to <FIG> and <FIG>.

At <NUM>, system <NUM> detects a print bleed auto correction trigger event.

Various trigger events are possible. By way of example, where process <NUM> is performed by a client system such as <NUM> trigger events may include one or more of: system <NUM> detecting activation of a print bleed auto correction control such as <NUM> described above; system <NUM> detecting activation of a print control; system <NUM> detecting a user submitting/uploading/sending a design to a print service (provided, for example, by a remote server <NUM>); or an alternative trigger event.

By way of alternative example, where process <NUM> is performed by a server system such as <NUM> (e.g. a server of a printing service), the trigger event may be receiving a design for printing.

As noted, the auto correction process described herein operates on a page-by-page basis. Where a design has multiple pages each page may be processed in turn (or in parallel).

In the present example, any element groups are ignored (i.e. each eligible element is considered separately whether it is a member of a group or not).

At <NUM>, system <NUM> selects the next unprocessed eligible element on the page being processed. Elements may be processed in any order - for example in depth order (from lowest to highest depth). As noted above, not all elements are eligible for processing by the bleed auto correct process <NUM>. Elements that are not of an eligible type (e.g. text elements, chart elements, other ineligible elements) are ignored/not processed.

In certain embodiments, any non-rectangular element may be ineligible (i.e. bleed auto correct process <NUM> is configured to only consider rectangular elements). In this case, references to an element's bounding box corners and edges in process <NUM> can be replaced by references to the corners and edges of the element itself.

At <NUM>, system <NUM> calculates (or accesses if already calculated/stored) edges in respect of the selected element and edge orientations (vertical or horizontal, as described above). As described above, the edges in respect of the selected element may be the edges of the element itself (for example where the element is a rectangular shaped element) or edges of the element's bounding box.

As noted, each bounding box edge may be defined by a pair of corners (each corner in turn defined by a pair of corner coordinates). To determine the orientation of a given bounding box edge system <NUM> initially calculates an angle (θ) of the bounding box edge - for example according to the following:
<IMG>
Where.

The calculated angle θ, therefore, represents the angle between the bounding box edge and the positive x-axis (angle of inclination).

System <NUM> calculates orientation based on the edge's angle θ which, from the above calculation, is a value between -<NUM> and <NUM> degrees: <MAT> → horizontally oriented bounding box edge <MAT> → vertically oriented bounding box edge <MAT> → vertically oriented bounding box edge <MAT> → horizontally oriented bounding box edge.

At <NUM>, system <NUM> selects the next unprocessed bounding box edge. The bounding box edges of a selected element may be processed in any order (e.g. left, right, top, bottom or any other order).

At <NUM>, system <NUM> selects the next unprocessed correspondingly oriented bleed. A given bounding box edge will have two correspondingly oriented bleeds: the top and bottom (i.e. horizontal) bleeds for a horizontally oriented bounding box edge; the left and right (i.e. vertical) bleeds for a vertically oriented bounding box edge. The two correspondingly oriented bleeds for a given bounding box edge may be processed in either order.

Following <NUM>, therefore, an edge/bleed pair has been selected (the edge/bleed pair including a particular edge of the element's bounding box (or the element itself) and a particular bleed of the page). System <NUM> then proceeds to determine if the element should be extended by an extension method. In this case, system <NUM> initially processes the edge/bleed pair according to the corner extension method <NUM> (described below with reference to <FIG>). If the corner extension method applies (and the element is extended in accordance therewith) processing proceeds to <NUM>. If the corner extension method does not apply, system <NUM> processes the bounding box edge/bleed pair according to the distance extension method <NUM> (described below with reference to <FIG>). On completion of the distance extension method processing (whether the element is extended or not) processing proceeds to <NUM>.

At <NUM>, therefore, the currently selected edge/bleed pair has been processed according to (in this example) one or both of the extension methods (and may have been adjusted by one of the extension methods or not adjusted). System <NUM> then determines whether there is an unprocessed correspondingly oriented bleed for the currently selected edge. If there is an unprocessed correspondingly oriented bleed for the currently selected edge, processing returns to <NUM> where the unprocessed correspondingly oriented bleed for the current bounding box edge is selected. If both correspondingly oriented bleeds for the edge have been processed, processing of the current bounding box edge is complete and processing proceeds to <NUM>.

At <NUM>, system <NUM> determines whether there are any unprocessed bounding box edges of the currently selected element. If there are one or more unprocessed bounding box edges, processing returns to <NUM> to select the next unprocessed bounding box edge. If not, and all four edges have been processed, processing of the currently selected element is complete and processing proceeds to <NUM>.

At <NUM>, system <NUM> determines whether there are any unprocessed eligible elements. If so, processing returns to <NUM> to select the next eligible element to process. If not, and in the present example, processing proceeds to <NUM> of design approval process <NUM> (<FIG>).

Turning to <FIG>, processing a bounding box edge/bleed pair in accordance with the corner extension method <NUM> will be described.

In this section, reference to 'the edge' is reference to the bounding box edge selected at <NUM> and reference to 'the bleed' is reference to the bleed selected at <NUM> which, as described above, has a corresponding orientation (horizontal or vertical) to that of the edge.

At <NUM>, system <NUM> determines a focal corner of the edge. The focal corner is the corner of the edge that is inside the page and furthest or equal furthest distance from the bleed (e.g. the outer edge of the bleed).

For vertically oriented edge/bleed pairs the focal corner is the corner whose x coordinate is furthest from the x coordinate of the bleeds outer coordinate. For horizontally oriented edge/bleed pairs the focal corner is the corner whose y coordinate is furthest from the x coordinate of the bleeds outer coordinate.

If the edge is parallel to the bleed (and the corners are equidistant from the bleed) either corner may be selected as the focal corner.

At <NUM>, system <NUM> determines if the focal corner (determined at <NUM>) is within the page area. With the coordinate system described above, system <NUM> may determine the focal corner is on the page if the following evaluates true:.

If the focal corner is not on the page, system <NUM> determines that extending the element by the corner method is not suitable and processing proceeds to the extension by distance method at <NUM> (<FIG>).

If the focal corner is on the page, processing proceeds to <NUM>.

At <NUM>, system <NUM> calculates an outer bleed to focal corner distance. The outer bleed to focal corner distance is measured along the transverse axis of the bleed - i.e. the distance along a line that is perpendicular to outer edge of the bleed and joins the outer edge of current bleed area to the focal corner. This may be calculated as follows:.

At <NUM>, system <NUM> determines if the outer bleed to focal corner distance (calculated at <NUM>) exceeds a defined corner separation threshold distance. In the present example, the corner separation threshold distance is set a twice the bleed width (e.g. <NUM> if the bleed width is <NUM>). Alternative threshold distances may, however, be used.

If the outer bleed to focal corner distance exceeds the defined corner separation threshold distance, system <NUM> determines that extending the element by the corner method is not suitable and processing proceeds to the extension by distance method at <NUM> (<FIG>).

If the outer bleed edge to focal corner distance does not exceed the defined corner separation threshold, processing continues to <NUM>.

At <NUM>, system <NUM> calculates a new position for the focal corner. In the present example, the new position is a position that extends the focal corner along a line that is perpendicular to the bounding box edge and passes through the focal corner.

The adjacent bounding box edge is the edge of the bounding box that extends from the focal corner and is not the bounding box edge currently being processed. For example:.

The new position may be calculated by linear interpolation, for example: <MAT>.

In this equation, (x,y) are the x/y coordinates of the new corner position. Where the left bleed is being processed x = the left bleed outer coordinate and the above equation is solved for y; where the right bleed is being processed x = the right bleed outer coordinate and the above equation is solved for y; where the top bleed is being processed y = the top bleed outer coordinate and the above equation is solved for x; where the bottom bleed is being processed x = the bottom bleed outer coordinate and the above equation is solved for y. Final coordinates may be rounded up/down to the nearest integer coordinate that sits outside the bleed.

(x<NUM>,y<NUM>) are the x/y coordinates of the adjacent corner. The adjacent corner is the bounding box corner opposite the focal corner on the adjacent bounding box edge (described above). For example:.

(x<NUM>,y<NUM>) are the x/y coordinates of the furthest corner's current position.

At <NUM>, system <NUM> calculates an extension distance (referred to also referred to as the corner extension method extension distance) based on the new focal corner position. The corner extension method extension distance is the distance towards the bleed outer coordinate that the transverse edges need to be extended. The extension distance (d) can be calculated according to the following equation: <MAT> where.

At <NUM>, system <NUM> extends the element based on the corner extension method extension distance calculated at <NUM>.

Where the element in question is rectangular (or flagged as being extendible in a single dimension, for example by an extension axis flag as described above), system <NUM> extrapolates the element, resizing it so that the focal corner is just beyond the bleed's outer edge. Phrased alternatively, the element's bounding box (and with it the element itself) is resized to the newly computed dimensions about an anchor point. An example of extending an element in this way is described below with reference to <FIG>.

This extrapolation can be performed in various ways, for example by use of functions provided by an image resizing/scaling library.

Where the element in question is flagged as requiring extension in both dimensions (for example by an extension axis flag as described above, set because the element's aspect ratio should be maintained), system <NUM> extrapolates the element by applying the same scale factor to the edges of the element's bounding box to uniformly scale the element.

If the element is resized at <NUM> processing proceeds to <NUM> (<FIG>). In this case system <NUM> does not need to process the edge/bleed pair in accordance with the distance extension method.

<FIG> provides depictions A, B, and C of a page <NUM> and element <NUM> processed according to the corner extension method <NUM> described above.

In the examples provided with respect to <FIG>: the edge of the edge/bleed pair is the right (vertically oriented) edge <NUM>; the bleed of the edge/bleed pair is the right bleed <NUM>. As can be seen, a portion <NUM> of element <NUM> towards the bottom of edge <NUM> extends into the bleed <NUM>. Towards the top of edge <NUM>, however, the element does not extend into the bleed <NUM> which creates an unfilled region <NUM> between the inner edge of the bleed and the element <NUM>.

At <NUM>, system <NUM> determines the focal corner for the edge/bleed pair to be the top right corner <NUM>, and at <NUM> that the focal corner is on the page <NUM>.

At <NUM>, system <NUM> calculates the outer bleed to focal corner distance, indicated by arrow <NUM> in <FIG>. As can be seen, the distance is measured along a line <NUM> that is horizontal (transverse to the vertically oriented right bleed <NUM>).

At <NUM>, system <NUM> determines that the outer bleed to focal corner distance is within the corner separation threshold distance.

At <NUM>, system <NUM> calculates a new focal corner position <NUM>. In this example, the focal corner's transverse edge is the top edge <NUM> of the bounding box. As can be seen, the new focal corner position <NUM> lies along a line defined by transverse edge <NUM> and is just beyond the outer edge of the bleed <NUM>.

At <NUM>, system <NUM> calculates an extension distance <NUM>, which is the distance between the focal corner's original position <NUM> and new position <NUM>.

At <NUM>, system <NUM> resizes the element <NUM>. In this example element <NUM> is extended into the hatched area <NUM>. This is achieved by extending the transverse edges of the element (or the elements bounding box) <NUM> and <NUM> by the extension distance <NUM> so that the focal corner sits just beyond the bleed's outer edge - i.e. at new position <NUM>.

Turning to <FIG>, processing a bounding box edge/bleed pair in accordance with the distance extension method will be described.

In this section, reference to 'the edge' is reference to the bounding box edge selected at <NUM> and reference to 'the bleed' is reference to the bleed selected at <NUM>.

At <NUM>, system <NUM> determines if at least one of the bleed's extremities is (in this instance) outside the edge (in alternative implementation the determination may be whether at least one of the bleed's extremities is on the edge). With the coordinate system described above, system <NUM> may determine this by initially calculating a value v for each bleed extremity according to the equation: <MAT> Where.

In this example the 'first' corner (x<NUM>,y<NUM>) and 'second' corner (x<NUM>,y<NUM>) are in a clockwise order. For example, for the top edge the corners are, in order, top-left then top-right.

System <NUM> then determines the sign of the calculated value v for each bleed extremity. A positive value of v for a given bleed extremity indicates that the extremity is inside the edge. Conversely, a negative value of v for a given bleed extremity indicates that the extremity is outside the edge.

If neither bleed extremity is outside the edge, system <NUM> determines that extending the element by the distance method is not suitable (because the edge would already satisfy the bleed requirements) and processing returns to <NUM> (<FIG>). If one or both of the bleed extremities is/are outside (or on depending on implementation) the element's edge, processing proceeds to <NUM>.

At <NUM>, system <NUM> calculates an edge to bleed extremity distance. The edge to bleed extremity distance is measured along a line that is perpendicular to the edge, and is the distance between the edge and the furthest bleed extremity that is outside the edge. The edge to bleed extremity distance for a given extremity can be calculated using a point-to-line perpendicular distance formula.

Where only one bleed extremity is outside the edge, the edge to bleed extremity distance will be the perpendicular distance between the edge and that bleed extremity. Where both bleed extremities are outside the edge, the edge to bleed extremity distances for both extremities are calculated and the maximum distance used. If the edge is parallel to the bleed both distances will be the same.

At <NUM>, system <NUM> determines if the edge to bleed extremity distance (calculated at <NUM>) exceeds a defined edge separation threshold distance. In one embodiment, the defined edge separation threshold distance is calculated as <NUM> times the bleed width (e.g. <NUM> for a <NUM> bleed). Alternative threshold distances may be used.

If the edge to bleed extremity distance exceeds the edge separation threshold distance, system <NUM> determines that extending the element by the distance method is not suitable and processing returns to <NUM> (<FIG>). If the edge to bleed extremity distance is within the edge separation threshold processing proceeds to <NUM>.

At <NUM>, system <NUM> resizes the element in question based on the edge to bleed extremity distance calculated at <NUM> (which may be referred to as the distance extension method extension distance). Resizing the element is the same as operation <NUM> described above.

Processing then returns to <NUM> (<FIG>).

<FIG> provides depictions A, B, and C of a page <NUM> and element <NUM> processed according to the distance extension method <NUM> described above.

At <NUM>, system <NUM> determines that the bleed extremity <NUM> (top right) is outside edge <NUM>.

At <NUM>, system <NUM> calculates the edge to bleed extremity distance <NUM>. In this case only one bleed extremity <NUM> is outside the edge <NUM>.

At <NUM>, system <NUM> determines that the edge to bleed extremity distance is within the edge separation threshold.

At <NUM>, system <NUM> resizes the element <NUM> by the edge to bleed extremity extension distance. In this example element <NUM> is resized to extend into the hatched area <NUM>. This is achieved by extending the transverse edges of the element (or the elements bounding box) <NUM> and <NUM> by the extension distance <NUM>.

In the present embodiment, once all relevant edge/bleed pairs have been processed, system <NUM> performs a design page approval process <NUM> (<FIG>).

In alternative embodiments no approval process is performed - i.e. element extensions are simply implemented without preview or user input. In this case, and as an example, if the bleed auto correct process was triggered as part of a print operation system <NUM> would print/send the design page for printing after all eligible elements have been processed and any extensions made (i.e. after <NUM>).

In the present embodiment, however, at <NUM> system <NUM> determines if one or more elements of the page was extended over the course of process <NUM>. If no elements were extended, processing proceeds to <NUM> where system <NUM> finalises the design. In some implementations a message may be displayed to the user indicating that no bleed corrections were identified.

If one or more elements of the page was extended, processing proceeds to <NUM>. At <NUM>, system <NUM> generates and causes a design page approval user interface to be displayed. One example of such an interface is described below with reference to <FIG>.

Generally speaking, the preview UI displays the element extension(s) that have been calculated/performed and allows the user to accept or reject the extension(s).

At <NUM>, system <NUM> selects one or more of the element extensions that have been made. Selection may be automatic and/or in response to a user input.

For example, on initially displaying the preview UI system <NUM> may be configured to automatically select: all element extensions that have been made; all extension that have been made to a single element (e.g. the rearmost element that has had at least one extension); a single extension that has been made to a single element; or an alternative extension/plurality of extensions.

System <NUM> may also (or alternatively) be configured to select one or more element extensions in response to user input. Generally speaking, such user inputs may include user inputs to select: all extensions; all extensions of one or more particular elements; one or more extensions of one or more particular elements; all extensions relevant to one or more particular bleeds.

By way of example, system <NUM> may be configured to select one or more element extensions in response to user inputs such as: direct element selection (e.g. a click or touchscreen contact at the position the element is displayed), causing all extensions associated with the selected element to be selected; direct element extension selection (e.g. a click or touchscreen contact at the position a particular element extension is displayed), causing the particular extension to be selected; activation of an all extensions control, causing all extended elements (and all extensions thereof) to be selected; activation of a next or previous extended element control, causing all extension of a next or previous element to be selected (next and previous being determined in any appropriate order, for example element depth order); activation of a next or previous element extension control, causing a next or previous extension of a particular element to be selected (next and previous extensions being determined in any appropriate order, only applicable if the particular element has multiple extensions); activation of a select all extensions with respect to [top or bottom or left or right] bleed control, causing selection of all element extensions made with respect to the particular bleed; and/or other user inputs.

At <NUM>, system <NUM> displays the element extension(s) selected at <NUM>.

System <NUM> visually distinguishes a selected element extension (or group of extensions) from the original element(s). This may be performed in various ways. For example, system <NUM> may display an animation (or repeating animation) of the original element(s) being extended. Alternatively, system <NUM> may display the extended area(s) (or outline(s) thereof) of the element(s) in a way that is visually distinguished from the original/unextended area(s) of the element(s), for example by use of colour(s), transparency, edge line weight(s)/colour(s)/styles or any other visual differences. As yet a further example, a user may be provided with 'before' and 'after' controls - activating the 'before' control causing system <NUM> to display the original, unextended element(s) that have been selected and activation of the 'after' control causing system <NUM> to display the element extension(s) that have been selected. Alternative mechanisms for visually distinguishing original elements and element extensions may be used.

At <NUM>, system <NUM> receives user input and determines the input type. For present purposes relevant user inputs are: a reject input (via, for example, a 'reject extension(s)' control), in which case processing proceeds to <NUM>; an accept input (via, for example, an 'accept extension(s)' control), in which case processing proceeds to <NUM>; a finalise design page input, in which case processing proceeds to <NUM>.

At <NUM>, system <NUM> rejects the selected element extension(s) - e.g. by flagging the extension(s) as extension(s) that is/are not to be included in the final design. Processing then returns to <NUM> to await further input.

At <NUM>, system <NUM> accepts the selected element extension(s) - e.g. by flagging the extension(s) as extension(s) that is/are to be included in the final design. System <NUM> may also display any extensions that have been accepted as if they were part of the original design in the preview UI.

At <NUM>, system <NUM> finalises the design by incorporating all element extensions that have been accepted and discarding all element extensions that have been rejected. Processing then returns to <NUM> to await further input.

At <NUM> the design page has been finalised. In this particular example system <NUM> prints the design page (or causes the design page to be printed) at <NUM>. Alternative operations are, however, possible depending on context. For example, system <NUM> may instead (or additionally): save the design page; share the design page; publish the design page; and/or perform other operations with respect to the finalised design page.

Where a design has multiple pages, system <NUM> may repeat process <NUM> (and/or design page approval process <NUM>) for each page of the design.

As one example of design page approval process <NUM>, system <NUM> may: determine element extensions have been made (at <NUM>); display the preview UI (at <NUM>) with all extensions automatically selected (at <NUM>) and displayed (at <NUM>); receive a finalise design input (at <NUM>); finalise the design by incorporating all extensions (at <NUM>); and print the finalised design (at <NUM>).

<FIG> provides an example design page approval UI <NUM>.

In this particular example, preview UI <NUM> is similar to design creation interface <NUM> described above, with the exception that a design preview pane <NUM> is displayed instead of the design creation pane <NUM> and a preview control pane <NUM> is displayed instead of the design element search and selection pane <NUM>.

Design preview pane <NUM> is used to display the design page <NUM> being previewed.

Preview control pane <NUM> provides user interface controls for the page approval process. In this example, the UI controls include: a display all control <NUM> (activation of which causes all extensions to all elements to be selected and displayed in the preview pane <NUM>); a display next element control <NUM> (activation of which causes all extensions of a next element to be selected and displayed in the preview pane <NUM>); display bleed controls 1112R, <NUM>, 1112T, 1112B (activation of which causes all extensions relevant to the selected bleed to be displayed); a confirm extension(s) control <NUM> (activation of which causes the selected/displayed extensions(s) to be confirmed); a reject extension(s) control <NUM> (activation of which causes the selected/displayed extensions(s) to be rejected); and a finalise design control <NUM> (activation of which causes the design to be finalised). Additional/fewer/alternative controls may be provided.

In the example of <FIG>, a single extension (extension <NUM> to element <NUM>) has been selected and is displayed. In this example, the extension <NUM> is visually distinguished from the original element by a colour overlay effect (e.g. a red or other colour overlay), indicated by hatching in this instance. In addition, the preview pane <NUM> displays the inner bleed edges (via the broken outline box <NUM>) so the user can determine where these are and how the final trimmed page will appear.

The flowcharts illustrated in the figures and described above define operations in particular orders to explain various features. In some cases the operations described and illustrated may be able to be performed in a different order to that shown/described, one or more operations may be combined into a single operation, a single operation may be divided into multiple separate operations, and/or the function(s) achieved by one or more of the described/illustrated operations may be achieved by one or more alternative operations. Still further, the functionality/processing of a given flowchart operation could potentially be performed by different systems or applications.

Unless required by context, the terms "first", "second", etc. are used to differentiate between various elements and features and not in an ordinal sense. For example, a first edge bleed pair could be termed a second edge bleed pair, and, similarly, a second edge bleed pair could be termed a first edge bleed pair, without departing from the scope of the various described examples.

Unless otherwise stated, the terms "include" and "comprise" (and variations thereof such as "including", "includes", "comprising", "comprises", "comprised" and the like) are used inclusively and do not exclude further features, components, integers, steps, or elements.

It will be understood that the embodiments disclosed and defined in this specification extend to alternative combinations of two or more of the individual features mentioned in or evident from the text or drawings. All of these different combinations constitute alternative embodiments of the present disclosure.

Claim 1:
A computer implemented method comprising:
selecting a plurality of elements (<NUM>) on a design page (<NUM>), each element associated with a set of element edges;
for each selected element:
determining a plurality of edge bleed pairs (<NUM>) in respect of the selected element, each edge bleed pair including a particular edge of the set of element edges and a particular bleed of the design page; and
for each edge bleed pair:
processing the edge bleed pair to determine whether the selected element should be resized, the determination being based on the position of the particular edge relative to the particular bleed; and
in response to determining that the element should be resized, resizing the selected element so that the element covers a greater portion of the particular bleed than was originally covered by the element, wherein
the design page defines an area that is to be printed on a single sheet, and the particular bleed defines a region between an inner bleed edge and an outer bleed edge, the outer bleed edge being an edge of the single sheet.