Blame Manuals/Repository/repository-html/repository_58.html

4c79b5
4c79b5
<html>
ccb7a3
4c79b5
4c79b5
Permission is granted to copy, distribute and/or modify this document
4c79b5
under the terms of the GNU Free Documentation License, Version 1.2 or
4c79b5
any later version published by the Free Software Foundation; with no
4c79b5
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
4c79b5
copy of the license is included in the section entitled GNU Free
4c79b5
Documentation License.  
4c79b5
-->
acd47b
4c79b5
4c79b5
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
4c79b5
            Karl Berry  <karl@freefriends.org>
4c79b5
            Olaf Bachmann <obachman@mathematik.uni-kl.de>
4c79b5
            and many others.
4c79b5
Maintained by: Many creative people <dev@texi2html.cvshome.org>
4c79b5
Send bugs and suggestions to <users@texi2html.cvshome.org>
4c79b5
4c79b5
-->
4c79b5
<head>
7fa1fb
<title>CentOS Artwork Repository: 3.55 trunk/Scripts/Bash/Functions/Render</title>
4c79b5
7fa1fb
<meta name="description" content="CentOS Artwork Repository: 3.55 trunk/Scripts/Bash/Functions/Render">
7fa1fb
<meta name="keywords" content="CentOS Artwork Repository: 3.55 trunk/Scripts/Bash/Functions/Render">
4c79b5
<meta name="resource-type" content="document">
4c79b5
<meta name="distribution" content="global">
4c79b5
<meta name="Generator" content="texi2html 1.76">
4c79b5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4c79b5
<style type="text/css">
4c79b5
1e9202
@import "/home/centos/artwork/trunk/Identity/Models/Css/Texi2html/common.css";
4c79b5
4c79b5
a.summary-letter {text-decoration: none}
4c79b5
pre.display {font-family: serif}
4c79b5
pre.format {font-family: serif}
4c79b5
pre.menu-comment {font-family: serif}
4c79b5
pre.menu-preformatted {font-family: serif}
4c79b5
pre.smalldisplay {font-family: serif; font-size: smaller}
4c79b5
pre.smallexample {font-size: smaller}
4c79b5
pre.smallformat {font-family: serif; font-size: smaller}
4c79b5
pre.smalllisp {font-size: smaller}
4c79b5
span.sansserif {font-family:sans-serif; font-weight:normal;}
4c79b5
ul.toc {list-style: none}
4c79b5
-->
4c79b5
</style>
4c79b5
4c79b5
4c79b5
</head>
4c79b5
4c79b5
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
4c79b5
300762
7fa1fb
[ < ]
7fa1fb
[ > ]
4c79b5
   
4c79b5
[ << ]
300762
[ Up ]
7fa1fb
[ >> ]
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
   
4c79b5
[Top]
4c79b5
[Contents]
7fa1fb
[Index]
4c79b5
[ ? ]
4c79b5
7fa1fb
7fa1fb
7fa1fb

3.55 trunk/Scripts/Bash/Functions/Render

2dc146
7fa1fb

The render functionality exists to produce both identity and

7fa1fb
translation files on different levels of information (i.e., different
7fa1fb
languages, release numbers, architectures, etc.).
7fa1fb

7fa1fb

The render functionality relies on "renderable directory

7fa1fb
structures" to produce files. Renderable directory structures can be
7fa1fb
either "identity directory structures" or "translation directory
7fa1fb
structures" with special directories inside.
fa7cae

2dc146
7fa1fb
7fa1fb

3.55.1 Renderable identity directory structures

166893
7fa1fb

Renderable identity directory structures are the starting point of

7fa1fb
identity rendition. Whenever we want to render a component of CentOS
7fa1fb
corporate visual identity, we need to point <tt>`centos-art.sh'</tt> to a
7fa1fb
renderable identity directory structure. If such renderable identity
7fa1fb
directory structure doesn't exist, then it is good time to create it. 
7fa1fb

7fa1fb

Inside the working copy, one renderable identity directory structures

7fa1fb
represents one visual manifestation of CentOS corporate visual
7fa1fb
identity, or said differently, each visual manifestation of CentOS
7fa1fb
corporate visual identity should have one renderable identity
7fa1fb
directory structure.
7bbd70

7fa1fb

Inside renderable identity directory structures, <tt>`centos-art.sh'</tt>

7fa1fb
can render both image-based and text-based files. Specification of
7fa1fb
whether a renderable identity directory structure produces image-based
7fa1fb
or text-based content is a configuration action that takes place in
7fa1fb
the pre-rendition configuration script of that renderable identity
7fa1fb
directory structure.
7fa1fb

7fa1fb

Inside renderable identity directory structures, content production is

7fa1fb
organized in different configurations. A content production
7fa1fb
configuration is a unique combination of the components that make an
7fa1fb
identity directory structure renderable. One content production
7fa1fb
configuration does one thing only (e.g., to produce untranslated
7fa1fb
images), but it can be extended (e.g., adding translation files) to
7fa1fb
achieve different needs (e.g., to produce translated images).
7bbd70

166893
7fa1fb
7fa1fb

3.55.1.1 Design template without translation

2b5e61
7fa1fb

The design template without translation configuration is based on a

