Blame Manuals/Repository-fs/repository-fs-html/repository-fs_56.html

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

3.53 trunk/Scripts/Bash/Functions/Render

ee1f37
ee1f37

The render functionality exists to produce both identity and

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

ee1f37

The render functionality relies on "renderable directory

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

ee1f37
ee1f37
ee1f37

3.53.1 Renderable identity directory structures

ee1f37
ee1f37

Renderable identity directory structures are the starting point of

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

ee1f37

Inside the working copy, one renderable identity directory structures

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

ee1f37

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

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

ee1f37

Inside renderable identity directory structures, content production is

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

ee1f37
ee1f37
ee1f37

3.53.1.1 Design template without translation

ee1f37
ee1f37

The design template without translation configuration is based on a

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

ee1f37

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

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

ee1f37
ee1f37
One renderable identity directory structure:
ee1f37
ee1f37

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

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

ee1f37

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

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

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

Inside design template directory, design template files are based on

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

ee1f37

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

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

ee1f37

The CENTOSARTWORK word itself is a convenction name we use to

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

ee1f37
info

Note

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

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

ee1f37
ee1f37

When a renderable identity directory structure is configured to

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

ee1f37

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

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

ee1f37

See section trunk/Identity, for more information.

ee1f37

ee1f37
ee1f37
One translation directory structure:
ee1f37
ee1f37

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

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

ee1f37

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

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

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

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

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

ee1f37

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

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

ee1f37

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

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

ee1f37

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

ee1f37

ee1f37
ee1f37
One pre-rendition configuration script:
ee1f37
ee1f37

In order to make an identity directory structure renderable, a

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

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

In this configuration the pre-rendition configuration script

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

ee1f37
function render_loadConfig {
ee1f37
ee1f37
    # Define rendition actions.
ee1f37
    ACTIONS[0]='BASE:renderImage'
ee1f37
ee1f37
}
ee1f37
ee1f37

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

ee1f37
assumes a "design template without translation" configuration to
ee1f37
produce untranslated images.
ee1f37

ee1f37

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

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

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

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

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

ee1f37

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

ee1f37
information.
ee1f37

ee1f37
ee1f37
ee1f37
ee1f37
ee1f37

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

ee1f37
ee1f37

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

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

ee1f37

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

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

ee1f37

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

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

ee1f37

The pre-rendition configuration script used to produce untranslated

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

ee1f37
info

Note

If we use no translation file in the translation entry

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

ee1f37
ee1f37

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

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

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

3.53.1.3 Design template with translation (optimized)

ee1f37
ee1f37

Producing translated images satisfies almost all our production images

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

ee1f37

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

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

ee1f37

The MATCHINGLIST variable is set in the pre-rendition

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

ee1f37

For example, consider the following configuration:

ee1f37

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

In this configuration we want to produce three images using a

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

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

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

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

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

In order to produce different translated images using specific design

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

ee1f37
trunk/Scripts/Bash/Functions/Render/Config/Identity/Path/To/Dir
ee1f37
`-- render.conf.sh
ee1f37
ee1f37

In this configuration the pre-rendition configuration script

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

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

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

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

ee1f37
ee1f37
ee1f37
ee1f37
ee1f37

3.53.1.4 Design template with translation (optimized+flexibility)

ee1f37
ee1f37

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

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

ee1f37

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

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

ee1f37

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

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

ee1f37

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

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

ee1f37

At this point there are two independent worklines: one directory

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

ee1f37

For example, consider the following configuration:

ee1f37

ee1f37
ee1f37
One entry under <tt>`trunk/Identity/Themes/Models/'</tt>:
ee1f37
ee1f37

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

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

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

Inisde design models, dynamic backgrounds are required in order for

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

ee1f37
ee1f37
One entry under <tt>`trunk/Identity/Themes/Motifs/'</tt>:
ee1f37
ee1f37

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

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

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

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

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

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

There is one pre-rendition configuration script for each theme

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

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

In this configuration the pre-rendition configuration script

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

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

The production flow of "optimize+flexibility" configuration…

ee1f37

ee1f37
ee1f37

3.53.2 Renderable translation directory structures

ee1f37
ee1f37

Translation directory structures are auxiliar structures of renderable

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

ee1f37

In order to aliviate production of translation file, we made

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

ee1f37

If for some reason, translation files get far from translation

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

ee1f37

Inside renderable translation directory structures,

ee1f37
<tt>`centos-art.sh'</tt> can produce text-based files only.
ee1f37

ee1f37
ee1f37
ee1f37

3.53.3 Copying renderable directory structures

ee1f37
ee1f37

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

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

ee1f37

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

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

ee1f37

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

ee1f37
directory structure copied should match the following conditions:
ee1f37

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

    As convenction, the render_doCopy function uses

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

    ee1f37

    Design templates + No translation:

    ee1f37

    ee1f37

    Command:

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

    ee1f37

    Sources:

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

    ee1f37

    Targets:

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

    ee1f37

    Renderable layout 2:

    ee1f37

    ee1f37

    Command:

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

    ee1f37

    Sources:

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

    ee1f37

    Targets:

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

    ee1f37

    Notice that design models are not included in source or target

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

    ee1f37

    Notice how translations and pre-rendition configuration scripts may

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

    ee1f37

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

    ee1f37
      copy a directory structure to itself.
    ee1f37

    ee1f37

    - The common directory structures represent the default value to use

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

    ee1f37

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

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

    ee1f37

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

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

    ee1f37

    - The specific auxiliar directories are optional.

    ee1f37

    ee1f37

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

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

    ee1f37

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

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

    ee1f37

    The `render_doCopy' functionality does duplicate directory structures

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

    ee1f37
    ee1f37
    ee1f37

    3.53.4 Usage

    ee1f37
    ee1f37
      ee1f37
    • ...
    • ee1f37
      ee1f37
      ee1f37
      ee1f37
      ee1f37

      3.53.5 See also

      ee1f37
      ee1f37
      ee1f37
      3.54 trunk/Scripts/Bash/Functions/Render/Config  
      ee1f37
      ee1f37
      ee1f37
      ee1f37
      ee1f37
      ee1f37
      [ < ]
      ee1f37
      [ > ]
      ee1f37
         
      ee1f37
      [ << ]
      ee1f37
      [ Up ]
      ee1f37
      [ >> ]
      ee1f37
      ee1f37

      ee1f37
       <font size="-1">
      ee1f37
        This document was generated on February, 27 2011 using texi2html 1.76.
      ee1f37
       </font>
      ee1f37
       
      ee1f37
      ee1f37

      ee1f37
      </body>
      ee1f37
      </html>