Adjusting page layouts
Claim Score by NHIP
Abstract
A group of files are presented on a graphical user interface using a template. The presentation is controlled by a rule associated with the template. A user input for adjusting a layout parameter of a selected file of the group of files is received. In response, the rule is examined and the layout parameter of the selected file is adjusted based on the rule. One or more next files in the group of files are evaluated to determine if the rule is satisfied following adjusting the layout parameter of the selected file. Based on determining that the rule is violated, layout parameters of the one or more next files are recursively adjusted until the rule is satisfied. The presentation of the group of files using the template is updated based on recursively adjusting the layout parameters of the one or more next files.

Term
Projected expiry 29 September 2035.
- Priority
- Filed
- Published
- Today
- Projected expiry
20 claims: 3 independent, 17 dependent
- 1Broadest claimClaim Score 44, average(NHIP)A method comprising:presenting a group of first files on a graphical user interface shown on a device display using a first template, wherein presentation of the group of first files on the graphical user interface using the first template is controlled by a first rule associated with the first template;receiving, through an input interface, a first user input for adjusting a layout parameter of a selected file of the group of first files;in response to receiving the first user input, examining the first rule associated with the first template, wherein the first rule constrains adjustment of the layout parameter of the selected file;adjusting the layout parameter of the selected file based on the first rule;evaluating one or more next files in the group of first files to determine if the first rule is satisfied following adjusting the layout parameter of the selected file;based on determining that the first rule is violated following adjusting the layout parameter of the selected file, recursively adjusting layout parameters of the one or more next files until the first rule is satisfied;and updating the presentation of the group of first files using the first template based on recursively adjusting the layout parameters of the one or more next files.
- 15A non-transitory storage device storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:presenting a group of first files on a graphical user interface shown on a device display using a first template, wherein presentation of the group of first files on the graphical user interface using the first template is controlled by a first rule associated with the first template;receiving, through an input interface, a first user input for adjusting a layout parameter of a selected file of the group of first files;in response to receiving the first user input, examining the first rule associated with the first template, wherein the first rule constrains adjustment of the layout parameter of the selected file;adjusting the layout parameter of the selected file based on the first rule;evaluating one or more next files in the group of first files to determine if the first rule is satisfied following adjusting the layout parameter of the selected file;based on determining that the first rule is violated following adjusting the layout parameter of the selected file, recursively adjusting layout parameters of the one or more next files until the first rule is satisfied;and updating the presentation of the group of first files using the first template based on recursively adjusting the layout parameters of the one or more next files.
- 18A system comprising:one or more processors;and a storage device storing instructions that, when executed by the one or more processors, are configured to cause the one or more processors to perform operations comprising: presenting a group of first files on a graphical user interface shown on a device display using a first template, wherein presentation of the group of first files on the graphical user interface using the first template is controlled by a first rule associated with the first template;receiving, through an input interface, a first user input for adjusting a layout parameter of a selected file of the group of first files;in response to receiving the first user input, examining the first rule associated with the first template, wherein the first rule constrains adjustment of the layout parameter of the selected file;adjusting the layout parameter of the selected file based on the first rule;evaluating one or more next files in the group of first files to determine if the first rule is satisfied following adjusting the layout parameter of the selected file;based on determining that the first rule is violated following adjusting the layout parameter of the selected file, recursively adjusting layout parameters of the one or more next files until the first rule is satisfied;and updating the presentation of the group of first files using the first template based on recursively adjusting the layout parameters of the one or more next files.
Independent claims3
155 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATION
0001This application claims priority to U.S. Provisional Patent Application No. 62/057,606, entitled “ADJUSTING PAGE LAYOUTS,” filed Sep. 30, 2014, the entire contents of which are incorporated herein by reference.
TECHNICAL FIELD
0002This disclosure relates generally to adjusting page layouts corresponding to arrangement of digital files on a display.
BACKGROUND
0003A user may view graphical representations, for example thumbnails, of digital files on a device display. The user can move or resize the thumbnails to change the displayed arrangement.
SUMMARY
0004Techniques are described for automatically adjusting page layouts associated with arrangement of digital files on a display. In a general aspect, a group of first files are presented on a graphical user interface shown on a device display using a first template. The presentation of the group of first files on the graphical user interface using the first template is controlled by a first rule associated with the first template. A first user input for adjusting a layout parameter of a selected file of the group of first files is received through an input interface. In response to receiving the first user input, the first rule associated with the first template is examined, where the first rule constrains adjustment of the layout parameter of the selected file. The layout parameter of the selected file is adjusted based on the first rule.
0005One or more next files in the group of first files are evaluated to determine if the first rule is satisfied following adjusting the layout parameter of the selected file. Based on determining that the first rule is violated following adjusting the layout parameter of the selected file, layout parameters of the one or more next files are recursively adjusted until the first rule is satisfied. The presentation of the group of first files using the first template is updated based on recursively adjusting the layout parameters of the one or more next files.
0006Particular implementations may include one or more of the following features. A second user input may be received for adding one or more new files to the group of first files for presentation on the graphical user interface. In response to receiving the second user input, the one or more new files may be added to the group of first files. For each file included the one or more new files, the first template may be adjusted by performing the evaluating of a next file.
0007A group of second files may be presented on the graphical user interface using a second template. Presentation of the group of second files using the second template may be controlled by a second rule associated with the second template. The group of second files may be presented in conjunction with presenting the group of first files using the first template. A second user input may be received, through the input interface, for adjusting a layout parameter of a selected file of the group of second files. In response to receiving the second user input, the layout parameter of the selected file of the group of second files may be adjusted based on the second rule. One or more next files in the group of second files may be evaluated to determine if the second rule is satisfied following adjusting the layout parameter of the selected file of the group of second files. Based on determining that the second rule is violated, layout parameters of the one or more next files in the group of second files may be recursively adjusted until the second rule is satisfied. The presentation of the group of second files using the second template may be updated based on recursively adjusting the layout parameters of the one or more next files in the group of second files.
0008Recursively adjusting the layout parameters of the one or more next files in the group of second files may comprise recursively adjusting the layout parameters of the one or more next files in the group of second files without adjusting layout parameters of the group of first files. Updating the presentation of the group of second files using the second template may comprise updating the presentation of the group of second files using the second template without updating the presentation of the group of first files.
0009Presenting the group of first files on the graphical user interface using the first template may comprise determining a content type of the first files, and selecting the first template based on the content type of the first files. A second user input may be received for adding a new file for presentation on the graphical user interface. In response to receiving the second user input, a content type of the new file may be determined. The content type of the new file may be determined to be different from the content type of the first files. Based on determining that the content type of the new file is different from the content type of the first files, a second template may be selected from device storage for presenting the new file on the graphical user interface, where the second template may be associated with the content type of the new file. The new file may be presented on the graphical user interface using the second template. Presenting the new file on the graphical user interface using the second template may be controlled by a second rule associated with the second template.
0010A next file in the group of first files may include a file that is adjacent to the selected file. Evaluating the one or more next files in the group of first files may comprise identifying one or more files that are adjacent to the selected file. The one or more adjacent files may be evaluated to determine if the first rule is satisfied following adjusting the layout parameter of the selected file. Based on determining that the first rule is violated following adjusting the layout parameter of the selected file, layout parameters of the one or more adjacent files may be recursively adjusted. One or more additional files in vicinity of the one or more adjacent files may be identified. The one or more additional files may be evaluated to determine if the first rule is satisfied following adjusting layout parameters of the one or more adjacent files. Based on determining that the first rule is violated following adjusting the layout parameters of the one or more adjacent files, layout parameters of the one or more additional files may be recursively adjusted until the first rule is satisfied. The presentation of the group of first files using the first template may be updated based on adjusting the layout parameters of the one or more files and the one or more additional files.
0011The first rule may include sub-rules. The sub-rules may be arranged in a precedence order. In response to receiving the first user input, the layout parameter of the selected file may be adjusted based on examining the sub-rules in the precedence order. Based on determining that one or more sub-rules are violated following adjusting the layout parameter of the selected file, layout parameters of the one or more next files may be recursively adjusted until a first sub-rule is satisfied. The first sub-rule may head the one or more violated sub-rules in the precedence order. Following satisfying the first sub-rule, layout parameters of the one or more next files may be recursively adjusted until a second sub-rule is satisfied. The second sub-rule may be after the first sub-rule in the precedence order.
0012The files included in the group of first files may be associated with different content types. The first template may be associated with a grid layout for arranging the group of first files on the graphical user interface. The grid layout may include one or more of a center alignment grid, a no-overlap grid, or a no-gap grid. The grid layout may include multiple grids. Different grids may correspond to different content types associated with files.
0013Implementations of the above techniques include methods, systems, computer program products and computer-readable media. One such computer program product is suitably embodied in a non-transitory storage medium that stores instructions executable by one or more processors. The instructions are configured to cause the one or more processors to perform the above-described actions. One such system includes one or more processors and instructions stored in a storage medium. The instructions, when executed by the one or more processors, are configured to cause the one or more processors to perform the above described actions.
0014The features described in this specification can be implemented to achieve one or more advantages. For example, graphical representations of files may be automatically arranged in the graphical user interface based on a predetermined thematic design intention, which may be that the arrangement of the graphical representations is suitable for printing, e.g., as a photo collage or album, calendar, greeting card, etc. The design intention may be specified by one or more rules associated with the underlying page layout on which the graphical user interface is based. A user may customize the arrangement of the graphical representations to suit the user's own preferences. The device may accommodate the user's customizations while maintaining the overall design intention of the arrangement specified by the page layout by automatically updating the graphical representations such that changes made based on the user input satisfy the rules associated with the page layout.
0015The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages will become apparent from the description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
0016<figref idref="DRAWINGS">FIGS. 1A and 1B</figref> present exemplary views of a device that may be used for automatically adjusting page layouts for displaying digital files.
0017<figref idref="DRAWINGS">FIGS. 2A</figref>, <b>2</b>B, <b>2</b>C and <b>2</b>D present examples of page layouts that may be used for displaying an arrangement of files in a GUI.
0018<figref idref="DRAWINGS">FIGS. 3A</figref>, <b>3</b>B and <b>3</b>C illustrate examples of user inputs for adjusting graphical representations of files in a GUI.
0019<figref idref="DRAWINGS">FIGS. 4A-4E</figref> are flowcharts illustrating exemplary processes for automatically adjusting page layouts for file arrangements.
0020<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram illustrating exemplary device architecture of an electronic device implementing the features and operations of <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C and <b>4</b>A-<b>4</b>E.
0021<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram of exemplary network operating environment for the electronic devices implementing the features and operations of <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C, <b>4</b>A-<b>4</b>E and <b>5</b>.
0022<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram of exemplary system architecture for implementing the features and operations of <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C, <b>4</b>A-<b>4</b>E, <b>5</b> and <b>6</b>.
0023Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTION
Exemplary Device for Adjusting Page Layouts for File Arrangements
0024<figref idref="DRAWINGS">FIGS. 1A and 1B</figref> present exemplary views of a device <b>100</b> that may be used for automatically adjusting page layouts for displaying digital files. For example, the device <b>100</b> is configured to display graphical representations, such as thumbnails, of different types of digital files (also referred to simply as files), e.g., image files, video files, audio files, text files, map frames, or some other suitable type, using a graphical user interface (GUI) shown on the device display. The graphical representations may be presented on the display in an arrangement that is based on a page display layout. The device may receive one or more inputs from a user, who is operating the device, to change the position of one or more displayed files, and/or resize one or more displayed files, in the arrangement. Based on receiving the user inputs, the device <b>100</b> may automatically adjust the page display layout such that the updated arrangement of the graphical representations of the files in the GUI conforms to some rules associated with the page display layout.
0025In this context, a page refers to a portion of the GUI that is shown on a device display at a time. A page display layout, which is also referred to interchangeably as a page layout, print product layout, or grid layout, refers to an arrangement of files, or graphical representations thereof, in the GUI shown on the device display. The position of each file representation in the GUI may correspond to the position of the file in the underlying page layout. Each page layout is associated with rules that determine how the files are ordered in the page layout (and accordingly, how the files are displayed in the GUI), how the files are arranged relative to one another and relative to the overall page layout, or other suitable configuration parameters associated with presenting files for display in the GUI. In some implementations, a page layout includes one or more grid layouts (also referred to as grids) in which the files are arranged. The rules associated with the page layout may correspond to rules associated with the included grid layouts.
0026Adjusting a page layout refers to updating the positions of the files in the page layout in a manner that conforms to the rules associated with the page layout, as described in greater detail in the following sections. The operation of adjusting the page layout may be performed by the device hardware (e.g., processing circuitry, programmable hardware elements, ASICs, etc.) or software executed by the device (e.g., application software or operating system software that is configured to present the file arrangement on the device display, etc.). In some implementations, the device or the software executed by the device that adjusts the page layout may be same as the entity that is configured to present the GUI. However, in other implementations, adjusting the page layout and presenting the GUI may be performed by separate entities (e.g., different software modules). In the following sections, the term device is used to refer to both the device hardware and the above-mentioned software executed by device.
0027In this context, automatically adjusting refers to an action or operation performed by the device without user input directly specifying or performing the action or operation. Accordingly, the term “automatically” is in contrast to an operation being manually performed or specified by the user, where the user directly provides input to perform the operation. In some implementations, the automatic adjustment of a page layout may be initiated by input provided by the user, but the subsequent actions that are performed automatically are not specified by the user, i.e., are not performed manually, where the user specifies each action to perform. For example, the user providing input to change the position of a file in the arrangement shown in the GUI is selecting the file manually, even though the device may process the file (e.g., visually move the graphical representation of the file) in response to the user action. The device may automatically check whether the user-specified position change of the file satisfies the rules governing the page layout. Additionally or alternatively, when the device updates the position of the user-selected file, the device may automatically update positions of other files in the displayed arrangement, without any user input specifying the positions of the other files, such that the associated page layout rules are satisfied. The following sections provide various examples of operations being automatically performed in response to actions the user has taken.
0028As shown in <figref idref="DRAWINGS">FIG. 1A</figref>, the device <b>100</b> includes a display <b>102</b>. A graphical user interface (GUI) <b>104</b>A may be shown on the display <b>102</b>. One or more graphical representations of digital files (also referred to as files) <b>106</b>, <b>108</b> and <b>110</b> may be shown in the GUI <b>104</b>A.
0029<figref idref="DRAWINGS">FIG. 1B</figref> shows another example of the device <b>100</b>, which includes a different GUI <b>104</b>B shown on the display <b>102</b>. The GUI <b>104</b>B also may include one or more of the graphical representations of files <b>110</b>, <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>117</b> and <b>118</b>.
0030The device <b>100</b>, which is also referred to interchangeably as a user device or client device, is an electronic device. In some implementations, the device <b>100</b> may be a mobile device, for example, a smartphone; an electronic tablet; a portable music player; an electronic book reader; a wearable device including, for example, a smart watch, smart eyeglasses or a fitness tracker; a regular cellular phone; or a laptop computer, among others. For example, the device <b>100</b> shown in <figref idref="DRAWINGS">FIG. 1A</figref> may represent a laptop, while the device <b>100</b> shown in <figref idref="DRAWINGS">FIG. 1B</figref> may represent a smartphone or an electronic tablet. In some implementations, the device <b>100</b> may be a desktop computer.
0031The device <b>100</b> includes one or more input interfaces that allow the user to provide input. In some implementations, the device <b>100</b> includes input interface <b>132</b>, which may be, for example, a keyboard or a touchpad (as shown in <figref idref="DRAWINGS">FIG. 1A</figref>), or an electronic thumb button input (as shown in <figref idref="DRAWINGS">FIG. 1B</figref>). The input interface <b>132</b> also may be a mouse, track wheel, rotary dial or crown, or some other suitable input interface.
0032In some implementations, the device <b>100</b> includes a touch interface for enabling user input. For example, the display <b>102</b> may include a touch-sensitive surface. The user may provide input by touching the touch-sensitive surface using, for example, one or more fingers, or a stylus or digital pen, or some other suitable mechanism. The structure and components of the device <b>100</b> are described in the following sections with respect to the exemplary device architecture <b>500</b>, the exemplary network operating environment <b>600</b> and the exemplary system architecture <b>700</b>.
0033As described above, the GUI <b>104</b>A or the GUI <b>104</b>B may be presented on the display <b>102</b> by software executed by the device <b>100</b>. In some implementations, the software may be operating system software running on the device <b>100</b> that is configured to present the GUI <b>104</b>A or <b>104</b>B. For example, the operating system software may be Apple iOS™, Apple OS X™, or some other suitable operating system software. In some implementations, the software may be application software that is executed by the device <b>100</b>. The application software may be executed in addition, or as an alternative, to the operating system software. For example, the application software may be image and/or video processing software such as Apple iPhoto™, Apple Aperture™, Apple iMovie™, Apple OS X Photos application, Apple iOS Photos application, Apple iOS Video application, or some other suitable image and/or video processing software. Alternatively, the application software may be a text and/or document processing software such as Apple iOS Notes application, OS X Notes, Apple Pages™, Apple Keynote™, Apple Numbers™, or some other suitable text/document processing software.
0034As shown in <figref idref="DRAWINGS">FIGS. 1A and 1B</figref>, one or more graphical representations (for example, thumbnails) of files <b>106</b>, <b>108</b>, <b>110</b>, <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>117</b> and <b>118</b> may be shown in the GUI <b>104</b>A or <b>104</b>B. In some implementations, the graphical representations correspond to image files, such as photos. For example, <b>106</b>, <b>108</b>, <b>110</b>, <b>114</b> and <b>115</b> may correspond to image files and the associated graphical representations may represent thumbnails of the image files.
0035In some implementations, the graphical representations may correspond to video files. For example, the graphical representations <b>112</b> and <b>118</b> may represent video files, and <b>108</b> may be thumbnails of images from frames in the corresponding video files. In some implementations, the graphical representations of video files may include controls <b>112</b><i>a </i>or <b>118</b><i>a </i>for previewing/playing the video files.
0036In some implementations, the graphical representations may correspond to text files (e.g., documents). For example, graphical representation <b>116</b> may correspond to a text file and may be a thumbnail showing text from the document. Alternatively, the graphical representation <b>116</b> may represent entirety of a text file. For example, it may be a text caption, title, etc. In some implementations, a graphical representation may correspond to a mix of files of different types, such as one or more of images, videos and text, or some other suitable file type.
0037In some implementations, the graphical representations may correspond to map frames. For example, graphical representation <b>117</b> may correspond to a geographic map file.
0038As shown by the GUI <b>104</b>A and <b>104</b>B, the graphical representations may be shown in the GUI in a particular arrangement. For example, the graphical representations of the files <b>106</b>, <b>108</b>, <b>110</b>, etc. may be presented in the GUI <b>104</b>A in a two-dimensional array arrangement. Similarly, the graphical representations of the files <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>118</b>, etc. may be presented in the GUI <b>104</b>B in a different arrangement. Each arrangement of files in the GUI <b>104</b>A or <b>104</b>B may be based on an underlying page layout used by the device for determining how the file representations are shown in the GUI.
0039<figref idref="DRAWINGS">FIGS. 2A</figref>, <b>2</b>B, <b>2</b>C and <b>2</b>D present examples of page layouts <b>200</b>A, <b>200</b>B, <b>200</b>C and <b>200</b>D that may be used for displaying an arrangement of files in a GUI. One or more of the page layouts <b>200</b>A, <b>200</b>B, <b>200</b>C or <b>200</b>D may correspond to the arrangement of the file graphical representations in the GUI <b>104</b>A or <b>104</b>B or both. For example, the graphical representations <b>106</b>, <b>108</b>, <b>110</b>, etc. may be arranged in the GUI <b>104</b>A based on the page layout <b>200</b>A in <figref idref="DRAWINGS">FIG. 2A</figref>.
0040In some implementations, a page layout may include one or more grids or grid layouts corresponding to the arrangement of files. For example, the page layout <b>200</b>A may include a grid <b>202</b>; page layout <b>200</b>B may include a grid <b>207</b>; page layout <b>200</b>C may include a grid <b>204</b>; and page layout <b>200</b>D may include grids <b>202</b>, <b>203</b> and <b>205</b>. In some implementations, the terms page layout and grid layout may be used synonymously, e.g., when a page layout includes a single grid layout, such as the page layout <b>200</b>A including the grid layout <b>202</b>.
0041As noted previously, each page layout may be based on a certain thematic design intention for the arrangement of graphical representations in the GUI. For example, one theme or design intention may be to arrange the graphical representations in a manner that is suitable for a calendar display; another theme or design intention may correspond to a photo collage display; yet another design intention may correspond to a scrapbook theme.
0042For each design intention, there may be a predetermined set of rules that govern the associated page layout, i.e., one or more grids in the page layout. In some implementations, a rule associated with a grid layout may specify the positions of frames or elements in the grid, where a frame in the grid is associated with a graphical representation in the GUI. For example, the positions of the graphical representations <b>106</b>, <b>108</b> and <b>110</b> in the GUI <b>104</b>A may correspond to the elements (also referred to as frames) <b>206</b>, <b>208</b> and <b>210</b> that are specified in the grid <b>202</b>, and similarly other graphical representations in the GUI <b>104</b>A may correspond to other specified elements or frames (e.g. <b>211</b>) in the grid layout <b>202</b>.
0043In some implementations, when the user provides an input (e.g., using a suitable input interface or touch interface described above) to add the graphical representation of a file to the GUI <b>104</b>A, the predetermined rules governing the page layout <b>200</b>A (i.e., rules associated with the grid layout <b>202</b>) may automatically position the file in one of the frames specified in the page layout. For example, the frame <b>211</b> may be empty, i.e., not associated with an existing file graphical representation, and the page layout rules may position the graphical representation associated with the newly-added file in the frame <b>211</b>. Additionally or alternatively, a rule may specify the desired proximity of frames in the grid to each other, whether the frames are allowed to rotate, degree of rotation of the frames, or some other suitable design parameter.
0044In some implementations, the grid <b>207</b> shown in the page layout <b>200</b>B is similar to the grid <b>202</b>, and follows similar rules for positioning graphical representation associated with the newly-added files in available frames. However, the page layout <b>200</b>A may allow addition of graphical representations in similarly sized frames, while the page layout <b>200</b>B may allow addition of graphical representations in frames of different sizes. For example, the frames <b>206</b>, <b>208</b>, <b>209</b>, <b>210</b> and <b>211</b> in the grid <b>202</b> may be of the same size. In contrast, frame <b>219</b> in grid <b>207</b> may be of a different size than frames <b>221</b> or <b>223</b> in grid <b>207</b>. The frame <b>219</b> may be a multiple of the size of the frame <b>221</b> or <b>223</b>. In some implementations, frames <b>221</b> and/or <b>223</b> may be similar to one or more of the frames <b>206</b>, <b>208</b>, <b>209</b>, <b>210</b> and <b>211</b>.
0045In a manner similar to that described with respect to the GUI <b>104</b>A and the page layout <b>200</b>A, the graphical representations <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>117</b>, <b>118</b>, etc. may be arranged in the GUI <b>104</b>B based on the grid <b>204</b> included in the page layout <b>200</b>C shown in <figref idref="DRAWINGS">FIG. 2C</figref>. For example, the positions of the graphical representations <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>117</b> and <b>118</b> in the GUI <b>104</b>B may correspond to the frames <b>212</b>, <b>214</b>, <b>215</b>, <b>216</b>, <b>217</b> and <b>218</b> that are specified in the grid layout <b>204</b>, and similarly other graphical representations in the GUI <b>104</b>B may correspond to other frames in the grid layout <b>204</b>.
0046In some implementations, the page layout, or the grids included in a page layout, may be not be visible in the GUI. For example, the page layout <b>200</b>A, the page layout <b>200</b>B or the page layout <b>200</b>C may not be visible on the device display. Accordingly, the grid <b>202</b> including frames <b>206</b>, <b>208</b>, <b>210</b> and <b>211</b>, the grid <b>207</b> including the frames <b>219</b>, <b>221</b> and <b>223</b>, or the grid <b>204</b> including frames <b>212</b>, <b>214</b>, <b>215</b>, <b>216</b>, <b>217</b> and <b>218</b> may not be shown on the device display. The page layout <b>200</b>A, <b>200</b>B or <b>200</b>C may be an internal structure or configuration used by the device to arrange the graphical representations for presentation in one or more pages of the GUI <b>104</b>A or <b>104</b>B that are shown on the device display.
0047As noted above and described in the following sections, the predetermined rules associated with the grid(s) in the page layout may govern the displayed arrangement of the graphical representations in the GUI. In some implementations, the rules for a page layout may be configured as part of designing the page layout, e.g., by a developer who programs the page layout, or the software (either application software or operating system software) that provides the page layouts for displaying graphical representations in the GUI. In some other implementations, the rules for a page layout may be configured by a user.
0048A user may customize the arrangement of the graphical representations to suit the user's own preferences, and thereby modify the predetermined page layout. The device may accommodate the user's customizations while maintaining the overall design intention of the arrangement specified by the page layout by automatically updating frames in the page layout such that changes made based on the user input satisfy the rules associated with the page layout.
0049In some implementations, a page layout may be symmetrical or asymmetrical. For example, the grid <b>202</b> in the page layout <b>200</b>A may be a symmetrical grid in which all the specified frames are evenly-spaced. Correspondingly, the graphical representations <b>106</b>, <b>108</b>, <b>110</b>, etc., in the GUI <b>104</b>A, when based on the page layout <b>200</b>A, may be uniformly spaced as shown. In contrast, the grid <b>204</b> in page layout <b>200</b>C may be an asymmetrical grid layout in which the specified frames may not be evenly-spaced. Correspondingly, the graphical representations <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>118</b>, etc., in the GUI <b>104</b>B, when based on the page layout <b>200</b>C, may be less-uniformly, or irregularly, spaced as shown.
0050In some implementations, the device may use the same grid layout for files of different types. For example, the device <b>100</b> may use the grid layout <b>204</b> to arrange representations of video files (e.g., <b>212</b>), representations of image files (e.g., <b>214</b>), representations of map frames (e.g., <b>217</b>), and/or representations of text files (e.g., <b>216</b>) in the GUI <b>104</b>B. In such implementations, when the user provides an input to add a new graphical representation to a page in the GUI, the device may add the graphical representation to the GUI based on the existing grid layout used for the GUI, irrespective of the content type associated with the file being added.
0051However, in some implementations, the device may use different grid layouts for files of different types. For example, the device may use page layout <b>200</b>D, shown in <figref idref="DRAWINGS">FIG. 2D</figref>, to arrange graphical representations in a GUI based on the content types of the files being represented. The page layout <b>200</b>D includes multiple grid layouts <b>202</b>, <b>203</b> and <b>205</b>. For example, the graphical representations <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>117</b>, <b>118</b>, etc. may be arranged in the GUI <b>104</b>B based on one or more of the grid layouts <b>202</b>, <b>203</b> and/or <b>205</b> that are used simultaneously by the device to arrange the graphical representations in the GUI <b>104</b>B. The device may arrange representations of image files in the frames of the grid layout <b>202</b>; the device may arrange representations of video files and/or map frames using the grid layout <b>203</b>; and the device may arrange representations of text files in the frames of the grid layout <b>205</b>.
0052In some implementations, different grids in a page layout may follow different grid rules. For example, rules associated with the different grids may align the frames in their respective grids in different ways. Considering the page layout <b>200</b>D, the frames in the grid <b>202</b> may be equally-sized and/or aligned in a symmetric manner; the frames in grid <b>203</b> may be arbitrarily-shaped and/or aligned asymmetrically; and frames in the grid <b>205</b> may be aligned such that there is no gap between the frames, in contrast to the grids <b>202</b> and <b>203</b>.
0053In some implementations, different grids in a page layout may be in different physical planes such that the GUI arrangement of graphical representations based on the grids of the page layout may appear to have a three-dimensional effect. In some implementations, when a file representation is added to a grid in a page layout, the grid may be transformed such that the grid is in a different plane relative to other grids in the page layout, providing the three-dimensional effect.
0054In implementations that use different grid layouts for files of different types, when a user provides an input to add a new graphical representation to a page in the GUI, the device may check the content type associated with the file being added, and accordingly select a grid layout that is suitable for this content type. For example, in the scenario described above, the user may provide an input to add a new photograph to the GUI <b>104</b>B. Upon processing the user input, the device determines that the file being added to the GUI has content type image. Accordingly, the device selects the grid layout <b>202</b> that is used for image files, and positions the graphical representation of the newly-added file in a frame of the grid layout <b>202</b>, following the rules governing the grid layout <b>202</b>. However, if the device determines that the file being added to the GUI has content type text, then the device selects the grid layout <b>205</b> that is used for text files, and positions the graphical representation of the newly-added file in a frame of the grid layout <b>205</b>, following the rules governing the grid layout <b>205</b>. In this manner, rules associated with a page layout may be used to implement an intelligent grid system in which file representations are automatically arranged based on the associated content types.
0055When multiple grid layouts are used to arrange graphical representations in a GUI as described above, the different grid layouts may overlap on each other. For example, the graphical representation of a text file, which may be arranged using the grid layout <b>205</b>, may overlap on graphical representations of image files and/or video files, which may be arranged using the grid layouts <b>202</b> and <b>203</b> respectively. Accordingly, the graphical representation of text file <b>116</b> may overlap on the graphical representation of image file <b>115</b>, as shown in the GUI <b>104</b>B.
0056In some implementations, when multiple grid layouts are used, the device <b>100</b> may process the rules associated with the different grid layouts separately. For example, when adding or adjusting image files in the GUI <b>104</b>B, the device may adjust only the grid layout <b>202</b> that is used for image files, without affecting the grid layouts <b>203</b> or <b>205</b> that are used for files of other types. Adjustment may be limited to the grid layout that is used for the content type of the file being added/modified in situations where the rules for the different grid layouts can be satisfied independent of one another. This may be the case, for example, when the arrangement of file representations of one type in the GUI may be made independent of the arrangements) of file representations of other type(s) that may be concurrently present in the GUI.
0057In some other implementations, the device may process the rules associated with the different grid layouts together. In such implementations, adjustment to a grid layout may trigger adjustments to other grid layouts that are used concurrently for presenting items in the GUI. For example, when adding or adjusting an image file in the GUI <b>104</b>B, the device may adjust not only the grid layout <b>202</b> used for image files, but also the grid layouts <b>203</b> and/or <b>205</b>, which are used for files of the types. The adjustment to the different grid layouts for the different files types may be made such that the rules governing the grid layouts are satisfied in the event of a change to any one grid layout. This may be the case, for example, when the arrangement of file representations of one content type in the GUI may impact the arrangements) of file representations of other content type(s) that may be concurrently present in the GUI. The following sections describe how the device processes the rules governing page layouts and grid layouts when the device receives a user input for adjusting a graphical representation in the GUI.
0058<figref idref="DRAWINGS">FIGS. 3A</figref>, <b>3</b>B and <b>3</b>C illustrate examples of user inputs <b>302</b>, <b>306</b>, for adjusting graphical representations of files in a GUI. <figref idref="DRAWINGS">FIG. 3A</figref> shows an arrangement of graphical representations in a GUI where a user input is received to move one or more graphical representations. In some implementations, the GUI shown in <figref idref="DRAWINGS">FIG. 3A</figref> may be similar to the GUI <b>104</b>A. However, in other implementations the GUI shown in <figref idref="DRAWINGS">FIG. 3A</figref> may be some other suitable GUI that is presented on the display <b>102</b> of the device <b>100</b> (e.g., similar to GUI <b>104</b>B).
0059Referring to GUI <b>104</b>A, the user may provide input <b>302</b> to move the graphical representation <b>108</b> to a position in the GUI that is occupied by graphical representation <b>110</b>. The user may provide a similar input to adjust a graphical representation in the GUI <b>104</b>B. In some implementations, the user input <b>302</b> may correspond to a different adjustment, e.g., moving the graphical representation <b>108</b> to a different position in the GUI, changing the size of the graphical representation <b>108</b>, adding a new graphical representation to the GUI, removing a graphical representation from the GUI, or some other suitable adjustment to a graphical representation shown in the GUI.
0060In some implementations, in response to receiving the user input, the device processes the rules governing the underlying page layout to automatically adjust the positions of the graphical representations in the GUI. For example, when the user provides input <b>302</b> to move the graphical representation <b>108</b> to a position in the GUI <b>104</b>A that is occupied by graphical representation <b>110</b>, the device <b>100</b> may process the rules governing the page layout that corresponds to the GUI <b>104</b>A, e.g., page layout <b>200</b>A. Based on the user input <b>302</b>, the device may attempt to move the frame <b>208</b> corresponding to the graphical representation <b>108</b> to the position of the frame <b>210</b> in the grid layout <b>202</b> that is included in the page layout <b>200</b>A. The rules governing the grid layout <b>202</b> may specify that two frames cannot overlap in the grid. Accordingly, the device may move the frame <b>210</b> to a different position in the grid <b>202</b> to enable the frame <b>208</b> to move to the space previously occupied by the frame <b>210</b>. The frame <b>210</b> may be moved to a different position in a manner that satisfies the rules of the grid layout <b>202</b>. In moving the frame <b>210</b>, the device may adjust positions of other frames as well to satisfy the grid layout rules. The device <b>100</b> may evaluate remaining graphical representations in the GUI <b>104</b>A against the applicable page layout to determine if they need to be adjusted automatically to maintain the design intention, i.e., the rules associated with the page layout.
0061The above adjustments may be performed in a recursive manner. For example, when moving the frame <b>208</b> based on the user input, the device may first evaluate one or more frames that are adjacent to the frame <b>208</b> (e.g., <b>210</b>) and adjust these frames such that the rules associated with the page layout are satisfied. Then the device may further evaluate additional frames that are next to these adjusted frames adjacent to <b>208</b>, and adjust these additional frames as needed to satisfy the page layout rules. Subsequently the device may evaluate and adjust other frames that are adjacent to these additional frames, and so on. The adjustment process may continue until the page layout rules are satisfied for all the frames in the layout.
0062In some implementations, the recursive adjustments may be performed by evaluating not just the adjacent frames at a time, but instead one or more frames that are within a certain vicinity of the frames that have been adjusted. For example, all frames that are within N number of frames (where N is an integer, e.g., N=2 or 3) proximity to an adjusted frame may be evaluated at a time. In some implementations, the vicinity within which frames are evaluated and adjusted as needed may be a parameter that is preconfigured in the device.
0063<figref idref="DRAWINGS">FIG. 3B</figref> shows an arrangement of graphical representations in a GUI <b>304</b>A where a user input is received to add one or more new graphical representations. The GUI <b>304</b>A may present graphical representations of files <b>312</b>, <b>314</b>, <b>316</b> and <b>318</b> that are arranged with certain dimensions and in certain positions based on an underlying page layout that governs the GUI <b>304</b>A display. The user may provide an input <b>306</b> (for example, by selecting the “+” or add option displayed in the GUI <b>304</b>A) to add one or more new graphical representations to the arrangement shown in GUI <b>304</b>A.
0064In response to receiving the user input <b>306</b>, the device <b>100</b> may process one or more rules associated with a grid in the underlying page layout to add a frame or frames in the grid corresponding to the new file or files being added. By processing the rules, the device may automatically resize the dimensions of the existing frames, and/or automatically reposition the existing frames, to make space for each newly-added frame in the grid.
0065As described above, the automatic resizing and/or repositioning may be performed recursively. For example, an existing frame may be resized and/or repositioned and then one or more frames that are next to (i.e., adjacent to or within a certain vicinity of) the adjusted frame may be evaluated to determine if the grid rules are violated. If a determination is made that the grid rules are violated, then these one or more frames may be resized and/or repositioned. Subsequently, other frames that are next to these one or more frames may be evaluated and adjusted as needed. The adjustment process may continue until the page layout rules are satisfied for all frames in the layout, including the existing frames and the newly-added frame.
0066In some implementations, resizing and/or repositioning existing frames in the grid may be performed in a manner such that a suitable arrangement that is consistent with the overall thematic design of the page layout is achieved, while satisfying the grid rules. For example, the existing frames may be resized to make space for the newly-added frame(s) within the constrained area of the page layout. The resized dimensions of the existing frames and the dimension of the newly-added frame(s) may be consistent with one another. Additionally or alternatively, the existing frames may be repositioned to make space for the newly-added frame(s) within the constrained area of the page layout. The relative positions of the existing frames and the newly-added frame(s) may follow the positioning rules of the grid, e.g., they may be symmetrically (or asymmetrically, depending on the grid rule) placed with respect to each other.
0067In the above manner, for each new file that is added to the GUI <b>304</b>A by the user, the device <b>100</b> may automatically adjust existing frames in the underlying grid to accommodate a frame for the new file. In some implementations, the user may add multiple files simultaneously, e.g., by selecting a folder and adding all the files from the folder. The device <b>100</b> will recursively perform the automatic adjustments to the existing frames to add a frame corresponding to each new file. The automatic adjustments will terminate when frames corresponding to all the new files have been added to the grid, consistent with the grid rules.
0068<figref idref="DRAWINGS">FIG. 3C</figref> shows an arrangement of graphical representations in GUI <b>304</b>B after one or more new graphical representations are added to the page layout of GUI <b>304</b>A based on the user input <b>306</b>. As shown in GUI <b>304</b>B, the graphical representations <b>312</b>, <b>314</b>, <b>316</b> and <b>318</b> have been resized and repositioned in comparison to GUI <b>304</b>A, to make space for the new graphical representations <b>320</b>, <b>322</b>, <b>324</b>, <b>326</b> and <b>328</b>. Based on the grid rules of the underlying page layout, the device <b>100</b> has made the dimensions of all the graphical representations (and correspondingly, that of their associated frames in the underlying page layout) to be similar to one another. Additionally, the device <b>100</b> has positioned the graphical representations (and correspondingly, that of their associated frames in the underlying page layout) symmetrically spaced apart from one another and centered in the page.
0069In some implementations, the recursive automatic adjustments to the frames in a page layout to add new frames may be made for files of different content types. For example, a common layout may be used for files of different content types. Whenever the user adds an image file, video file, map frame, or text file, the device may adjust existing frames in the layout, irrespective of the content types.
0070In some implementations, the recursive automatic adjustments to the frames in a page layout to add new frames may be filtered based on file content types. For example, the page layout may use different grids for files of different content types. Whenever the user adds one or more new files, the device may check the content types of the files being added. For each newly-added file, the device may adjust existing frames in the grid layout that is used for arranging files with content type same as the newly-added file. If files of different content types are being added, then the device may adjust existing frames in different grid layouts, corresponding to the different content types of the newly-added files.
0071In the manner described above, upon receiving a user input to adjust a graphical representation in the GUI, the device may process the rules governing the underlying page layout in a recursive, automatic way until all violations of the rules are resolved. As noted previously, when a page layout includes a single grid layout, then the rules governing the page layout and the included grid layout may be the same. However, when a page layout includes multiple grid layouts, then the rules governing the page layout may be a combination of individual rules governing the included grid layouts.
0072In some implementations, one or more of grid layouts, e.g., <b>202</b>, <b>203</b>, <b>204</b> or <b>205</b>, may be a center-aligned grid layout (also referred to as center alignment grid), in which the centers of the file graphical representations are aligned in the grid. For example, the centers <b>206</b>A, <b>208</b>A, <b>210</b>A, etc., of the respective specified frames <b>206</b>, <b>208</b>, <b>210</b>, etc., may be aligned at the intersection points of rows and columns of the grid layout <b>202</b>. The graphical representations <b>106</b>, <b>108</b>, <b>110</b>, etc., may be arranged in the grid layout <b>202</b> such that the centers of the graphical representations align with the centers of their respective specified frames in the layout, such as <b>206</b>A, <b>208</b>A, <b>210</b>A, etc.
0073In a center alignment grid layout, if a user input is received to move a graphical representation, e.g., a photo or text frame, the item will be automatically adjusted to slide such that its center point aligns with the nearest grid intersection point in the layout. The rules associated with the grid layout may additionally specify that no two frames share the same grid intersection point. In such a case, once a graphical representation is moved by the user to the center point of a given frame in the grid layout, the device will evaluate all other graphical representations in the layout to see if any of their center points fall on the same grid intersection point. If a graphical representation is determined to violate the grid layout rules, the device will identify an unoccupied grid intersection point by examining the grid layout in a clockwise or counter-clockwise rotation. Once an unoccupied grid intersection point is found, the violating graphical representation will be moved to the unoccupied grid intersection point. If no neighboring grid intersection point is unoccupied, the device may elect to move the violating graphical representation to an occupied frame and then iterate for remaining graphical representations to push them out further. This process may repeat until all graphical representations adhere to the grid layout rule that no two graphical representations may occupy the same grid intersection point in the layout.
0074Similar to the grid layout <b>202</b>, the grid layout <b>207</b> also may be a center alignment grid. However, the areas covered by the frames <b>219</b>, <b>221</b> and <b>223</b> in the grid layout <b>207</b> can be different, provided that the center point of each frame is anchored at a grid intersection point, as dictated by the center alignment grid rule. The varying frame sizes in the grid layout <b>207</b> may be determined by some other metric, for example grid intersection lines. The center alignment grid layout may specify that the center point of a frame be anchored to an intersection, while the size and/or edges of the frame may adhere to a refinement of the grid rule (for example, the frame may be sized based on grid cell sizing). For example, the grid layout <b>207</b> may correspond to a center alignment grid with a frame sizing rule of “multiples of cell size.” Accordingly, the centers <b>221</b>A, <b>223</b>A or <b>219</b>A of the respective frames <b>221</b>, <b>223</b> or <b>219</b> may be aligned at intersection points of rows and columns of the grid layout <b>207</b>, while the sizes of the frames may be different. As shown in the grid layout <b>207</b>, each of frames <b>221</b> or <b>223</b> corresponds to a cell size and covers one grid intersection point. In contrast, frame <b>219</b> is of a larger size corresponding to multiple cells and spans multiple grid intersection points, but the center <b>219</b>A of frame <b>219</b> is anchored at an intersection point in the grid layout.
0075In some implementations, the grid layout rules may specify the positioning of the frames, but may not specify the frame sizes. For example, a page layout may include a center alignment grid layout that specifies a position to anchor each frame, but the page layout may not have any particular rule about the size of a frame. Further, although the grid layout <b>202</b> or <b>207</b> shows spaces between the frames, in some implementations, the frames in a center alignment grid layout may not have any space between some or all of the frames. For example, in some implementations frames <b>208</b> and <b>209</b> in the grid layout <b>202</b> may partially overlap with no space between the frames, as long as the respective center points <b>208</b>A and <b>209</b>A are anchored at grid intersection points. As another example, frames <b>223</b> and <b>219</b> in the grid layout <b>207</b> may partially overlap, as long as the respective center points <b>223</b>A and <b>219</b>A are anchored at grid intersection points. Other suitable arrangements also may be possible with a center alignment grid layout.
0076In some implementations, one or more of the grid layouts, e.g., <b>202</b>, <b>203</b>, <b>204</b> or <b>205</b>, may be a no-overlap grid layout (also referred to as no-overlap grid) in which a frame (e.g., associated with a graphical representation shown in the GUI) in the grid layout may be allowed to be positioned anywhere on a symmetrical or asymmetrical grid so long as the frame does not overlap with another frame. In such implementations, if a user input is received to adjust the position of a graphical representation (e.g., <b>108</b>) in the GUI, the device <b>100</b> may automatically align the corresponding frame (e.g., <b>208</b>) to the nearest grid intersection point. Additionally, the device <b>100</b> may resize the frame to ensure that edges of the frame match vertical and horizontal grid lines. Then the device may evaluate all remaining frames in the grid layout to ensure that the frames satisfy the associated grid layout rules, e.g., determining that edges and alignment points of the frames fall on grid lines/intersections, but not overlapping with other frames in the layout. This may correspond to graphical representations in the GUI <b>104</b>A, e.g., <b>106</b>, <b>108</b>, <b>110</b>, etc., occupying their respective frames in the grid layout <b>202</b> such that they are aligned with the grid lines without overlapping with each other.
0077The device may evaluate the frames in a recursive manner (e.g., one frame at a time) until the positions of all the frames in the grid layout are determined to satisfy the grid layout rules. In some implementations, the evaluation may be performed following a winding rule, i.e., by adjusting the frames in either clockwise or counterclockwise order to maintain a sense of order and an expected (i.e., consistent) result.
0078In some implementations, one or more of grid layouts, e.g., <b>202</b>, <b>203</b>, <b>204</b> or <b>205</b>, may be a no-gap grid layout (also referred to as no-gap grid) in which a frame (e.g., associated with a graphical representation shown in the GUI) in the grid layout may be allowed to be positioned anywhere on a symmetrical or asymmetrical grid, but no space in the grid layout may be left unfilled. In such implementations, a frame in a grid layout (e.g., <b>206</b>, <b>208</b>, <b>210</b>, etc. in grid layout <b>202</b> or <b>212</b>, <b>214</b>, <b>215</b>, <b>216</b>, <b>217</b>, <b>218</b>, etc., in grid layout <b>204</b>) is positioned to be adjacent to another frame in the grid layout.
0079In such implementations, if a user input is received to adjust a graphical representation (e.g., <b>108</b>) in the GUI, e.g., by resizing the graphical representation (and correspondingly resizing the associated frame, e.g., <b>208</b>, in the grid layout), the device <b>100</b> may automatically evaluate the position and size of a frame immediately adjacent (e.g., <b>209</b>) to the original edge of the resized frame. The device <b>100</b> may adjust the size of the adjacent frame (e.g., <b>209</b>) such that the frame's edge remains touching the modified edge of the frame adjusted by the user (e.g., <b>208</b>). Then the device may re-adjust all other frames in the grid layout to remove any remaining gaps. In some implementations, the device may perform this recursive evaluation following a winding rule, i.e., adjusting the frames in either a clockwise or counterclockwise order to ensure predictability of the arrangement of the graphical representations in the GUI, as viewed by the user.
0080As noted above, in some implementations, the rules associated with a page layout may be a combination of several different rules. For example, the rules associated with the page layout <b>200</b>D may combine the no-gap grid rule with the no-overlap grid rule. In such implementations, the device <b>100</b> may first check the arrangement of the graphical representations in the GUI, and correspondingly the positions of the frames in the page layout, based on the no-overlap grid rule, since new gaps may be created to satisfy the no-overlap grid rule. Subsequently, the device may check the page layout using the no-gap grid rule to resolve any violations of that rule.
0081When a page layout, such as <b>200</b>D, includes multiple grids, a first grid (e.g., <b>202</b>) may be used for image files, a second grid (e.g., <b>203</b>) may be used for video files or map frames, a third grid (e.g., <b>205</b>) may be used for text files, and an additional grid may be used for art embellishments in the layout. The multiple grids may overlap completely to cover the entire page layout space. Alternatively, the different grids may occupy distinct regions. For example, the rules associated with the page layout may specify that all image files be in the left-half of the page aligning to their grid (e.g., <b>202</b>), while all text files be in the right-half of the page aligning to their own distinct grid (e.g., <b>205</b>).
0082In some implementations, the rules associated with a page layout may specify clear zones in the layout where graphical representations and associated frames are not allowed to be present. In such implementations, an edge of a frame may be adjacent to an edge of a clear zone, but may not fill the clear zone. In some implementations, the rules may specify that a frame is allowed to span a clear zone if the size of the frame is greater than the size of the clear zone itself.
0083In some implementations, the rules associated with a page layout may include uniform gutter spacing rules, which specify that edges of frames corresponding to graphical representations are at a predetermined distance (referred to as the gutter) from each other without touching. In some implementations, the gutters may be applied for discrete grid lines (horizontal or vertical) in a page layout that includes asymmetrical gutter spacing (e.g., page layout <b>200</b>C in which the distances between frames may be asymmetrical).
0084In some implementations, the arrangement of graphical representations in a GUI (e.g., <b>104</b>A) may follow a page layout that is based on a print product theme, i.e., a specific arrangement of frames in the page layout configured for printing the ordered display of graphical representations as a calendar, greeting card, etc. The print product theme may specify a default set of grids included in the page layout used in the theme. In some implementations, the number of grids that are included in the page layout used in the theme may be unlimited.
0085In some implementations, the print product theme may be designed such that the user is allowed to modify an individual page layout by changing the default set of grids with a locally-defined set of grids that are used for the particular page layout. For example, a page layout specified in a print product theme may include default grids for arranging graphical representations of image files, such as <b>202</b>, and for arranging map frames, such as <b>203</b>. The user may modify the page layout to include a grid for inserting text files into the print product theme, e.g., by adding the grid <b>205</b> for inserting graphical representations of text files along with image files and/or map frames.
0086In the manner described in the preceding sections, the device <b>100</b> may present in the GUI graphical representations of files that are arranged following predetermined rules associated with an underlying page layout. The graphical representations may be arranged in the page layout such that they are suitable for printing, e.g., as a photo collage or album, calendar, greeting card, etc. The device may allow the user to customize the arrangement of the graphical representations to suit the user's own preferences. The device may accommodate the user's customizations while maintaining the design intention of the arrangement specified by the page layout by automatically updating the graphical representations such that changes made based on the user input satisfy the rules associated with the page layout.
Exemplary Procedures for Automatically Adjusting Page Layouts for File Arrangements
0087<figref idref="DRAWINGS">FIGS. 4A-4E</figref> are flowcharts illustrating exemplary processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D and <b>400</b>E for automatically adjusting page layouts for file arrangements. One or more of the processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D or <b>400</b>E may be used by a device to automatically adjust the positions of frames in a page layout to satisfy the rules governing the page layout when a user input is received for adjusting the position of a graphical representation of a file in a GUI that is based on the page layout. For example, one or more of the processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D or <b>400</b>E may be used by the device <b>100</b> to adjust the page layout <b>200</b>A (and/or the grid layout <b>202</b> included in page layout <b>200</b>A) when user input <b>302</b> is received to adjust the graphical representation <b>108</b> in the GUI <b>104</b>A, which may be based on the page layout <b>200</b>A. Accordingly, the following section describes the processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D and <b>400</b>E as being performed by the device <b>100</b>. However, the processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D and <b>400</b>E also may be performed by other devices, systems or system configurations.
0088In some implementations, the processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D and <b>400</b>E are executed by hardware components of the device <b>100</b>, such as processing circuitry, programmable hardware elements, ASICs, etc. In some other implementations, the processes <b>400</b>A, <b>400</b>B, <b>400</b>C, <b>400</b>D and <b>400</b>E are executed by software running on the device <b>100</b>, such as application software or operating system software that is configured to present the file arrangement on the device display, etc. The software may include instructions that are stored in memory coupled to the device <b>100</b>, and may be executed by one or more processors included in the device <b>100</b>.
0089As shown by process <b>400</b>A in <figref idref="DRAWINGS">FIG. 4A</figref>, at <b>402</b>, first files are received for presentation using a graphical user interface on a device display. For example, the device <b>100</b> may receive a user input to display an arrangement of graphical representations of files, such as <b>106</b>, <b>108</b>, <b>110</b>, etc. The user input may be associated with showing the files using a print product theme, i.e., using a page layout that is conducive to printing as an album, a calendar, a greeting card, etc.
0090In some implementations, the content types associated with the first files are determined at <b>404</b>. For example, in some implementations the device <b>100</b> may be configured to present files of different content types using different grids in a page layout. As described previously, the device <b>100</b> may use page layout <b>200</b>D, in which image files (i.e., graphical representations thereof) may be arranged using the grid layout <b>202</b>, video files and/or map frames may be arranged using the grid layout <b>203</b> and text files may be arranged using the grid layout <b>205</b>. The device <b>100</b> may check the content type associated with each file that is to be represented in the page layout to determine the grid layout in which the file is to be included.
0091In some implementations, at <b>406</b> a first template is selected for layout of the first files based on the content type. Continuing with the above example, if the device <b>100</b> determines that a file is of content type image (e.g., the file may be a photo) then the device selects the grid layout <b>202</b> for arranging the file. On the other hand, if the device <b>100</b> determines that a file is of content type video, then the device selects the grid layout <b>203</b> for arranging the file. Alternatively, if the device <b>100</b> determines that a file is of content type text, then the device selects the grid <b>205</b> for arranging the file.
0092In this context, in some implementations a template may refer to a page layout, such as <b>200</b>A. This may be the case, for example, when a page layout includes a single grid such that the terms page layout and grid layout may be used interchangeably, as noted previously. In some other implementations, a template may refer to a grid layout that is included in a page layout, e.g., grid layout <b>202</b> or <b>205</b>. This may be the case, for example, when a page layout includes multiple grids.
0093In some implementations, the device may be configured to present files of different content types using a common grid in a page layout. For example, the device <b>100</b> may use page layout <b>200</b>C and present files of different content types, such as image, video, map frames, text files, etc. using the same grid layout <b>204</b>. In such implementations, the content type associated with the first files may not be determined at <b>404</b>, and/or a first template for layout of the first files may not be selected at <b>406</b> based on the file content type.
0094At <b>408</b>, the first files are presented in the graphical user interface arranged in a page layout. For example, the device <b>100</b> may display graphical representations of files, such as <b>106</b>, <b>108</b>, <b>110</b>, etc., arranged in the GUI <b>104</b>A, which may be based on the page layout <b>200</b>A. Additionally or alternatively, the device <b>100</b> may display graphical representations of files, such as <b>112</b>, <b>114</b>, <b>115</b>, <b>116</b>, <b>117</b>, <b>118</b>, etc., arranged in the GUI <b>104</b>B, which may be based on the page layout <b>200</b>C or the page layout <b>200</b>D. The arrangement of the graphical representations in the GUI <b>104</b>A or <b>104</b>B may follow predetermined rules associated with the respective underlying page layout. The rules may be based on certain design intentions, for example, to enable printing the arrangement of graphical representations as a calendar, an album, a greeting card, or some other suitable form.
0095In some implementations, when the first files are presented in the GUI arranged in a page layout, a first user input is received for adjusting a selected file at <b>410</b>, as shown by the process <b>400</b>B in <figref idref="DRAWINGS">FIG. 4B</figref>. For example, the user may provide input <b>302</b> to move the graphical representation <b>108</b> in the GUI <b>104</b>A, or to adjust the graphical representation in some other suitable manner.
0096At <b>412</b>, the layout parameter(s) of the selected file are adjusted based on the first rule corresponding to the first template. For example, upon receiving the user input to adjust the graphical representation <b>108</b>, the device <b>100</b> may adjust the frame <b>208</b> corresponding to the graphical representation <b>108</b> in the grid layout <b>202</b>. The device <b>100</b> may move the frame <b>208</b> to a new position (e.g., position occupied by frame <b>210</b>) if the user input was to move the graphical representation <b>108</b> to the position of the graphical representation <b>110</b>. Additionally or alternatively, the device may change dimensions of the frame <b>208</b>, for example, if the user input was to resize the graphical representation <b>108</b>.
0097At <b>414</b>, one or more next files are evaluated to determine if the first rule is satisfied following adjusting the layout parameter(s) of the selected file. For example, the device <b>100</b> may make adjustments to the frame <b>208</b> when a user input is received to adjust the graphical representation <b>108</b> in the GUI <b>104</b>A. When the frame <b>208</b> is adjusted based on the user input, other frames also may be adjusted. In some implementations, the device may examine a first frame that is adjacent to the frame <b>208</b> to determine if the first frame is to be adjusted to satisfy the rules governing the page layout. For example, the device may reposition frame <b>210</b> to make space for moving the frame <b>208</b> if the user input is to move the graphical representation <b>108</b> to the position occupied by graphical representation <b>110</b>. Accordingly, the device <b>100</b> may automatically evaluate or examine one or more frames in the page layout that are next to (i.e., adjacent to or within a certain vicinity of) the frame corresponding to the user-selected graphical representation to check whether one or more rules governing the page layout are violated when the user-selected frame is adjusted.
0098At <b>416</b>, the device determines whether the first rule is violated. For example, when frame <b>208</b> is adjusted in the grid layout <b>202</b>, the device <b>100</b> may evaluate one or more frames that are next to (i.e., adjacent to or within a certain vicinity of) the frame <b>208</b> and determine that one or more rules associated with the grid layout <b>202</b> are violated when the frame <b>208</b> is adjusted.
0099If the device determines that the first rule is violated, then at <b>418</b> layout parameters of one or more of the next files are adjusted. For example, the device <b>100</b> may determine that when frame <b>210</b> is moved to accommodate the user-specified adjustment to frame <b>208</b>, then a rule associated with the grid layout <b>202</b> is violated. For example, the rule may include center alignment grid rule, and adjusting the frame <b>208</b> and/or the frame <b>210</b> may result in these frames sharing a common grid intersection point with one or more other frames in the vicinity, which may be a violation of the rule. Alternatively, the rule may include no-overlap grid rule, and adjusting the frame <b>208</b> and/or the frame <b>210</b> may result in these frames overlapping with one or more adjacent frames in the grid, which may be a violation of the rule. Alternatively, the rule may include no-gap grid rule, and adjusting the frame <b>208</b> and/or the frame <b>210</b> may result in a gap being created between these frames and one or more adjacent frames in the grid, which may be a violation of the rule. If the device <b>100</b> determines that a grid rule is violated, then the device <b>100</b> may adjust layout parameters of one or more frames in the grid that are next to the frame <b>208</b> and/or the frame <b>210</b>, until all violations of the grid rule are resolved.
0100The device may perform the automatic adjustments recursively. For example, after an adjustment is made at <b>418</b>, the device may evaluate, at <b>414</b>, one or more additional frames that are next to the adjusted frames (e.g., either adjacent to, or in a certain vicinity of, the frame <b>208</b>, the frame <b>210</b>, or another frame next to <b>208</b> and/or <b>210</b> that has been adjusted at <b>418</b>). Based on evaluating these additional frames, the device may determine at <b>416</b> whether the first rule is still violated.
0101If the device determines that the first rule is satisfied, then at <b>420</b> the first files are presented in the updated arrangement using the first template. For example, the device <b>100</b> may resolve all violations of the page layout rule(s) following <b>414</b>, <b>416</b> and <b>418</b>. Alternatively, the adjustment to a user-selected graphical representation may not lead to a violation of the page layout rule. In either case, the device <b>100</b> may cease performing automatic adjustments to the frames in the page layout, and present the graphical representations in an updated arrangement in the GUI, e.g., similar to that shown in GUI <b>104</b>A or <b>104</b>B, with the graphical representations suitably modified based on the user input and/or automatic adjustments. The updated arrangement may satisfy the rule(s) associated with the underlying page layout, such that the design intention of the page layout is preserved.
0102In some implementations, when the first files are presented in the GUI arranged in a page layout at <b>408</b>, a second user input is received at <b>422</b> for adding one or more new files for presentation in the graphical user interface, as shown by the process <b>400</b>C in <figref idref="DRAWINGS">FIG. 4C</figref>. For example, the user may provide input to add graphical representations of one or more new files to the GUI <b>104</b>A (or GUI <b>104</b>B).
0103At <b>424</b>, the first template is adjusted based on the first rule for adding each new file. For example, in response to receiving the user input to add graphical representations of one or more new files to the GUI <b>104</b>A, the device <b>100</b> may automatically position each file in one of the frames specified in the page layout <b>200</b>A. For each new file that is positioned in a frame in the page layout, the device may check whether the rules associated with the page layout are satisfied when the new file is added to the page layout. For example, the frame <b>211</b> may be empty, and the device may position the graphical representation associated with a newly-added file in the frame <b>211</b>, ensuring that rules corresponding to the grid layout <b>202</b> are satisfied.
0104Alternatively, as described with respect to GUIs <b>304</b>A and <b>304</b>B, when user input <b>306</b> is received to add one or more new files to the GUI, the device <b>100</b> may recursively adjust the dimensions and/or positions of existing frames in the underlying page layout to accommodate a new frame for each new file being added. Adjustments to existing frames in the page layout may be performed in a manner such that a suitable arrangement consistent with the overall thematic design of the page layout is achieved, while satisfying the grid rules.
0105At <b>426</b>, the one or more new files are presented in the updated arrangement using the first template. For example, the device <b>100</b> may present graphical representations of existing and new files in an updated arrangement in the GUI, e.g., similar to the arrangement shown in GUI <b>104</b>A or <b>104</b>B, with the graphical representations suitably modified based on the user input and/or automatic adjustments. The updated arrangement may satisfy the rule associated with the underlying page layout, such that the design intention of the page layout is preserved.
0106In some implementations, in addition to presenting the first files in the GUI arranged in a page layout at <b>408</b>, the device may present second files in the graphical user interface arranged using a second template at <b>432</b>, as shown by the process <b>400</b>D in <figref idref="DRAWINGS">FIG. 4D</figref>. For example, the device <b>100</b> may use different page layouts, or different grids in a page layout, to arrange files of different content types. As described previously, using the page layout <b>200</b>D, the device <b>100</b> may present image files (i.e., graphical representations thereof) following the grid layout <b>202</b>, and present text files following the grid layout <b>205</b>. The device <b>100</b> may check the content type associated with each file that is to be represented in the page layout to determine the grid layout in which the file is to be included.
0107In such implementations, a second user input is received for adjusting the layout parameter of a second selected file at <b>434</b>. For example, the user may provide an input to adjust the graphical representation of text file <b>116</b> in the GUI <b>104</b>B.
0108At <b>436</b>, the layout parameter(s) of the second selected file are adjusted based on a second rule associated with the second template. For example, upon receiving the user input to adjust the graphical representation <b>116</b>, the device <b>100</b> may adjust a frame corresponding to the graphical representation <b>116</b> in the grid layout <b>205</b>. The device <b>100</b> may move the frame corresponding to the graphical representation <b>116</b> to a new position if the user input was to move the graphical representation <b>116</b>. Additionally or alternatively, the device may change the dimension of the frame corresponding to the graphical representation <b>116</b>, for example if the user input was to resize the graphical representation <b>116</b>. In some implementations, the device <b>100</b> may adjust one or more frames in the grid layout <b>205</b> without affecting the grid layout <b>203</b> that is concurrently used to display an arrangement of image files in the GUI <b>104</b>B.
0109At <b>438</b>, one or more next files of the second files are evaluated to determine if the second rule is satisfied after adjusting the second selected file. For example, the device <b>100</b> may make adjustments to a frame corresponding to the graphical representation <b>116</b> in the grid layout <b>205</b> when a user input is received to adjust the graphical representation <b>116</b> in the GUI <b>104</b>B. When the frame is adjusted based on the user input, other frames in the grid layout <b>205</b> also may be adjusted. In some implementations, the device may initially examine a frame that is adjacent to the frame corresponding to the graphical representation <b>116</b> to determine if the first frame is to be adjusted to satisfy the rules governing the grid layout <b>205</b>. The device may reposition the adjacent frame to make space for moving the frame corresponding to the graphical representation <b>116</b> if the user input is to move the graphical representation <b>116</b> to a different position in the GUI <b>104</b>B. Accordingly, the device <b>100</b> may automatically evaluate or examine one or more frames in the grid layout <b>205</b> that are next to (i.e., adjacent to or within a certain vicinity of) the frame corresponding to the user-selected graphical representation <b>116</b> to check whether one or more rules governing the grid layout <b>205</b> are violated when the frame corresponding to the user-selected graphical representation <b>116</b> is adjusted.
0110At <b>440</b>, the device determines whether the second rule is violated. For example, the device <b>100</b> may automatically determine whether an adjustment to the frame corresponding to the graphical representation <b>116</b> in the grid layout <b>205</b> violates one or more rules associated with the grid layout <b>205</b>.
0111If the device determines that the second rule is violated, then at <b>442</b> layout parameters of one or more of the next files of the second files are adjusted without adjusting the layout parameters of the first files. For example, the device <b>100</b> may determine that when the frame corresponding to the graphical representation <b>116</b> in the grid layout <b>205</b> is adjusted based on the user input, then a rule associated with the grid layout <b>205</b> is violated. In some implementations, the rule may include center alignment grid rule, and adjusting the frame corresponding to the graphical representation <b>116</b> may result in this frame sharing a common grid intersection point with another frame that is adjacent to it or within a certain vicinity of it, which may be a violation of the rule. Alternatively, the rule may include no-overlap grid rule, and adjusting the frame corresponding to the graphical representation <b>116</b> may result in this frame overlapping with an adjacent frame in the grid, which may be a violation of the rule. Alternatively, the rule may include no-gap grid rule, and adjusting the frame corresponding to the graphical representation <b>116</b> may result in a gap being created between this frame and an adjacent frame in the grid, which may be a violation of the rule. If the device <b>100</b> determines that a grid rule is violated, then the device <b>100</b> may automatically adjust layout parameters of one or more frames in the grid layout <b>205</b> that are next to the frame corresponding to the graphical representation <b>116</b> until all violations of the grid rule are resolved.
0112The device may perform the automatic adjustments recursively. For example, after an adjustment is made at <b>442</b>, the device may evaluate, at <b>438</b>, one or more additional frames that are adjacent to, or in the vicinity of, the frames adjusted previously at <b>442</b>. Based on evaluating these additional frames, the device may determine at <b>440</b> whether the second rule associated with the grid layout used for the text files is still violated.
0113Any adjustments made to frames in the grid layout <b>205</b> may be limited to the grid layout <b>205</b>. The device <b>100</b> may perform these adjustments without affecting the grid layout <b>203</b> that is used concurrently in the same page layout, e.g., to arrange image files in the GUI. In this manner, when different page layouts, or different grids in a page layout, are used to arrange files of different content types, then the device may automatically adjust one or more of the different page layouts or grids layouts independent of one another. Thus the device <b>100</b> may ensure that automatic adjustments that are made to arrangement of files of one content type do not affect arrangements of files other content types that are simultaneously displayed.
0114If the device determines at <b>440</b> that the second rule is not violated, then at <b>444</b> the second files are presented in the updated arrangement using the second template. For example, the device <b>100</b> may resolve all violations of the grid layout rule(s) for text files following <b>438</b>, <b>440</b> and <b>442</b>. Alternatively, the adjustment to a user-selected graphical representation of a text file may not lead to a violation of a rule for the layout grid used for text files. In either case, the device <b>100</b> may cease performing automatic adjustments to the frames corresponding to the text files in the page layout, and present the graphical representations of the text files in an updated arrangement in the GUI, e.g., similar to that shown in GUI <b>104</b>B, with the graphical representations suitably modified based on the user input and/or automatic adjustments. The updated arrangement of the text files may satisfy the rule associated with the underlying grid layout, e.g., <b>205</b>, such that the design intention of the page layout is preserved. Additionally, graphical representations of files of other content types, e.g., image files, are also presented in the GUI, arranged following a different grid layout, e.g., <b>203</b>. The arrangement of files of the other content types may be presented without any adjustments, even though the arrangement of the text files may be updated.
0115In some implementations, when the first files are presented in the GUI arranged in a page layout at <b>408</b>, a second user input is received at <b>450</b> for adding a new file for presentation in the graphical user interface, as shown by the process <b>400</b>E in <figref idref="DRAWINGS">FIG. 4E</figref>. For example, the user may provide input to add the graphical representation of a new file to the GUI <b>104</b>B, which includes image files, video files, map frames, and/or text files, as described previously.
0116The content type associated with the new file is determined at <b>452</b>. For example, in some implementations the device <b>100</b> may be configured to present files of different content types using different page layouts, or different grids in a page layout, as described previously. In such implementations, the device <b>100</b> may check the content type associated with a new file when user input is received to add the new file to the GUI.
0117At <b>454</b>, the device determines whether the content type of the new file is different from the content type of first files. If the device determines that the content type of the new file is not different from the content type of the first files, then at <b>456</b> the new file is presented on the graphical user interface arranged with the first files using the first template. For example, the first files (or graphical representations thereof) that are presented in the GUI may be image files, and the new file that is to be added also may be an image file. In such a case, the device <b>100</b> adds the new file to a position in an existing page layout that is used for the image files, following the rules associated with the page layout, and presents the arrangement of the image files, including the new file, in the GUI.
0118On the other hand, if the device determines that the content type of the new file is different from the content type of the first files, then at <b>458</b> a second template is selected for presenting the new file on the graphical user interface. For example, the first files (or graphical representations thereof) that are presented in the GUI may be image files that are arranged using the grid layout <b>202</b>, but the new file that is to be added may be a text file. Accordingly, the device may select a different grid layout, e.g., grid layout <b>205</b>, for presenting the newly-added text file in the GUI.
0119At <b>460</b>, the new file is presented in the graphical user interface arranged using the second template following a second rule associated with the second template. For example, the device <b>100</b> may select the grid layout <b>205</b> for presenting the newly-added text file and add the text file to a frame of the grid layout <b>205</b> following a rule governing the grid layout <b>205</b>. Then the device may present graphical representation of the text file in the GUI <b>104</b>B, e.g., similar to the graphical representation <b>116</b>, based on the arrangement specified by the underlying grid layout <b>205</b>. Concurrently, the device may present graphical representations of the image files in the GUI <b>104</b>B, e.g., similar to the graphical representations <b>114</b> and <b>115</b>, which may be arranged based on the grid layout <b>202</b>. The arrangement of files of different content types may satisfy the rules associated with the respective underlying grid layouts such that the design intention of the overall page layout is preserved.
Exemplary Device Architecture
0120<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram illustrating exemplary device architecture <b>500</b> of an electronic device implementing the features and operations of <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C and <b>4</b>A-<b>4</b>E. In some implementations, the device architecture <b>500</b> may correspond to the architecture of the user device <b>100</b>. An electronic device (e.g., the device <b>100</b>) can include memory interface <b>502</b>, one or more data processors, image processors and/or processors <b>504</b>, and peripherals interface <b>506</b>. Memory interface <b>502</b>, one or more processors <b>504</b> and/or peripherals interface <b>506</b> can be separate components or can be integrated in one or more integrated circuits. Processors <b>504</b> can include application processors, baseband processors, and wireless processors. The various components in the mobile device, for example, can be coupled by one or more communication buses or signal lines.
0121Sensors, devices, and subsystems can be coupled to peripherals interface <b>506</b> to facilitate multiple functionalities. For example, motion sensor <b>510</b>, light sensor <b>512</b>, and proximity sensor <b>514</b> can be coupled to peripherals interface <b>506</b> to facilitate orientation, lighting, and proximity functions of the mobile device. Location processor <b>515</b> (e.g., a Global Navigation Satellite System (GNSS) receiver) can be connected to peripherals interface <b>506</b> to provide geopositioning. Electronic magnetometer <b>516</b> (e.g., an integrated circuit chip) can also be connected to peripherals interface <b>506</b> to provide data that can be used to determine the direction of magnetic North. Thus, electronic magnetometer <b>516</b> can be used as an electronic compass. Motion sensor <b>510</b> can include one or more accelerometers configured to determine change of speed and direction of movement of the mobile device. Barometer <b>517</b> can include one or more devices connected to peripherals interface <b>506</b> and configured to measure pressure of atmosphere around the mobile device.
0122Camera subsystem <b>520</b> and an optical sensor <b>522</b>, e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, for example, recording photographs and video clips.
0123Communication functions can be facilitated through one or more wireless communication subsystems <b>524</b>, which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of the communication subsystem <b>524</b> can depend on the communication network(s) over which a mobile device is intended to operate. For example, a mobile device can include communication subsystems <b>524</b> designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi™ or WiMAX™ network, and a Bluetooth™ network. In particular, the wireless communication subsystems <b>524</b> can include hosting protocols such that the mobile device can be configured as a base station for other wireless devices.
0124Audio subsystem <b>526</b> can be coupled to a speaker <b>528</b> and a microphone <b>530</b> to facilitate voice-enabled functions, for example, voice recognition, voice replication, digital recording, and telephony functions. Audio subsystem <b>526</b> can be configured to receive voice commands from the user.
0125I/O subsystem <b>540</b> can include touch surface controller <b>542</b> and/or other input controller(s) <b>544</b>. Touch surface controller <b>542</b> can be coupled to a touch surface <b>546</b> or pad. Touch surface <b>546</b> and touch surface controller <b>542</b> can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with touch surface <b>546</b>. Touch surface <b>546</b> can include, for example, a touch screen.
0126Other input controller(s) <b>544</b> can be coupled to other input/control devices <b>548</b>, for example, one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device, for example, a stylus. The one or more buttons (not shown) can include an up/down button for volume control of speaker <b>528</b> and/or microphone <b>530</b>.
0127In one implementation, a pressing of the button for a first duration may disengage a lock of the touch surface <b>546</b>; and a pressing of the button for a second duration that is longer than the first duration may turn power to the mobile device on or off. The user may be able to customize a functionality of one or more of the buttons. The touch surface <b>546</b> also can be used, for example, to implement virtual or soft buttons and/or a keyboard.
0128In some implementations, a mobile device can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, the mobile device can include the functionality of an MP3 player. The mobile device may, therefore, include a pin connector that is compatible with the iPod. Other input/output and control devices can also be used.
0129Memory interface <b>502</b> can be coupled to memory <b>550</b>. Memory <b>550</b> can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR). Memory <b>550</b> can store operating system <b>552</b>, such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, iOS, or an embedded operating system such as VxWorks. Operating system <b>552</b> may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system <b>552</b> can include a kernel (e.g., UNIX kernel).
0130Memory <b>550</b> may also store communication instructions <b>554</b> to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers. Memory <b>550</b> may include graphical user interface (GUI) instructions <b>556</b> to facilitate graphic user interface processing; sensor processing instructions <b>558</b> to facilitate sensor-related processing and functions; phone instructions <b>560</b> to facilitate phone-related processes and functions; electronic messaging instructions <b>562</b> to facilitate electronic-messaging related processes and functions; web browsing instructions <b>564</b> to facilitate web browsing-related processes and functions; media processing instructions <b>566</b> to facilitate media processing-related processes and functions; GNSS/Navigation instructions <b>568</b> to facilitate GNSS (e.g., GPS) and navigation-related processes and instructions; camera instructions <b>570</b> to facilitate camera-related processes and functions; magnetometer data <b>572</b> and calibration instructions <b>574</b> to facilitate magnetometer calibration. The memory <b>550</b> may also store other software instructions (not shown), such as security instructions, web video instructions to facilitate web video-related processes and functions, and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, the media processing instructions <b>566</b> are divided into audio processing instructions and video processing instructions to facilitate audio processing-related processes and functions and video processing-related processes and functions, respectively. An activation record and International Mobile Equipment Identity (IMEI) or similar hardware identifier can also be stored in memory <b>550</b>. Memory <b>550</b> can store location confirmation instructions <b>576</b>. Location confirmation instructions <b>576</b>, upon execution, can cause processor <b>504</b> to perform operations of location-based processes.
0131Each of the above identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules. Memory <b>550</b> can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device may be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits.
Exemplary Operating Environment
0132<figref idref="DRAWINGS">FIG. 6</figref> is a block diagram of exemplary network operating environment <b>600</b> for the electronic devices implementing the features and operations of <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C, <b>4</b>A-<b>4</b>E and <b>5</b>. Each of electronic devices <b>602</b><i>a </i>and <b>602</b><i>b </i>can be a user device as described with reference to <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C, <b>4</b>A-<b>4</b>E and <b>5</b>. The devices <b>602</b><i>a </i>and <b>602</b><i>b </i>can communicate, for example, over one or more wired and/or wireless networks <b>610</b> in data communication. For example, a wireless network <b>612</b>, e.g., a cellular network, can communicate with a wide area network (WAN) <b>614</b>, such as the Internet, by use of a gateway <b>616</b>. Likewise, an access device <b>618</b>, such as an 802.11g wireless access point, can provide communication access to the wide area network <b>614</b>.
0133In some implementations, both voice and data communications can be established over wireless network <b>612</b> and the access device <b>618</b>. For example, device <b>602</b><i>a </i>can place and receive phone calls (e.g., using voice over Internet Protocol (VoIP) protocols), send and receive e-mail messages (e.g., using Post Office Protocol 3 (POP3)), and retrieve electronic documents and/or streams, such as web pages, photographs, and videos, over wireless network <b>612</b>, gateway <b>616</b>, and wide area network <b>614</b> (e.g., using Transmission Control Protocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)). Likewise, in some implementations, the device <b>602</b><i>b </i>can place and receive phone calls, send and receive e-mail messages, and retrieve electronic documents over the access device <b>618</b> and the wide area network <b>614</b>. In some implementations, device <b>602</b><i>a </i>or <b>602</b><i>b </i>can be physically connected to the access device <b>618</b> using one or more cables and the access device <b>618</b> can be a personal computer. In this configuration, device <b>602</b><i>a </i>or <b>602</b><i>b </i>can be referred to as a “tethered” device.
0134Devices <b>602</b><i>a </i>and <b>602</b><i>b </i>can also establish communications by other means. For example, device <b>602</b><i>a </i>can be a wireless device that communicates with other wireless devices, e.g., mobile devices, cell phones, etc., over the wireless network <b>612</b>. Likewise, devices <b>602</b><i>a </i>and <b>602</b><i>b </i>can establish peer-to-peer communications <b>620</b>, e.g., a personal area network, by use of one or more communication subsystems, such as the Bluetooth™ communication devices. Other communication protocols and topologies can also be implemented.
0135Device <b>602</b><i>a </i>or <b>602</b><i>b </i>can communicate, for example, with one or more services <b>630</b> and <b>640</b> over the one or more wired and/or wireless networks. For example, one or more location services <b>630</b> can provide representations of addresses or and associated assumed locations for confirmation. Map services <b>640</b> can provide a virtual map for display. The virtual map can include addresses of land features that are confirmed by a user device.
0136Device <b>602</b><i>a </i>or <b>602</b><i>b </i>can also access other data and content over the one or more wired and/or wireless networks. For example, content publishers, such as news sites, Really Simple Syndication (RSS) feeds, web sites, blogs, social networking sites, developer networks, etc., can be accessed by device <b>602</b><i>a </i>or <b>602</b><i>b</i>. Such access can be provided by invocation of a web browsing function or application (e.g., a browser) in response to a user touching, for example, a Web object.
0137As described above, some aspects of the subject matter of this specification include gathering and use of data available from various sources to improve services a mobile device can provide to a user. The present disclosure contemplates that in some instances, this gathered data may identify a particular location or an address based on device usage. Such personal information data can include location-based data, addresses, subscriber account identifiers, or other identifying information.
0138The present disclosure further contemplates that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices. In particular, such entities should implement and consistently use privacy policies and practices that are generally recognized as meeting or exceeding industry or governmental requirements for maintaining personal information data private and secure. For example, personal information from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of those legitimate uses. Further, such collection should occur only after receiving the informed consent of the users. Additionally, such entities would take any needed steps for safeguarding and securing access to such personal information data and ensuring that others with access to the personal information data adhere to their privacy policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices.
0139In the case of advertisement delivery services, the present disclosure also contemplates embodiments in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, in the case of advertisement delivery services, the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services.
0140Therefore, although the present disclosure broadly covers use of personal information data to implement one or more various disclosed embodiments, the present disclosure also contemplates that the various embodiments can also be implemented without the need for accessing such personal information data. That is, the various embodiments of the present technology are not rendered inoperable due to the lack of all or a portion of such personal information data. For example, content can be selected and delivered to users by inferring preferences based on non-personal information data or a bare minimum amount of personal information, such as the content being requested by the device associated with a user, other non-personal information available to the content delivery services, or publically available information.
Exemplary System Architecture
0141<figref idref="DRAWINGS">FIG. 7</figref> is a block diagram of exemplary system architecture <b>700</b> for implementing the features and operations of <figref idref="DRAWINGS">FIGS. 1A-1B</figref>, <b>2</b>A-<b>2</b>D, <b>3</b>A-<b>3</b>C, <b>4</b>A-<b>4</b>E, <b>5</b> and <b>6</b>. Other architectures are possible, including architectures with more or fewer components. System architecture <b>700</b> can be implemented by components of an electronic device, e.g., device <b>100</b>. In some implementations, architecture <b>700</b> includes one or more processors <b>702</b> (e.g., dual-core Intel® Xeon® Processors), one or more output devices <b>704</b> (e.g., LCD), one or more network interfaces <b>706</b>, one or more input devices <b>708</b> (e.g., mouse, keyboard, touch-sensitive display) and one or more computer-readable mediums <b>712</b> (e.g., RAM, ROM, SDRAM, hard disk, optical disk, flash memory, etc.). These components can exchange communications and data over one or more communication channels <b>710</b> (e.g., buses), which can utilize various hardware and software for facilitating the transfer of data and control signals between components.
0142The term “computer-readable medium” refers to any medium that participates in providing instructions to processor <b>702</b> for execution, including without limitation, non-volatile media (e.g., optical or magnetic disks), volatile media (e.g., memory) and transmission media. Transmission media includes, without limitation, coaxial cables, copper wire and fiber optics.
0143Computer-readable medium <b>712</b> can further include operating system <b>714</b> (e.g., Mac OS® server, Windows Server®, or iOS®), network communication module <b>716</b>, location analysis instructions <b>720</b>, location confirmation instructions <b>730</b>, and map service instructions <b>740</b>. Operating system <b>714</b> can be multi-user, multiprocessing, multitasking, multithreading, real time, etc. Operating system <b>714</b> performs basic tasks, including but not limited to: recognizing input from devices <b>708</b> and providing output to devices <b>704</b>; keeping track and managing files and directories on computer-readable medium <b>712</b> (e.g., memory or a storage device); controlling peripheral devices; and managing traffic on the one or more communication channels <b>710</b>. Network communications module <b>716</b> includes various components for establishing and maintaining network connections (e.g., software for implementing communication protocols, such as TCP/IP, HTTP, etc.). Location analysis instructions <b>720</b> can include instructions that, when executed, causes processor <b>702</b> to perform operations of a significant location subsystem. Location confirmation instructions <b>730</b> can include instructions that, when executed, causes processor <b>702</b> to perform server-side operations. Map service instructions <b>740</b> can include instructions that, when executed, causes processor <b>702</b> to provide map information to user devices. The map information can include confirmed locations of street addresses.
0144Architecture <b>700</b> can be implemented in a parallel processing or peer-to-peer infrastructure or on a single device with one or more processors. Software can include multiple software components or can be a single body of code.
0145The described features can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, in a computer to perform a certain activity or bring about a certain result. A computer program can be written in any form of programming language (e.g., Objective-C, Java), including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, a browser-based web application, or other unit suitable for use in a computing environment.
0146Suitable processors for the execution of a program of instructions include, by way of example, both general and special purpose microprocessors, and the sole processor or one of multiple processors or cores, of any kind of computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memories for storing instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
0147To provide for interaction with a user, the features can be implemented on a computer having a display device such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor for displaying information to the user and a keyboard and a pointing device such as a mouse or a trackball by which the user can provide input to the computer.
0148The features can be implemented in a computer system that includes a back-end component, such as a data server, or that includes a middleware component, such as an application server or an Internet server, or that includes a front-end component, such as a client computer having a graphical user interface or an Internet browser, or any combination of them. The components of the system can be connected by any form or medium of digital data communication such as a communication network. Examples of communication networks include, e.g., a LAN, a WAN, and the computers and networks forming the Internet.
0149The computer system can include clients and servers. A client and server are generally remote from each other and typically interact through a network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
0150A number of examples and implementations of the invention have been described. Nevertheless, it will be understood that various modifications and enhancements to the described examples and implementations and other implementations can be made based on what is disclosed without departing from the spirit and scope of the invention.
Contents6
16 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US12579703B1 | Cited by | United States of America | Search report |
| USD1117249S | Cited by | United States of America | Search report |
| US2018046361A1 | Cited by | United States of America | Search report |
| USD920364S | Cited by | United States of America | Applicant |
| US11200374B2 | Cited by | United States of America | Search report |
| US2021342044A1 | Cited by | United States of America | Search report |
| US11481083B2 | Cited by | United States of America | Search report |
| USD854557S | Cited by | United States of America | Search report |
| CN114527977A | Cited by | China | Search report |
| US2018046361A1 | Cited by | United States of America | Search report |
| USD833463S | Cited by | United States of America | Search report |
| US2024345852A1 | Cited by | United States of America | Search report |
| US10831855B2 | Cited by | United States of America | Search report |
| US11921987B2 | Cited by | United States of America | Search report |
| US2023035241A1 | Cited by | United States of America | Search report |
| US2017357679A1 | Cited by | United States of America | Search report |
| US2024111939A1 | Cited by | United States of America | Search report |
| US9715501B2 | Cited by | United States of America | Search report |
| US2018046361A1 | Cited by | United States of America | Search report |
| JP2022100438A | Cited by | Japan | Search report |
| US2017357679A1 | Cited by | United States of America | Search report |
| US2013195378A1 | Cited by | United States of America | Pre-grant |
| US2020336608A1 | Cited by | United States of America | Search report |
| USD845966S | Cited by | United States of America | Search report |
| US10955999B2 | Cited by | United States of America | Search report |
| US11662876B2 | Cited by | United States of America | Search report |
| US11615233B2 | Cited by | United States of America | Search report |
| JP2019074830A | Cited by | Japan | Search report |
| CN114327732A | Cited by | China | Search report |
| CN111680241A | Cited by | China | Search report |
| USD1117305S | Cited by | United States of America | Search report |
| WO2019018062A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2023064505A1 | Cited by | United States of America | Search report |
| US11468224B2 | Cited by | United States of America | Search report |
| US2017161952A1 | Cited by | United States of America | Pre-grant |
| US2019163330A1 | Cited by | United States of America | Search report |
| USD858539S | Cited by | United States of America | Search report |
| USD857050S | Cited by | United States of America | Applicant |
| US2023289024A1 | Cited by | United States of America | Search report |
| USD862505S | Cited by | United States of America | Applicant |
| US12236182B2 | Cited by | United States of America | Search report |
| US9984662B2 | Cited by | United States of America | Search report |
| US11140287B2 | Cited by | United States of America | Search report |
| US2018046361A1 | Cited by | United States of America | Pre-grant |
| US12487838B2 | Cited by | United States of America | Search report |
| JP2022100438A | Cited by | Japan | Search report |
| US11627227B2 | Cited by | United States of America | Search report |
| USD874506S | Cited by | United States of America | Applicant |
1 member in 1 office; this record represents the family
Priority claims1
| Document | Office | Kind | Date |
|---|---|---|---|
| 201462057606 | United States of America | P |
Members1
| Document | Office | Kind | |
|---|---|---|---|
| US2016092091A1 | United States of America | A1 |
28 transactions on the USPTO file
Abandoned after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Email NotificationEML_NTR | EML_NTR | |
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Applicant Initiated Interview SummaryMEXIA | MEXIA | |
| Interview Summary - Examiner Initiated - TelephonicEXET | EXET | |
| Interview Summary- Applicant InitiatedEXIA | EXIA | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Preliminary AmendmentA.PE | A.PE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Cleared by OIPE CSRL194 | L194 | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Information on status: application discontinuationABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTIONSTCB | STCB | |
| AssignmentAS | AS |
Numbers
- Publication
- 20160092091
- Application
- 14868561
Titles
- English
- ADJUSTING PAGE LAYOUTS
Classification
- CPC, 11
- G06F3/04847
- G06T11/60
- G06F3/04845
- G06F2203/04803
- G06F3/0482
- G06F3/04886
- G06F3/04842
- G06F17/248
- G06T2200/24
- G06F40/106
- G06F40/186
- IPC, 4
- G06F3 0484
- G06F3 0482
- G06F17 24
- G06T11 60