7fa1fb
renderable identity directory structure with an empty translation
7fa1fb
directory structure. In this configuration, one design template
7fa1fb
produces one untranslated file. Both design templates and final
7fa1fb
untranslated files share the same file name, but they differ one
7fa1fb
another in file-type and file-extension.
7fa1fb

7fa1fb

For example, to produce images without translations (there is no much

7fa1fb
use in producing text-based files without translations), consider the
7fa1fb
following configuration:
7fa1fb

7fa1fb
7fa1fb
One renderable identity directory structure:
7fa1fb
7fa1fb

In this example we used <tt>`Identity/Path/To/Dir'</tt> as the identity

7fa1fb
component we want to produce untranslated images for.  Identity
7fa1fb
components can be either under <tt>`trunk/'</tt> or <tt>`branches/'</tt>
7fa1fb
directory structure.
7fa1fb

7fa1fb

The identity component (i.e., <tt>`Identity/Path/To/Dir'</tt>, in this

7fa1fb
case) is also the bond component we use to connect the identity
7fa1fb
directory structures with their respective auxiliar directories (i.e.,
7fa1fb
translation directory structres and pre-rendition configuration
7fa1fb
structures).  The bond component is the path convenction that
7fa1fb
<tt>`centos-art.sh'</tt> uses to know where to look for related
7fa1fb
translations, configuration scripts and whatever auxiliar thing a
7fa1fb
renderable directory structure may need to have.
7fa1fb

7fa1fb
      | The bond component
7fa1fb
      |----------------->|
7fa1fb
trunk/Identity/Path/To/Dir  <-- Renderable identity directory structure.
7fa1fb
|-- Tpl                     <-- Design template directory.
7fa1fb
|   `-- file.svg            <-- Design template file.
7fa1fb
`-- Img                     <-- Directory used to store final files.
7fa1fb
    `-- file.png            <-- Final image-based file produced from
7fa1fb
                                design template file.
7fa1fb
7fa1fb

Inside design template directory, design template files are based on

7fa1fb
SVG (Scalable Vector Graphics) and use the extension
7fa1fb
.svg.  Design template files can be organized using several
7fa1fb
directory levels to create a simple but extensible configuration,
7fa1fb
specially if translated images are not required.
7fa1fb

7fa1fb

In order for SVG (Scalable Vector Graphics) files to be

7fa1fb
considered "design template" files, they should be placed under the
7fa1fb
design template directory and to have set a CENTOSARTWORK
7fa1fb
object id inside.
7bbd70

7fa1fb

The CENTOSARTWORK word itself is a convenction name we use to

7fa1fb
define which object/design area, inside a design template, the
7fa1fb
<tt>`centos-art.sh'</tt> script will use to export as
7fa1fb
PNG (Portable Network Graphic) image at rendition time.
7fa1fb
Whithout such object id specification, the <tt>`centos-art.sh'</tt> script
7fa1fb
cannot know what object/design area you (as designer) want to export
7fa1fb
as PNG (Portable Network Graphic) image file.
7bbd70

7fa1fb
info

Note

At rendition time, the content of <tt>`Img/'</tt> directory

7fa1fb
structure is produced by <tt>`centos-art.sh'</tt> automatically.
7fa1fb

2b5e61
7fa1fb

When a renderable identity directory structure is configured to

7fa1fb
produce image-based content, <tt>`centos-art.sh'</tt> produces
7fa1fb
PNG (Portable Network Graphics) files with the .png
7fa1fb
extension. Once the base image format has been produced, it is
7fa1fb
possible for <tt>`centos-art.sh'</tt> to use it in order to automatically
7fa1fb
create other image formats that may be needed (see section trunk/Scripts/Bash/Functions/Render/Config).
7fa1fb

7fa1fb

Inside the working copy, you can find an example of "design template

7fa1fb
without translation" configuration at <tt>`trunk/Identity/Models/'</tt>.
7fa1fb

7fa1fb

See section trunk/Identity, for more information.

7fa1fb

7fa1fb
7fa1fb
One translation directory structure:
7fa1fb
7fa1fb

In order for an identity entry to be considered an identity renderable

7fa1fb
directory structure, it should have a translation entry. The content
7fa1fb
of the translation entry is relevant to determine how to process the
7fa1fb
identity renderable directory entry.
7fa1fb

7fa1fb

If the translation entry is empty (i.e., there is no file inside it),

7fa1fb
<tt>`centos-art.sh'</tt> interprets the identity renderable directory
7fa1fb
structure as a "design templates without translation" configuration.
7fa1fb

7fa1fb
                   | The bond component
7fa1fb
                   |----------------->|
7fa1fb
trunk/Translations/Identity/Path/To/Dir
7fa1fb
`-- (empty)
7fa1fb
7fa1fb

If the translation entry is not empty, <tt>`centos-art.sh'</tt> can

7fa1fb
interpret the identity renderable directory structure as one of the
7fa1fb
following configurations: "design template with translation
7fa1fb
(one-to-one)" or "design template with translation (optimized)".
7fa1fb
Which one of these configurations is used depends on the value
7fa1fb
assigned to the matching list (MATCHINGLIST) variable in the
7fa1fb
pre-rendition configuration script of the renderable identity
7fa1fb
directory structure we are producing images for.
7fa1fb

7fa1fb

If the matching list variable is empty (as it is by default), then

7fa1fb
"design template with translation (one-to-one)" configuration is
7fa1fb
used. In this configuration it is required that both design templates
7fa1fb
and translation files have the same file names. This way, one
7fa1fb
translation files is applied to one design template, to produce
7fa1fb
one translated image.
7fa1fb

7fa1fb

If the matching list variable is not empty (because you redefine it in

7fa1fb
the pre-rendition configuration script), then "design template with
7fa1fb
translation (optimized)" configuration is used instead. In this
7fa1fb
configuration, design templates and translation files don't need to
7fa1fb
have the same names since such name relationship between them is
7fa1fb
specified in the matching list properly.
7fa1fb

7fa1fb

-- Removed(xref:trunk Translations) --, for more information.

7fa1fb

7fa1fb
7fa1fb
One pre-rendition configuration script:
7fa1fb
7fa1fb

In order to make an identity directory structure renderable, a

7fa1fb
pre-rendition configuration script should exist for it.  The
7fa1fb
pre-rendition configuration script specifies what type of rendition
7fa1fb
does <tt>`centos-art.sh'</tt> will perform over the identity directory
7fa1fb
structure and how does it do that.
7fa1fb

7fa1fb
                                           | The bond component
7fa1fb
                                           |----------------->|
7fa1fb
trunk/Scripts/Bash/Functions/Render/Config/Identity/Path/To/Dir
7fa1fb
`-- render.conf.sh
7fa1fb
7fa1fb

In this configuration the pre-rendition configuration script

7fa1fb
(<tt>`render.conf.sh'</tt>) would look like the following:
7fa1fb

7fa1fb
function render_loadConfig {
2dc146
7fa1fb
    # Define rendition actions.
2dc146
    ACTIONS[0]='BASE:renderImage'
2dc146
2dc146
}
4a9d2a
7fa1fb

Since translation directory structure is empty, <tt>`centos-art.sh'</tt>

7fa1fb
assumes a "design template without translation" configuration to
7fa1fb
produce untranslated images.
fa7cae

7fa1fb

To produce untranslated images, <tt>`centos-art.sh'</tt> takes one design

7fa1fb
template and creates one temporal instance from it.  Later,
7fa1fb
<tt>`centos-art.sh'</tt> uses the temporal design template instance as
7fa1fb
source file to export the final untranslated image. The action of
7fa1fb
exporting images from SVG (Scalable Vector Graphics) to
7fa1fb
PNG (Portable Network Graphics) is possible thanks to
7fa1fb
Inkscape's command-line interface and the CENTOSARTWORK object
7fa1fb
id we previously set inside design templates.
7fa1fb

7fa1fb
centos-art.sh render --identity=trunk/Identity/Path/To/Dir
7fa1fb
-------------------------------------------------
7fa1fb
0 | Execute centos-art.sh on renderable identity directory structure.
7fa1fb
--v----------------------------------------------
7fa1fb
trunk/Identity/Path/To/Dir/Tpl/file.svg
7fa1fb
-------------------------------------------------
7fa1fb
1 | Create instance from design template.
7fa1fb
--v----------------------------------------------
7fa1fb
/tmp/centos-art.sh-a07e824a-5953-4c21-90ae-f5e8e9781f5f-file.svg
7fa1fb
-------------------------------------------------
7fa1fb
2 | Render untranslated image from design template instance.
7fa1fb
--v----------------------------------------------
7fa1fb
trunk/Identity/NewDir/Img/file.png
7fa1fb
-------------------------------------------------
7fa1fb
3 | Remove design template instance.
2b5e61
7fa1fb

Finally, when the untranslated image has been created, the temporal

7fa1fb
design template instance is removed. At this point,
7fa1fb
<tt>`centos-art.sh'</tt> takes the next design template and repeats the
7fa1fb
whole production flow once again (design template by design template),
7fa1fb
until all design templates be processed.
7bbd70

7fa1fb

See section trunk/Scripts/Bash/Functions/Render/Config, for more

7fa1fb
information.
7fa1fb

7fa1fb
166893
166893
7fa1fb
7fa1fb

3.55.1.2 Design template with translation (one-to-one)

7fa1fb
7fa1fb

Producing untranslated images is fine in many cases, but not always.

7fa1fb
Sometimes it is required to produce images in different languages and
7fa1fb
that is something that untrasnlated image production cannot achieve.
7fa1fb
However, if we fill its empty translation entry with translation files
7fa1fb
(one for each design template) we extend the production flow from
7fa1fb
untranslated image production to translated image production.
7fa1fb

7fa1fb

In order for <tt>`centos-art.sh'</tt> to produce images correctly, each

7fa1fb
design template should have one translation file and each translation
7fa1fb
file should have one design template.  Otherwise, if there is a
7fa1fb
missing design template or a missing translation file,
7fa1fb
<tt>`centos-art.sh'</tt> will not produce the final image related to the
7fa1fb
missing component.
7fa1fb

7fa1fb

In order for <tt>`centos-art.sh'</tt> to know which is the relation

7fa1fb
between translation files and design templates the translation
7fa1fb
directory structure is taken as reference.  For example, the
7fa1fb
<tt>`trunk/Translations/Identity/Path/To/Dir/file.sed'</tt> translation
7fa1fb
file does match <tt>`trunk/Identity/Path/To/Dir/Tpl/file.svg'</tt> design
7fa1fb
template, but it doesn't match
7fa1fb
<tt>`trunk/Identity/Path/To/Dir/File.svg'</tt> or
7fa1fb
<tt>`trunk/Identity/Path/To/Dir/Tpl/File.svg'</tt> or
7fa1fb
<tt>`trunk/Identity/Path/To/Dir/Tpl/SubDir/file.svg'</tt> design
7fa1fb
templates.
fa7cae

7fa1fb

The pre-rendition configuration script used to produce untranslated

7fa1fb
images is the same we use to produce translated images. There is no
7fa1fb
need to modify it. So, as we are using the same pre-rendition
7fa1fb
configuration script, we can say that translated image production is
7fa1fb
somehow an extended/improved version of untranslated image production.
7fa1fb

7fa1fb
info

Note

If we use no translation file in the translation entry

7fa1fb
(i.e., an empty directory), <tt>`centos-art.sh'</tt> assumes the
7fa1fb
untranslated image production. If we fill the translation entry with
7fa1fb
translation files, <tt>`centos-art.sh'</tt> assumes the translated image
7fa1fb
production.  
7fa1fb

2b5e61
7fa1fb

To produce final images, <tt>`centos-art.sh'</tt> applies one translation

7fa1fb
file to one design template and produce a translated design template
7fa1fb
instance. Later, <tt>`centos-art.sh'</tt> uses the translated template
7fa1fb
instance to produce the translated image. Finally, when the translated
7fa1fb
image has been produced, <tt>`centos-art.sh'</tt> removes the translated
7fa1fb
design template instance. This production flow is repeated for each
7fa1fb
translation file available in the translatio entry. 
7fa1fb

7fa1fb
centos-art.sh render --identity=trunk/Identity/Path/To/Dir
7fa1fb
-------------------------------------------------
7fa1fb
0 | Execute centos-art.sh on directory structure.
7fa1fb
--v----------------------------------------------
7fa1fb
trunk/Translations/Identity/Path/To/Dir/file.sed
7fa1fb
-------------------------------------------------
7fa1fb
1 | Apply translation to design template.
7fa1fb
--v----------------------------------------------
7fa1fb
trunk/Identity/Path/To/Dir/Tpl/file.svg
7fa1fb
-------------------------------------------------
7fa1fb
2 | Create design template instance.
7fa1fb
--v----------------------------------------------
7fa1fb
/tmp/centos-art.sh-a07e824a-5953-4c21-90ae-f5e8e9781f5f-file.svg
7fa1fb
-------------------------------------------------
7fa1fb
3 | Render PNG image from template instance.
7fa1fb
--v----------------------------------------------
7fa1fb
trunk/Identity/NewDir/Img/file.png
7fa1fb
-------------------------------------------------
7fa1fb
4 | Remove design template instance.
7fa1fb
2b5e61
7fa1fb
7fa1fb

3.55.1.3 Design template with translation (optimized)

7fa1fb
7fa1fb

Producing translated images satisfies almost all our production images

7fa1fb
needs, but there is still a pitfall in them. In order to produce
7fa1fb
translated images as in the "one-to-one" configuration describes
7fa1fb
previously, it is required that one translation file has one design
7fa1fb
template. That's useful in many cases, but what would happen if we
7fa1fb
need to apply many different translation files to the same design
7fa1fb
template?  Should we have to duplicate the same design template file
7fa1fb
for each translation file, in order to satisfy the "one-to-one"
7fa1fb
relation? What if we need to assign translation files to design
7fa1fb
templates arbitrarily?
fa7cae

7fa1fb

Certenly, that's something the "one-to-one" configuration cannot

7fa1fb
handle.  So, that's why we had to "optimize" it. The optimized
7fa1fb
configuration consists on using a matching list (MATCHINGLIST)
7fa1fb
variable that specifies the relationship between translation files and
7fa1fb
design templates in an arbitrary way. Using such matching list between
7fa1fb
translation files and design templates let us use as many assignment
7fa1fb
combinations as translation files and design templates we are working
7fa1fb
with.
7bbd70

7fa1fb

The MATCHINGLIST variable is set in the pre-rendition

7fa1fb
configuration script of the component we want to produce images for.
7fa1fb
By default, the MATCHINGLIST variable is empty which means no
7fa1fb
matching list is used. Otherwise, if MATCHINGLIST variable has a
7fa1fb
value different to empty value then, <tt>`centos-art.sh'</tt> interprets
7fa1fb
the matching list in order to know how translation files are applied
7fa1fb
to design templates.
7bbd70

7fa1fb

For example, consider the following configuration:

7fa1fb

7fa1fb
7fa1fb
One entry under <tt>`trunk/Identity/'</tt>:
7fa1fb
7fa1fb

In this configuration we want to produce three images using a

7fa1fb
paragraph-based style, controlled by <tt>`paragraph.svg'</tt> design
7fa1fb
template; and one image using a list-based style, controlled by
7fa1fb
<tt>`list.svg'</tt> design template.
7fa1fb

7fa1fb
trunk/Identity/Path/To/Dir
7fa1fb
|-- Tpl
7fa1fb
|   |-- paragraph.svg
7fa1fb
|   `-- list.svg
7fa1fb
`-- Img
7fa1fb
    |-- 01-welcome.png
7fa1fb
    |-- 02-donate.png
7fa1fb
    |-- 03-docs.png
7fa1fb
    `-- 04-support.png
4a9d2a
7fa1fb
7fa1fb
One entry under <tt>`trunk/Translations/'</tt>:
7fa1fb
7fa1fb

In order to produce translated images we need to have one translation

7fa1fb
file for each translated image we want to produce. Notice how
7fa1fb
translation names do match final image file names, but how translation
7fa1fb
names do not match design template names. When we use matching list
7fa1fb
there is no need for translation files to match the names of design
7fa1fb
templates, such name relation is set inside the matching list itself.
7fa1fb

7fa1fb
trunk/Translations/Identity/Path/To/Dir
7fa1fb
|-- 01-welcome.sed
7fa1fb
|-- 02-donate.sed
7fa1fb
|-- 03-docs.sed
7fa1fb
`-- 04-support.sed
2dc146
7fa1fb
7fa1fb
One entry under <tt>`trunk/trunk/Scripts/Bash/Functions/Render/Config/'</tt>:
7fa1fb
7fa1fb

In order to produce different translated images using specific design

7fa1fb
templates, we need to specify the relation between translation files
7fa1fb
and design templates in a way that <tt>`centos-art.sh'</tt> could know
7fa1fb
exactly what translation file to apply to what design template. This
7fa1fb
relation between translation files and design templates is set using
7fa1fb
the matching list MATCHINGLIST variable inside the pre-rendition
7fa1fb
configuration script of the component we want to produce images for.  
7fa1fb

7fa1fb
trunk/Scripts/Bash/Functions/Render/Config/Identity/Path/To/Dir
7fa1fb
`-- render.conf.sh
4a9d2a
7fa1fb

In this configuration the pre-rendition configuration script

7fa1fb
(<tt>`render.conf.sh'</tt>) would look like the following:
2b5e61

7fa1fb
function render_loadConfig {
7fa1fb
7fa1fb
    # Define rendition actions.
7fa1fb
    ACTIONS[0]='BASE:renderImage'
7fa1fb
7fa1fb
    # Define matching list.
7fa1fb
    MATCHINGLIST="\
7fa1fb
    paragraph.svg:\
7fa1fb
        01-welcome.sed\
7fa1fb
        02-donate.sed\
7fa1fb
        04-support.sed
7fa1fb
    list.svg:\
7fa1fb
        03-docs.sed
7fa1fb
    "
7fa1fb
7fa1fb
}
2dc146
7fa1fb

As result, <tt>`centos-art.sh'</tt> will produce <tt>`01-welcome.png'</tt>,

7fa1fb
<tt>`02-donate.png'</tt> and <tt>`04-support.png'</tt> using the
7fa1fb
paragraph-based design template, but <tt>`03-docs.png'</tt> using the
7fa1fb
list-based design template.
7fa1fb

7fa1fb
6ba043
b8013f
7fa1fb
7fa1fb

3.55.1.4 Design template with translation (optimized+flexibility)

7fa1fb
7fa1fb

In the production models we've seen so far, there are design templates

7fa1fb
to produce untranslated images and translation files which combiend
7fa1fb
with design templates produce translated images. That may seems like
7fa1fb
all our needs are covered, doesn't it? Well, it almost does.
7fa1fb

7fa1fb

Generally, we use design templates to define how final images will

7fa1fb
look like. Generally, each renderable directory structure has one
7fa1fb
<tt>`Tpl/'</tt> directory where we organize design templates for that
7fa1fb
identity component. So, we can say that there is only one unique
7fa1fb
design template definition for each identity component; or what is the
7fa1fb
same, said differently, identity components can be produced in one way
7fa1fb
only, the way its own design template directory specifies.  This is
7fa1fb
not enough for theme production. It is a limitation, indeed.
7fa1fb

7fa1fb

Initially, to create one theme, we created one renderable directory

7fa1fb
structure for each theme component. When we found ourselves with many
7fa1fb
themes, and components inside them, it was obvious that the same
7fa1fb
design model was duplicated inside each theme. As design models were
7fa1fb
independently one another, if we changed one theme's design model,
7fa1fb
that change was useless to other themes. So, in order to reuse design
7fa1fb
model changes, we unified design models into one common directory
7fa1fb
structure.
7fa1fb

7fa1fb

With design models unified in a common structure, another problem rose

7fa1fb
up. As design models also had the visual style of theme components,
7fa1fb
there was no difference between themes, so there was no apparent need
7fa1fb
to have an independent theme directory structure for each different
7fa1fb
theme.  So, it was also needed to separate visual styles from design
7fa1fb
models.
7fa1fb

7fa1fb

At this point there are two independent worklines: one directory

7fa1fb
structure to store design models (the final image characteristics
7fa1fb
[i.e., dimensions, translation markers, etc.]) and one directory
7fa1fb
structure to store visual styles (the final image visual style [i.e.,
7fa1fb
the image look and feel]).  So, it is possible to handle both
7fa1fb
different design models and different visual styles independtly one
7fa1fb
another and later create combinations among them using
7fa1fb
<tt>`centos-art.sh'</tt>. 
7fa1fb

7fa1fb

For example, consider the following configuration:

2dc146

4a9d2a
7fa1fb
One entry under <tt>`trunk/Identity/Themes/Models/'</tt>:
2dc146
7fa1fb

The design model entry exists to organize design model files (similar

7fa1fb
to design templates). Both design models and design templates are very
7fa1fb
similar; they both should have the CENTOSARTWORK export id
7fa1fb
present to identify the exportation area, translation marks, etc.
7fa1fb
However, design models do use dynamic backgrounds inclusion while
7fa1fb
design templates don't.
7fa1fb

7fa1fb
                        THEMEMODEL | | The bond component
7fa1fb
                             |<----| |--------------------->|
7fa1fb
trunk/Identity/Themes/Models/Default/Distro/Anaconda/Progress/
7fa1fb
|-- paragraph.svg
7fa1fb
`-- list.svg
7fa1fb
7fa1fb

Inisde design models, dynamic backgrounds are required in order for

7fa1fb
different artistic motifs to reuse common design models. Firstly, in
7fa1fb
order to create dynamic backgrounds inside design models, we import a
7fa1fb
bitmap to cover design model's background and later, update design
7fa1fb
model's path information to replace fixed values to dynamic values.
4a9d2a

2dc146
7fa1fb
One entry under <tt>`trunk/Identity/Themes/Motifs/'</tt>:
2dc146
7fa1fb

The artistic motif entry defines the visual style we want to produce

7fa1fb
images for, only. Final images (i.e., those built from combining both
7fa1fb
design models and artistic motif backrounds) are not stored here, but
7fa1fb
under branches directory structure. In the artistic motif entry, we
7fa1fb
only define those images that cannot be produced automatically by
7fa1fb
<tt>`centos-art.sh'</tt> (e.g., Backgrounds, Color information,
7fa1fb
Screenshots, etc.).
2dc146

7fa1fb
                  Artistic motif name | | Artistic motif backgrounds
7fa1fb
                             |<-------| |-------->|
7fa1fb
trunk/Identity/Themes/Motifs/TreeFlower/Backgrounds/
7fa1fb
|-- Img
7fa1fb
|   |-- Png
7fa1fb
|   |   |-- 510x300.png
7fa1fb
|   |   `-- 510x300-final.png
7fa1fb
|   `-- Jpg
7fa1fb
|       |-- 510x300.jpg
7fa1fb
|       `-- 510x300-final.jpg
7fa1fb
|-- Tpl
7fa1fb
|   `-- 510x300.svg
7fa1fb
`-- Xcf
7fa1fb
    `-- 510x300.xcf
7fa1fb
2dc146
7fa1fb
One entry under <tt>`trunk/Translations/'</tt>:
2dc146
7fa1fb

The translation entry specifies, by means of translation files, the

7fa1fb
language-specific information we want to produce image for. When we
7fa1fb
create the translation entry we don't use the name of neither design
7fa1fb
model nor artistic motif, just the design model component we want to
7fa1fb
produce images for.
4a9d2a

7fa1fb
                                   | The bond component
7fa1fb
                                   |--------------------->|
7fa1fb
trunk/Translations/Identity/Themes/Distro/Anaconda/Progress/
7fa1fb
`-- 5
7fa1fb
    |-- en
7fa1fb
    |   |-- 01-welcome.sed
7fa1fb
    |   |-- 02-donate.sed
7fa1fb
    |   `-- 03-docs.sed
7fa1fb
    `-- es
7fa1fb
        |-- 01-welcome.sed
7fa1fb
        |-- 02-donate.sed
7fa1fb
        `-- 03-docs.sed
7fa1fb
2dc146
7fa1fb
One entry under <tt>`trunk/Scripts/Bash/Functions/Render/Config/'</tt>:
2dc146
7fa1fb

There is one pre-rendition configuration script for each theme

7fa1fb
component. So, each time a theme component is rendered, its
7fa1fb
pre-rendition configuration script is evaluated to teach
7fa1fb
<tt>`centos-art.sh'</tt> how to render the component.
7bbd70

7fa1fb
trunk/Scripts/Bash/Functions/Render/Config/Identity/Themes/Distro/Anaconda/Progress/
7fa1fb
`-- render.conf.sh
7fa1fb
7fa1fb

In this configuration the pre-rendition configuration script

7fa1fb
(<tt>`render.conf.sh'</tt>) would look like the following:
7fa1fb

7fa1fb
function render_loadConfig {
7fa1fb
7fa1fb
    # Define rendition actions.
7fa1fb
    ACTIONS[0]='BASE:renderImage'
7fa1fb
7fa1fb
    # Define matching list.
7fa1fb
    MATCHINGLIST="\
7fa1fb
    paragraph.svg:\
7fa1fb
        01-welcome.sed\
7fa1fb
        02-donate.sed
7fa1fb
    list.svg:\
7fa1fb
        03-docs.sed
7fa1fb
        "
7fa1fb
7fa1fb
    # Deifne theme model.
7fa1fb
    THEMEMODEL='Default'
7fa1fb
7fa1fb
}
7fa1fb
2dc146
2dc146
7fa1fb

The production flow of "optimize+flexibility" configuration…

7fa1fb

7fa1fb
7fa1fb

3.55.2 Renderable translation directory structures

7fa1fb
7fa1fb

Translation directory structures are auxiliar structures of renderable

7fa1fb
identity directory structures. There is one translation directory
7fa1fb
structure for each renderable identity directory structure.  Inside
7fa1fb
translation directory structures we organize translation files used by
7fa1fb
renderable identity directory structures that produce translated
7fa1fb
images. Renderable identity directory structures that produce
7fa1fb
untranslated images don't use translation files, but they do use a
7fa1fb
translation directory structure, an empty translation directory
7fa1fb
structure, to be precise.
7fa1fb

7fa1fb

In order to aliviate production of translation file, we made

7fa1fb
translation directory structures renderable adding a template
7fa1fb
(<tt>`Tpl/'</tt>) directory structure to handle common content inside
7fa1fb
translation files.  This way, we work on translation templates and
7fa1fb
later use <tt>`centos-art.sh'</tt> to produce specific translation files
7fa1fb
(based on translation templates) for different information (e.g.,
7fa1fb
languages, release numbers, architectures, etc.).  
7fa1fb

7fa1fb

If for some reason, translation files get far from translation

7fa1fb
templates and translation templates become incovenient to produce such
7fa1fb
translation files then, care should be taken to avoid replacing the
7fa1fb
content of translation files with the content of translation templates
7fa1fb
when <tt>`centos-art.sh'</tt> is executed to produce translation files
7fa1fb
from translation templates.
7fa1fb

7fa1fb

Inside renderable translation directory structures,

7fa1fb
<tt>`centos-art.sh'</tt> can produce text-based files only.
4a9d2a

b8013f
7fa1fb
7fa1fb

3.55.3 Copying renderable directory structures

7fa1fb
7fa1fb

A renderable layout is formed by design models, design images,

7fa1fb
pre-rendition configuration scripts and translations files. This way,
7fa1fb
when we say to duplicate rendition stuff we are saying to duplicate
7fa1fb
these four directory structures (i.e., design models, design images,
7fa1fb
pre-rendition configuration scripts, and related translations files).
7fa1fb

7fa1fb

When we duplicate directories, inside `trunk/Identity' directory

7fa1fb
structure, we need to be aware of renderable layout described above
7fa1fb
and the source location used to perform the duplication action.  The
7fa1fb
source location is relevant to centos-art.sh script in order to
7fa1fb
determine the required auxiliar information inside directory
7fa1fb
structures that need to be copied too (otherwise we may end up with
7fa1fb
orphan directory structures unable to be rendered, due the absence of
7fa1fb
required information).
7fa1fb

7fa1fb

In order for a renderable directory structure to be valid, the new

7fa1fb
directory structure copied should match the following conditions:
7fa1fb

7fa1fb
    7fa1fb
  1. To have a unique directory structure under
  2. 7fa1fb
    <tt>`trunk/Identity'</tt>, organized by any one of the above
    7fa1fb
    organizational designs above.
    7fa1fb
    7fa1fb
  3. To have a unique directory structure under
  4. 7fa1fb
    <tt>`trunk/Translations'</tt> to store translation files.
    7fa1fb
    7fa1fb
  5. To have a unique directory structure under
  6. 7fa1fb
    <tt>`trunk/Scripts/Bash/Functions/Render/Config'</tt> to set pre-rendition
    7fa1fb
    configuration script.
    7fa1fb
    7fa1fb
    7fa1fb

    As convenction, the render_doCopy function uses

    7fa1fb
    <tt>`trunk/Identity'</tt> directory structure as source location.  Once
    7fa1fb
    the <tt>`trunk/Identity'</tt> directory structure has been specified and
    7fa1fb
    verified, the related path information is built from it and copied
    7fa1fb
    automatically to the new location specified by FLAG_TO variable.
    7fa1fb

    7fa1fb

    Design templates + No translation:

    7fa1fb

    7fa1fb

    Command:

    7fa1fb
    - centos-art render -copy=trunk/Identity/Path/To/Dir -to=trunk/Identity/NewPath/To/Dir
    7fa1fb

    7fa1fb

    Sources:

    7fa1fb
    - trunk/Identity/Path/To/Dir
    7fa1fb
    - trunk/Translations/Identity/Path/To/Dir
    7fa1fb
    - trunk/Scripts/Bash/Functions/Render/Config/Identity/Path/To/Dir
    7fa1fb

    7fa1fb

    Targets:

    7fa1fb
    - trunk/Identity/NewPath/To/Dir
    7fa1fb
    - trunk/Translations/Identity/NewPath/To/Dir
    7fa1fb
    - trunk/Scripts/Bash/Functions/Render/Config/Identity/NewPath/To/Dir
    7fa1fb

    7fa1fb

    Renderable layout 2:

    7fa1fb

    7fa1fb

    Command:

    7fa1fb
    - centos-art render -copy=trunk/Identity/Themes/Motifs/TreeFlower \
    7fa1fb
                        -to=trunk/Identity/Themes/Motifs/NewPath/To/Dir
    7fa1fb

    7fa1fb

    Sources:

    7fa1fb
    - trunk/Identity/Themes/Motifs/TreeFlower
    7fa1fb
    - trunk/Translations/Identity/Themes
    7fa1fb
    - trunk/Translations/Identity/Themes/Motifs/TreeFlower
    7fa1fb
    - trunk/Scripts/Bash/Functions/Render/Config/Identity/Themes
    7fa1fb
    - trunk/Scripts/Bash/Functions/Render/Config/Identity/Themes/Motifs/TreeFlower
    7fa1fb

    7fa1fb

    Targets:

    7fa1fb
    - trunk/Identity/Themes/Motifs/NewPath/To/Dir
    7fa1fb
    - trunk/Translations/Identity/Themes
    7fa1fb
    - trunk/Translations/Identity/Themes/Motifs/NewPath/To/Dir
    7fa1fb
    - trunk/Scripts/Bash/Functions/Render/Config/Identity/Themes
    7fa1fb
    - trunk/Scripts/Bash/Functions/Render/Config/Identity/Themes/Motifs/NewPath/To/Dir
    7fa1fb

    7fa1fb

    Notice that design models are not included in source or target

    7fa1fb
    locations. This is intentional. In "Renderable layout 2", design
    7fa1fb
    models live by their own, they just exist, they are there, available
    7fa1fb
    for any artistic motif to use. By default `Themes/Models/Default'
    7fa1fb
    design model directory structure is used, but other design models
    7fa1fb
    directory structures (under Themes/Models/) can be created and used
    7fa1fb
    changing the value of THEMEMODEL variable inside the pre-rendition
    7fa1fb
    configuration script of the artistic motif source location you want to
    7fa1fb
    produce.
    7fa1fb

    7fa1fb

    Notice how translations and pre-rendition configuration scripts may

    7fa1fb
    both be equal in source and target. This is because such structures
    7fa1fb
    are common to all artistic motifs (the default values to use when no
    7fa1fb
    specific values are provided).
    7fa1fb

    7fa1fb

    - The common directory structures are not copied or deleted. We cannot

    7fa1fb
      copy a directory structure to itself.
    7fa1fb

    7fa1fb

    - The common directory structures represent the default value to use

    7fa1fb
      when no specific translations and/or pre-rendition configuration
    7fa1fb
      script are provided inside source location.
    7fa1fb

    7fa1fb

    - The specific directory structures, if present, are both copiable and

    7fa1fb
      removable. This is, when you perform a copy or delete action from
    7fa1fb
      source, that source specific auxiliar directories are transfered in
    7fa1fb
      the copy action to a new location (that specified by FLAG_TO
    7fa1fb
      variable).
    7fa1fb

    7fa1fb

    - When translations and/or pre-rendition configuration scripts are

    7fa1fb
      found inside the source directory structure, the centos-art.sh
    7fa1fb
      script loads common auxiliar directories first and later specific
    7fa1fb
      auxiliar directories.  This way, identity rendition of source
    7fa1fb
      locations can be customized idividually over the base of common
    7fa1fb
      default values.
    7fa1fb

    7fa1fb

    - The specific auxiliar directories are optional.

    7fa1fb

    7fa1fb

    - The common auxiliar directories should be present always. This is,

    7fa1fb
      in order to provide the information required by render functionality
    7fa1fb
      (i.e., to make it functional in the more basic level of its
    7fa1fb
      existence).
    7fa1fb

    7fa1fb

    Notice how the duplication process is done from `trunk/Identity' on,

    7fa1fb
    not the oposite. If you try to duplicate a translation structure (or
    7fa1fb
    similar auxiliar directory structures like pre-rendition configuration
    7fa1fb
    scripts), the `trunk/Identity' for that translation is not created.
    7fa1fb
    This limitation is impossed by the fact that many `trunk/Identity'
    7fa1fb
    directory structures may reuse/share the same translation directory
    7fa1fb
    structure. We cannot delete one translation (or similar) directory
    7fa1fb
    structures while a related `trunk/Identity/' directory structure is
    7fa1fb
    still in need of it.
    7fa1fb

    7fa1fb

    The `render_doCopy' functionality does duplicate directory structures

    7fa1fb
    directly involved in rendition process only. Once such directories
    7fa1fb
    have been duplicated, the functionality stops thereat. 
    7fa1fb

    7fa1fb
    7fa1fb
    7fa1fb

    3.55.4 Usage

    7fa1fb
    7fa1fb
      7fa1fb
    • ...
    • 7fa1fb
      7fa1fb
      7fa1fb
      7fa1fb
      7fa1fb

      3.55.5 See also

      300762
      4a9d2a
      7fa1fb
      3.56 trunk/Scripts/Bash/Functions/Render/Config  
      4a9d2a
      4a9d2a
      bc3531
      38bcd9
      300762
      7fa1fb
      [ < ]
      7fa1fb
      [ > ]
      300762
         
      300762
      [ << ]
      7fa1fb
      [ Up ]
      7fa1fb
      [ >> ]
      300762
      4c79b5

      4c79b5
       <font size="-1">
      acd47b
        This document was generated on February, 26 2011 using texi2html 1.76.
      4c79b5
       </font>
      4c79b5
       
      4c79b5
      4c79b5

      4c79b5
      </body>
      4c79b5
      </html>