Techniques are disclosed for generating a pixel-aligned layout grid. In some examples, a method may include receiving an input that quantifies a selected one of multiple horizontal dimensions, a number of columns, a column width, a gutter width, and a margin width, of a layout grid. The method may also include, responsive to receiving the input, calculating respective integer values for the remaining multiple horizontal dimensions based on the received input quantifying the selected one of the multiple horizontal dimensions. The method may further include generating a layout grid based on the integer values for the remaining multiple horizontal dimensions and the received input quantifying the selected one of the multiple horizontal dimensions, and rendering the generated layout grid as a pixel-aligned layout grid.
|
1. A computer-implemented method to generate a pixel-aligned layout grid, the method comprising:
causing a first layout grid to render on a display, wherein the first layout grid is defined by an initial value for each of four horizontal parameters including an initial number of columns, an initial column width of each column, an initial gutter width of each gutter, and an initial margin width;
receiving a first user input, wherein the first user input specifies an updated value for one of the four horizontal parameters of the first layout grid;
calculating updated values for the remaining three horizontal parameters based on the first user input, such that each of the updated values for the four horizontal parameters is an integer value;
generating a second layout grid based on the updated values for the four horizontal parameters; and
causing the second layout grid to render on the display as a pixel-aligned layout grid.
10. A computer program product including one or more non-transitory machine-readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out to generate a pixel-aligned layout grid, the process comprising:
causing, by a design application, a first layout grid to render in a graphical user interface (GUI), wherein the GUI comprises a plurality of text fields for specifying values for a plurality of horizontal parameters of the first layout grid, the plurality of horizontal parameters including an initial number of columns, an initial column width of each column, an initial gutter width of each gutter, and an initial;
receiving, by the GUI, a first input specifying an updated value for a one of the horizontal parameters;
calculating, by a layout generator, updated values for the remaining three horizontal parameters based on the first input such that each of the calculated updated values is an integer value;
generating, by the layout generator, a second layout grid based on the updated values for the four horizontal parameters; and
causing, by the design application, the second layout grid to render in the GUI as a pixel-aligned layout grid.
18. A system to generate a pixel-aligned layout grid, the system comprising:
one or more non-transitory machine-readable mediums configured to store instructions; and
one or more processors configured to execute the instructions stored on the one or more non-transitory machine-readable mediums, wherein execution of the instructions causes the one or more processors to
cause a first layout grid to render on a display;
receive a first user input, wherein the first user input specifies a value for one or more but not all of at least four horizontal dimensions of the first layout grid, the four horizontal dimensions including a number of columns in the first layout grid, a column width of each column in the first layout grid, a gutter width of each gutter in the first layout grid, and a margin width of the first layout grid;
responsive to receipt of the first user input,
calculate respective integer values for the remaining ones of the four horizontal dimensions based on the first user input, such that each of the values for the four horizontal dimensions is an integer value;
generate a second layout grid based on the integer values for the four horizontal dimensions; and
cause the second layout grid to render on the display as a pixel-aligned layout grid, wherein the second layout grid is caused to render in a design canvas;
receive a second user input that resizes a width of the design canvas;
responsive to receipt of the second user input,
calculate updated integer values for the four horizontal dimensions based on the resized width of the design canvas;
generate a third layout grid based on the updated integer values for the four horizontal dimensions; and
cause the third layout grid to render in the design canvas as a modified pixel-aligned layout grid.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
receiving a second user input that specifies a resized width of the design canvas; and
responsive to receiving the second user input,
calculating second updated values for the four horizontal parameters based on the resized width of the design canvas, such that each of the second updated values for the four horizontal parameters is an integer value;
generating a third layout grid based on the second updated values for the four horizontal; and
causing the third layout grid to render in the design canvas having the resized width as a modified pixel-aligned layout grid.
7. The method of
the first layout grid includes a left margin and a right margin, and
a width of the left margin and a width of the right margin are equal to the initial margin width.
8. The method of
the first layout grid includes a left margin and a right margin,
receiving the first user input quantifies an updated margin width,
calculating the updated values for the remaining three horizontal parameters includes calculating a modified margin width of either the left margin or the right margin, and
the modified margin width is different by one pixel from the updated margin width.
9. The method of
displaying the initial values for the four horizontal parameters before receiving the first user input; and
displaying the updated values for the four horizontal parameters after generating the second layout grid.
11. The computer program product of
12. The computer program product of
13. The computer program product of
14. The computer program product of
15. The computer program product of
receiving, by the GUI, a second input that specifies a resized width of the design canvas; and
responsive to receiving the second input,
calculating, by the layout grid generator, second updated values for the plurality of horizontal parameters based on the resized width of the design canvas such that each of the second updated values for each of the plurality of horizontal parameters is an integer value;
generating, by the layout grid generator, a third layout grid based on the second updated values for the plurality of horizontal parameters; and
causing, by the design application, the third layout grid to render in the design canvas having the resized width as a modified pixel-aligned layout grid.
16. The computer program product of
the first layout grid includes a left margin and a right margin, and
a width of the left margin and a width of the right margin are equal to the initial margin width.
17. The computer program product of
the first layout grid includes a left margin and a right margin,
receiving the first input quantifies an updated margin width,
calculating the updated values for the remaining three horizontal parameters includes calculating a modified margin width of either the left margin or of the right margin, and
the modified margin width is different by one pixel from the updated margin width.
19. The system of
20. The system of
|
This disclosure relates generally to layout grids for computer-based design projects, and more particularly, to pixel-aligned layout grids, including adjustment of pixel-aligned layout grids.
Designers commonly use layout grids in designing electronic documents. A layout grid is generally a set of vertical reference lines or columns that helps designers to place, position, and align content, typically on a design canvas. The structure of the lines helps a designer to manage the proportions between the elements to be aligned on the design canvas. When using the design canvas to design a webpage, for instance, the layout grid serves as a visual framework for the webpage's layout.
Some conventional design applications may assist the designer in setting the reference lines on a given design canvas by allowing the designer to input the grid dimensions. Unfortunately, these design applications typically rely on the use of floating point numbers and therefore do not allow the designer to specify or access all the parameters necessary to generate the reference lines or columns of the grid of interest. For instance, while a user may be able to specify margin width for a desired layout grid, the user cannot access or otherwise set the column width of the grid. Instead, the column width of the desired grid is auto calculated based on the other grid parameters (e.g., margin and gutter) specified by the user. This is where the use of floating values comes into play. In such cases, if a user wants a specific column width, then the user is required to indirectly back into that desired width by setting the correct margins and gutters accordingly. Such computation can be quite challenging and time consuming for many users. Further, conventional design applications perform the calculations in a manner that often results in the reference lines of the grid not being evenly aligned or not aligned on pixels, thus generating “blurry” and visually unpleasant reference lines. As a result, conventional layout grids are difficult and cumbersome to use. Moreover, conventional layout grids fail to provide a consistent design experience across multiple devices having differing screen sizes.
The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral, as will be appreciated when read in context.
In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be used, and other changes may be made, without departing from the spirit or scope of the subject matter presented herein. The aspects of the present disclosure, as generally described herein, and illustrated in the Figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations, all of which are explicitly contemplated herein.
Techniques are disclosed herein for facilitating generation of a layout grid whose horizontal dimensions are integer (e.g., whole number rather than floating point) values. According to an embodiment, the layout grid is defined horizontally by a number of columns, a column width, a gutter width, and a margin width. The values for number of columns, column width, gutter width, and margin width quantify four horizontal dimensions of the layout grid. A layout grid whose aforementioned four horizontal dimensions are integer values may be rendered in a manner in which the columns of the layout grid are pixel-aligned. That is, in the case of a layout grid whose number of columns, column width, gutter width, and margin width are each quantified by respective integer values, the edges of the columns in the layout grid are aligned with or otherwise snapped to pixel locations when such a layout grid is rendered on a display.
A pixel-aligned layout grid provides a layout grid that appears sharp and crisp when rendered, for instance, on a display. In contrast, certain portions of a conventional layout grid having one or more horizontal dimensions that are non-integer or so-called floating point values may appear blurry (e.g., not sharp or crisp) when rendered. This is due to one or more of the columns of such a layout grid not being pixel-aligned when rendered. Also, in the case of a pixel-aligned layout grid, an element snapped to or aligned with a column in the layout grid also appears clear when rendered. In comparison, an element snapped to or aligned with a column that is not pixel-aligned may appear blurry when rendered. Furthermore, moving a non-pixel-aligned column to be pixel-aligned may cause the columns in the layout grid to be inconsistently spaced. To this end, the techniques provided herein endeavor to remedy such deficiencies associated with conventional techniques.
In accordance with an embodiment, a graphical user interface is provided for generating a layout grid. The user interface allows for specifying values for any of the following four dimensions or parameters: number of columns, column width, gutter width, and margin width. As will be appreciated, these dimensions horizontally define the layout grid. In an example implementation, the user interface may include respective text fields for each of the horizontal dimensions that define a layout grid. The text fields may be used by a user for specifying values for the respective horizontal dimensions, and for displaying current values of the respective horizontal dimensions. In some such implementations, the user interface may also include text fields for displaying values of other parameters or attributes of the layout grid, such as a width and a height of the layout grid and the current pixel location of an active element, to name a few examples.
In an example use case and embodiment, a user, such as a designer, may generate or adjust a layout grid by specifying a value for any of the horizontal dimensions that define the layout grid. In this case, the user may specify a value for a specific horizontal dimension without knowing or having knowledge of the values of any of the other horizontal dimensions. Responsive to a value being provided for one horizontal dimension, the values of the other horizontal dimensions may be calculated such that the horizontal dimensions of the generated layout grid are each integer values. For example, suppose a user is using a design canvas provided by a design application to generate an electronic document. Further suppose that the design application supports a layout grid feature, and the user wants to generate a layout grid to aid in generating the electronic document. To generate a layout grid, the user may specify an integer value for any one of the horizontal dimensions, for instance, a value for the column width of the layout grid the user wants to generate. In response, the design application calculates the number of columns, the gutter width, and the margin width to be each integer values (e.g., integer number for the number of columns, and integer number of pixels for the gutter width and the margin width). For instance, in one such implementation, the design application generates a layout grid having a width that is the same as the width of the design canvas. In such implementations, the design application may calculate the number of columns, the gutter width, and the margin width based on the column width specified by the user and the width of the design canvas. The design application may then render the generated layout grid on the design canvas as a pixel-aligned layout grid. Likewise, the user may specify an integer value for any one of the horizontal dimensions to adjust a rendered pixel-aligned layout grid.
The disclosed techniques significantly improve the ease and efficiency of generating and adjusting a pixel-aligned layout grid. For example, in certain embodiments, the techniques allow a user to generate, adjust, or otherwise manipulate a pixel-aligned layout grid by specifying a value for any one of the horizontal dimensions of the layout grid without having to calculate the values of the other or remaining horizontal dimensions. This is far easier and faster than conventional layout grid generation approaches which require the user to calculate or otherwise back into one or more horizontal dimensions of a layout grid before attempting to generate the layout grid. Also, by generating a layout grid that is rendered pixel-aligned, the disclosed techniques provide an improved and higher quality layout grid, as compared to existing layout grids that may not be pixel-aligned when rendered. For example, the pixel-aligned layout grid allows for quick and efficient placement or alignment of an element on pixel locations. Furthermore, the columns of the layout grid remain pixel-aligned even when the width of the layout grid is changed. In a general sense, the techniques facilitate the fast and efficient generation of a pixel-aligned layout grid, as well as the designing of electronic documents using the pixel-aligned layout grid. These and other advantages and alternative embodiments will be apparent in light of this disclosure.
As used herein, the term “pixel-aligned” refers, in addition to its plain and ordinary meaning, to a property where an edge of an object is located on pixel locations when rendered on a display. In the context of a layout grid, a column is pixel-aligned when the left edge (or vertical segment) and the right edge (or vertical segment) of the columns in the layout grid are positioned on pixel locations when the layout grid is rendered. For example, the left and right edges of a pixel-aligned column will be positioned on respective vertical lines of pixels.
Design application 106 is generally configured to provide for generating user experience (UX) and/or user interface (UI) designs, such as webpages, websites, electronic documents, and mobile applications, to name a few examples. Design application 106 is also configured to provide the overall control of the generation, use, and operation of a pixel-aligned layout grid utilizing the services and functionality of GUI 108 and layout grid generator 110, as necessary. For instance, according to some embodiments, design application 106 may be an interface design application, such as Adobe XD, which provides a design canvas (e.g., an artboard) for use by a user, such as a designer, in designing an electronic document. In some such embodiments, the pixel-aligned layout grid as variously described herein in conjunction with GUI 108 and layout grid generator 110 may be incorporated into and provided as part of the interface design application.
GUI 108 is configured to provide a graphical user interface that allows a user to interact with design application 106. For example, the user may use GUI 108 to access a design canvas with which to design an electronic document, such as a web page or a user interface, to name two examples. The design canvas may function as a digital work surface, such as an artboard, with which the user may visually design the electronic document. As will be described in further detail below, according to some embodiments, GUI 108 is configured to provide a user interface for generating, adjusting, and otherwise manipulating a pixel-aligned layout grid as part of the design canvas. GUI 108 is also capable of displaying a rendering of a pixel-aligned layout grid.
Layout grid generator 110 is configured to perform the calculations to generate a layout grid having horizontal dimensions that are each integer values. In accordance with some embodiments of the present disclosure, layout grid generator 110 may perform the calculations to generate a layout grid upon detecting or otherwise determining an update of or an adjustment to a horizontal dimension of a layout grid, including an update of or an adjustment to the width of a layout grid. For instance, responsive to a user specifying an integer value for the number of columns to include in a layout grid, layout grid generator 110 calculates the remaining horizontal dimensions of the layout grid (e.g., column width, gutter width, and margin width) to be integer values based on the user-provided number of columns and the current width of the design canvas. Likewise, responsive to a user specifying an integer value for a gutter width, layout grid generator 110 calculates the other horizontal dimensions of the layout grid (e.g., number of columns, column width, and margin width) to be integer values based on the user-provided gutter width and the current width of the design canvas. Layout grid generator 110 may, in some instances, perform the calculations using default values for one or more of the horizontal dimensions. For instance, in the case where a layout grid is being generated for the first time, layout grid generator 110 may use respective default values for one or more of the horizontal dimensions when performing the calculations.
In some embodiments, layout grid generator 110 is configured to generate a layout grid having a width that is the same (e.g., equal) as a width of a design canvas in which the layout grid is rendered. According to one embodiment, a width of the design canvas may be expressed as follows:
canvaswidth=(columns*columnwidth)+((columns−1)*gutterwidth)+leftmargin+rightmargin
where canvaswidth is the width of the design canvas, columns is the number of columns in the layout grid, columnwidth is the width of each column in the layout grid, gutterwidth is the width of each gutter in the layout grid, and leftmargin and rightmargin are the width of the left margin and the right margin, respectively, in the layout grid. In such embodiments, columns may be specified in units of columns, and canvaswidth, columnwidth, gutterwidth, leftmargin, and rightmargin may each be specified in units of pixels. In some embodiments, the left margin and the right margin in a layout grid may be linked such that the left margin and the right margin are to have the same width. Linking the left and right margins to have the same width provides for centering of the layout grid. In such embodiments, the value of the horizontal dimension margin width specifies the width of the left margin and the width of the right margin. For example, a margin width of 72 pixels specifies a left margin of width 72 pixels and a right margin of width 72 pixels. Layout grid generator 110 will be further described below with respect to
As depicted, GUI 200 includes text fields 202, 204, 206, and 208. Text field 202 allows for specifying a value for a number of columns to include in a layout grid. Text field 204 allows for specifying value for a gutter width in the layout grid. The gutter width is the space or interval between adjacent columns in the layout grid. Text field 206 allows for specifying a value for a column width of each column in the layout grid. Text field 208 allows for specifying a value for a margin width in the layout grid. The margin width is the width of a left margin and the width of a right margin. The value specified in text field 202 indicates a number of columns, and the values specified in text fields 204, 206, and 208 each indicate a number of pixels.
In some embodiments, GUI 200 is configured to provide editing of the numerical values in text fields 202, 204, 206, and 208 using up and down arrows keys (not depicted) provided by each of text fields 202, 204, 206, and 208 or up and down arrow keys on a keyboard. For instance, depressing the up/down arrow key may increment/decrement the value in a text field to the next integer value that allows for calculating the horizontal dimensions of a layout grid to be integer values. For example, suppose the current column width is 64 pixels, and a user depresses the up arrow key to increment the column width. In this example, if the next integer value of 65 pixels does not allow the calculation of the other horizontal dimensions to be integer values, integer value 65 is not displayed in text field 206. Similarly, if the following integer value of 66 pixels also does not allow the calculation of the other horizontal dimensions to be integer values, integer value 66 is also not displayed in text field 206. Rather, the next larger integer value for the column width that allows for the calculation of the other horizontal dimensions to be integer values is displayed in text field 206. For instance, if integer value 68 is the first integer value that allows the calculation of the other horizontal dimensions to be integer values, integer value 68 is displayed in text field 206. Along with integer value 68 being displayed in text field 206, respective integer values calculated for number of columns, gutter width, and margin width are displayed in text fields 202, 204, and 208. In some embodiments, the calculation of the horizontal dimensions is performed to minimize change to the margin width.
As depicted in
Continuing the example use case and embodiment, the user may want to widen the width of the gutters from 16 pixels to 24 pixels in layout grid 210 (e.g., adjust the gutter width in layout grid 210), and may specify the integer value 24 in text field 204. The input specified in text field 204 quantifies the width of each gutter in the layout grid. Responsive to the integer value 24 being entered in text field 204, layout grid generator 110 may calculate (e.g., recalculate) the values for the other horizontal dimensions of the layout grid. As depicted in
Further continuing the example use case and embodiment, the user may want to widen the width of the columns from 55 pixels to 62 pixels in layout grid 210 (e.g., adjust the column width in layout grid 210), and may specify the integer value 62 in text field 206. The input specified in text field 206 quantifies the width of each column in the layout grid. Responsive to the integer value 62 being entered in text field 206, layout grid generator 110 may calculate the values for the other horizontal dimensions of the layout grid. As depicted in
As will be further appreciated in light of this disclosure, for this and other processes and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Additionally or alternatively, two or more operations may be performed at the same time or otherwise in an overlapping contemporaneous fashion. Furthermore, the outlined actions and operations are only provided as examples, and some of the actions and operations may be optional, combined into fewer actions and operations, or expanded into additional actions and operations without detracting from the essence of the disclosed embodiments.
With reference to
With reference to
With reference to
With reference to
With reference to
With reference to
In general, processor 1402 may include any suitable special-purpose or general-purpose computer, computing entity, or computing or processing device including various computer hardware, firmware, or software modules, and may be configured to execute instructions, such as program instructions, stored on any applicable computer-readable storage media. For example, processor 1402 may include a microprocessor, a microcontroller, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a Field-Programmable Gate Array (FPGA), or any other digital or analog circuitry configured to interpret and/or to execute program instructions and/or to process data. Although illustrated as a single processor in
In some embodiments, processor 1402 may be configured to interpret and/or execute program instructions and/or process data stored in memory 1404, data storage 1406, or memory 1404 and data storage 1406. In some embodiments, processor 1402 may fetch program instructions from data storage 1406 and load the program instructions in memory 1404. After the program instructions are loaded into memory 1404, processor 1402 may execute the program instructions.
For example, in some embodiments, any one or more of the engines, components and/or modules of layout grid system 100 may be included in data storage 1406 as program instructions. Processor 1402 may fetch some or all of the program instructions from data storage 1406 and may load the fetched program instructions in memory 1404. Subsequent to loading the program instructions into memory 1404, processor 1402 may execute the program instructions such that the computing system may implement the operations as directed by the instructions.
In some embodiments, virtualization may be employed in computing device 1400 so that infrastructure and resources in computing device 1400 may be shared dynamically. For example, a virtual machine may be provided to handle a process running on multiple processors so that the process appears to be using only one computing resource rather than multiple computing resources. Multiple virtual machines may also be used with one processor.
Memory 1404 and data storage 1406 may include computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable storage media may include any available media that may be accessed by a general-purpose or special-purpose computer, such as processor 1402. By way of example, and not limitation, such computer-readable storage media may include non-transitory computer-readable storage media including Random Access Memory (RAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory devices (e.g., solid state memory devices), or any other storage medium which may be used to carry or store particular program code in the form of computer-executable instructions or data structures and which may be accessed by a general-purpose or special-purpose computer. Combinations of the above may also be included within the scope of computer-readable storage media. Computer-executable instructions may include, for example, instructions and data configured to cause processor 1402 to perform a certain operation or group of operations.
Modifications, additions, or omissions may be made to computing system 1400 without departing from the scope of the present disclosure. For example, in some embodiments, computing system 1400 may include any number of other components that may not be explicitly illustrated or described herein.
As indicated above, the embodiments described in the present disclosure may include the use of a special purpose or a general purpose computer (e.g., processor 1402 of
Numerous example variations and configurations will be apparent in light of this disclosure. According to some examples, computer-implemented methods to generate a pixel-aligned layout grid are described. An example computer-implemented method may include: causing a first layout grid to render on a display; receiving a first user input, wherein the first user input specifies a value for one or more but not all of at least four horizontal dimensions of the first layout grid, the four horizontal dimensions including a number of columns in the first layout grid, a column width of each column in the first layout grid, a gutter width of each gutter in the first layout grid, and a margin width of the first layout grid; and responsive to receiving the first user input, calculating respective integer values for the remaining one of the horizontal dimensions based on the first user input, such that each of the values for the four horizontal dimensions is an integer value; generating a second layout grid based on the integer values for the four horizontal dimensions; and causing the second layout grid to render on the display as a pixel-aligned layout grid.
In some examples, the received first user input quantifies number of columns, and the calculated respective integer values quantify column width, gutter width, and margin width. In other examples, the received first user input quantifies column width, and the calculated respective integer values quantify number of columns, gutter width, and margin width. In still other examples, the received first user input quantifies gutter width, and the calculated respective integer values quantify number of columns, column width, and margin width. In yet other examples, the received first user input quantifies margin width, and the calculated respective integer values quantify number of columns, column width, and gutter width. In further examples, the second layout grid is caused to render in a design canvas, and the method may also include: receiving a second user input that resizes a width of the design canvas; and responsive to receiving the second user input, calculating respective integer values for the four horizontal dimensions based on the resized width of the design canvas, such that each of the values for the four horizontal dimensions is an integer value; generating a third layout grid based on the calculated values for the four horizontal dimensions; and causing the third layout grid to render in the resized design canvas as a pixel-aligned layout grid. In still further examples, the first layout grid includes a left margin and a right margin, and wherein a width of the left margin and a width of the right margin being the same as the margin width. In yet further examples, the first layout grid includes a left margin and a right margin, and wherein a width of the left margin and a width of the right margin being different by one pixel, and further wherein one of the width of the left margin or the width of the right margin being the same as the margin width.
According to some examples, computer program products including one or more non-transitory machine-readable mediums encoded with instructions that when executed by one or more processors cause a process to be carried out to generate a pixel-aligned layout grid are described. An example process may include: causing a first layout grid to render in a graphical user interface (GUI), wherein the GUI comprises multiple text fields for specifying values for multiple horizontal dimensions of the first layout grid, the multiple horizontal dimensions including a number of columns in the first layout grid, a column width of each column in the first layout grid, a gutter width of each gutter in the first layout grid, and a margin width of the first layout grid; receiving a first input via the GUI, wherein the first input specifies a value for a selected one of the multiple horizontal dimensions; and responsive to receiving the first input, calculating respective values for the remaining multiple horizontal dimensions based on the first input value for the selected one of the multiple horizontal dimensions such that values for each of the multiple horizontal dimensions is an integer value; generating a second layout grid based on the calculated values for the remaining multiple horizontal dimensions and the received value for the selected one of the multiple horizontal dimensions; and causing the second layout grid to render in the GUI as a pixel-aligned layout grid.
In some examples, the received first input quantifies number of columns, and the calculated respective values quantify column width, gutter width, and margin width. In other examples, the received first input quantifies column width, and the calculated respective values quantify number of columns, gutter width, and margin width. In still other examples, the received first input quantifies gutter width, and the calculated respective values quantify number of columns, column width, and margin width. In yet other examples, the received first input quantifies margin width, and the calculated respective values quantify number of columns, column width, and gutter width. In further examples, the second layout grid is caused to render in a design canvas, and the process may also include: receiving a second input via the GUI, wherein the second input resizes a width of the design canvas; and responsive to receiving the second input, calculating respective values for the multiple horizontal dimensions based on the resized width of the design canvas such that values for each of the multiple horizontal dimensions is an integer value; generating a third layout grid based on the calculated values for the multiple horizontal dimensions; and causing the third layout grid to render in the resized design canvas as a pixel-aligned layout grid. In still further examples, the first layout grid includes a left margin and a right margin, and wherein a width of the left margin and a width of the right margin being the same as the margin width. In yet further examples, the first layout grid includes a left margin and a right margin, and wherein a width of the left margin and a width of the right margin being different by one pixel, and further wherein one of the width of the left margin or the width of the right margin being the same as the margin width.
According to some examples, systems to generate a pixel-aligned layout grid are described. An example system may include: one or more non-transitory machine-readable mediums configured to store instructions; and one or more processors configured to execute the instructions stored on the one or more non-transitory machine-readable mediums. Execution of the instructions by the one or more processors may cause the one or more processors to: cause a first layout grid to render on a display; receive a first user input, wherein the first user input specifies a value for one or more but not all of at least four horizontal dimensions of the first layout grid, the four horizontal dimensions including a number of columns in the first layout grid, a column width of each column in the first layout grid, a gutter width of each gutter in the first layout grid, and a margin width of the first layout grid; and responsive to receipt of the first user input, calculate respective integer values for the remaining ones of the four horizontal dimensions based on the first user input, such that each of the values for the four horizontal dimensions is an integer value; generate a second layout grid based on the integer values for the four horizontal dimensions; and cause the second layout grid to render on the display as a pixel-aligned layout grid.
In some examples, the received first user input quantifies one of number of columns, a column width, a gutter width, and a margin width. In other examples, the second layout grid is caused to render in a design canvas, and the one or more non-transitory machine readable mediums further stores instructions that, in response to execution by the one or more processors, cause the one or more processors to: receive a second user input that resizes a width of the design canvas; and responsive to receipt of the second user input, calculate respective integer values for the four horizontal dimensions based on the resized width of the design canvas, such that each of the values for the four horizontal dimensions is an integer value; generate a third layout grid based on the integer values for the four horizontal dimensions; and cause the third layout grid to render in the resized design canvas as a pixel-aligned layout grid. In still other examples, the first layout grid includes a left margin and a right margin, and wherein a width of the left margin and a width of the right margin being the same as the margin width.
As used in the present disclosure, the terms “engine” or “module” or “component” may refer to specific hardware implementations configured to perform the actions of the engine or module or component and/or software objects or software routines that may be stored on and/or executed by general purpose hardware (e.g., computer-readable media, processing devices, etc.) of the computing system. In some embodiments, the different components, modules, engines, and services described in the present disclosure may be implemented as objects or processes that execute on the computing system (e.g., as separate threads). While some of the system and methods described in the present disclosure are generally described as being implemented in software (stored on and/or executed by general purpose hardware), specific hardware implementations, firmware implements, or any combination thereof are also possible and contemplated. In this description, a “computing entity” may be any computing system as previously described in the present disclosure, or any module or combination of modulates executing on a computing system.
Terms used in the present disclosure and in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including, but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes, but is not limited to,” etc.).
Additionally, if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to embodiments containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations.
In addition, even if a specific number of an introduced claim recitation is explicitly recited, such recitation should be interpreted to mean at least the recited number (e.g., the bare recitation of “two widgets,” without other modifiers, means at least two widgets, or two or more widgets). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” or “one or more of A, B, and C, etc.” is used, in general such a construction is intended to include A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together, etc.
All examples and conditional language recited in the present disclosure are intended for pedagogical objects to aid the reader in understanding the present disclosure and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Although embodiments of the present disclosure have been described in detail, various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the present disclosure. Accordingly, it is intended that the scope of the present disclosure be limited not by this detailed description, but rather by the claims appended hereto.
Edmunds, Randall James, Bank, Christopher R., Huang, Ashley Margaret
Patent | Priority | Assignee | Title |
11734496, | Nov 16 2021 | Canva Pty Ltd | Systems and methods for generating webpage data for rendering a design |
Patent | Priority | Assignee | Title |
10019415, | Aug 28 2015 | REDBRICK TECHNOLOGIES INC | System and method for consistent cross-platform text layout |
5271065, | Sep 28 1990 | Xerox Corporation | Electronic printing system for printing signatures |
20080062204, | |||
20080278496, | |||
20150242374, | |||
20160292134, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 14 2018 | EDMUNDS, RANDALL JAMES | Adobe Systems Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045809 | /0785 | |
May 14 2018 | BANK, CHRISTOPHER R | Adobe Systems Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045809 | /0785 | |
May 15 2018 | Adobe Inc. | (assignment on the face of the patent) | / | |||
May 15 2018 | HUANG, ASHLEY MARGARET | Adobe Systems Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045809 | /0785 | |
Oct 08 2018 | Adobe Systems Incorporated | Adobe Inc | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 047688 | /0530 |
Date | Maintenance Fee Events |
May 15 2018 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Apr 15 2024 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 13 2023 | 4 years fee payment window open |
Apr 13 2024 | 6 months grace period start (w surcharge) |
Oct 13 2024 | patent expiry (for year 4) |
Oct 13 2026 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 13 2027 | 8 years fee payment window open |
Apr 13 2028 | 6 months grace period start (w surcharge) |
Oct 13 2028 | patent expiry (for year 8) |
Oct 13 2030 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 13 2031 | 12 years fee payment window open |
Apr 13 2032 | 6 months grace period start (w surcharge) |
Oct 13 2032 | patent expiry (for year 12) |
Oct 13 2034 | 2 years to revive unintentionally abandoned end. (for year 12) |