From b761870d2e16e4e6bc8a456827d31470c44b6ce3 Mon Sep 17 00:00:00 2001 From: Alain Reguera Delgado Date: Feb 20 2011 17:06:40 +0000 Subject: Unify identity_renderImages into identity_renderBase and remove identity_renderImages.sh from `identity' functionality. --- diff --git a/Scripts/Bash/Functions/Identity/identity_renderBase.sh b/Scripts/Bash/Functions/Identity/identity_renderBase.sh index a48d71a..2ffb3f5 100755 --- a/Scripts/Bash/Functions/Identity/identity_renderBase.sh +++ b/Scripts/Bash/Functions/Identity/identity_renderBase.sh @@ -26,10 +26,16 @@ function identity_renderBase { + local FILE='' local FILES='' - local PARENTDIR='' + local OUTPUT='' + local EXPORTID='' local TEMPLATE='' local COMMONDIR='' + local PARENTDIR='' + local TRANSLATION='' + local EXTERNALFILE='' + local EXTERNALFILES='' local COMMONDIRCOUNT=0 local -a COMMONDIRS @@ -54,7 +60,205 @@ function identity_renderBase { COMMONDIRCOUNT=$(($COMMONDIRCOUNT + 1)) done - # Execute base-rendition action. - identity_renderImages + # Define export id used inside design templates. This value + # defines the design area we want to export. + EXPORTID='CENTOSARTWORK' + + # Start processing the base rendition list of FILES. Fun part + # approching :-). + for FILE in $FILES; do + + # Define final location of translation file. + TRANSLATION=$(dirname $FILE \ + | sed -r 's!/trunk/(Identity/)!/trunk/Locales/\1!')/$(cli_getCurrentLocale).po + + # Print final location of translation file. + if [[ ! -f "$TRANSLATION" ]];then + cli_printMessage "`gettext "None"`" "AsTranslationLine" + else + cli_printMessage "$TRANSLATION" 'AsTranslationLine' + fi + + # Define final location of template file. + TEMPLATE=${FILE} + + # Print final location of template file. + if [[ ! -f "$TEMPLATE" ]];then + cli_printMessage "`gettext "None"`" "AsDesignLine" + else + cli_printMessage "$TEMPLATE" 'AsDesignLine' + fi + + # Define final location of output directory. + identity_getDirOutput + + # Get relative path to file. The path string (stored in FILE) + # has two parts: 1. the variable path and 2. the common path. + # The variable path is before the common point in the path + # string. The common path is after the common point in the + # path string. The common point is the name of the parent + # directory (stored in PARENTDIR). + # + # trunk/Locales/Identity/.../Firstboot/3/splash-small.svg + # -------------------------^| the |^------------^ + # variable path | common | common path + # -------------------------v| point | v------------v + # trunk/Identity/Themes/M.../Firstboot/Img/3/splash-small.png + # + # What we do here is remove the varibale path, the common + # point, and the file extension parts in the string holding + # the path retrived from design models directory structure. + # Then we use the common path as relative path to store the + # the final image file. + # + # The file extension is removed from the common path because + # it is set when we create the final image file. This + # configuration let us use different extensions for the same + # file name. + # + # When we render using renderImage function, the structure of + # files under the output directory will be the same used after + # the common point in the related design model directory + # structure. + FILE=$(echo ${FILE} \ + | sed -r "s!.*${PARENTDIR}/!!" \ + | sed -r "s/\.(svgz|svg)$//") + + # Define absolute path to final file (without extension). + FILE=${OUTPUT}/$(basename "${FILE}") + + # Define instance name from design model. + INSTANCE=$(cli_getTemporalFile ${TEMPLATE}) + + if [[ -f ${TRANSLATION} ]];then + + # Create translated instance from design model. + /usr/bin/xml2po -p ${TRANSLATION} ${TEMPLATE} > ${INSTANCE} + + # Remove .xml2po.mo temporal file. + if [[ -f ${PWD}/.xml2po.mo ]];then + rm ${PWD}/.xml2po.mo + fi + + else + + # Create non-translated instance form design model. + /bin/cat ${TEMPLATE} > ${INSTANCE} + + fi + + # Apply replacement of translation markers to design model + # translated instance. + cli_replaceTMarkers ${INSTANCE} + + # Check export id inside design templates. + grep "id=\"$EXPORTID\"" $INSTANCE > /dev/null + if [[ $? -gt 0 ]];then + cli_printMessage "`eval_gettext "There is no export id (\\\$EXPORTID) inside \\\$TEMPLATE."`" "AsErrorLine" + cli_printMessage '-' 'AsSeparatorLine' + continue + fi + + # Check existence of external files. In order for design + # templates to point different artistic motifs, design + # templates make use of external files that point to specific + # artistic motif background images. If such external files + # doesn't exist, print a message and stop script execution. + # We cannot continue without background information. + identity_checkAbsolutePaths "$INSTANCE" + + # Render template instance and modify the inkscape output to + # reduce the amount of characters used in description column + # at final output. + cli_printMessage "$(inkscape $INSTANCE \ + --export-id=$EXPORTID --export-png=${FILE}.png | sed -r \ + -e "s!Area !`gettext "Area"`: !" \ + -e "s!Background RRGGBBAA:!`gettext "Background"`: RRGGBBAA!" \ + -e "s!Bitmap saved as:!`gettext "Saved as"`:!")" \ + 'AsRegularLine' + + # Remove template instance. + if [[ -a $INSTANCE ]];then + rm $INSTANCE + fi + # Execute post-rendition actions. + for ACTION in "${POSTACTIONS[@]}"; do + + case "$ACTION" in + + renderSyslinux* ) + identity_renderImageSyslinux "${FILE}" "$ACTION" + ;; + + renderGrub* ) + identity_renderImageGrub "${FILE}" "$ACTION" + ;; + + renderFormats:* ) + identity_renderImageFormats "${FILE}" "$ACTION" + ;; + + groupByType:* ) + identity_renderGroupByType "${FILE}" "$ACTION" + ;; + + esac + + done + + # Output separator line. + cli_printMessage '-' 'AsSeparatorLine' + + # Apply last-rendition actions. As convenction, last-rendition + # actions are applied after all images inside the same + # directory structure have been produced. Notice that, in + # order to apply last-rendition actions correctly, + # centos-art.sh needs to "predict" what the last file in the + # same directory structure would be. There is no magic here, + # so we need to previously define which are the common + # directory structures centos-art.sh could produce content + # for inside an array variable. Later, using the index of that + # array variable we could check the next item in the array + # against the file being currently produced. If they match, we + # haven't reached the end of the same directory structure, but + # if they don't match, we do have reach the end of the same + # directory structure and it is time for last-rendition + # actions to be evaluated before go producing the next + # directory structure in the list of files to process. + if [[ $(dirname "$TEMPLATE") != ${COMMONDIRS[$(($COMMONDIRCOUNT + 1))]} ]];then + + # At this point centos-art.sh should be producing the last + # file from the same unique directory structure, so, + # before producing images for the next directory structure + # lets evaluate last-rendition actions for the current + # directory structure. + for ACTION in "${LASTACTIONS[@]}"; do + + case "$ACTION" in + + renderKSplash ) + identity_renderImageKsplash + ;; + + renderDm:* ) + identity_renderImageDm "$ACTION" + ;; + + groupByType:* ) + identity_renderGroupByType "$ACTION" + ;; + + renderBrands ) + identity_renderImageBrands "${FILE}" "$ACTION" + ;; + + esac + done + fi + + # Increment common directory counter. + COMMONDIRCOUNT=$(($COMMONDIRCOUNT + 1)) + + done } diff --git a/Scripts/Bash/Functions/Identity/identity_renderImages.sh b/Scripts/Bash/Functions/Identity/identity_renderImages.sh deleted file mode 100644 index 622d63a..0000000 --- a/Scripts/Bash/Functions/Identity/identity_renderImages.sh +++ /dev/null @@ -1,240 +0,0 @@ -#!/bin/bash -# -# identity_renderImages.sh -- This function renders image-based -# identity contents. -# -# Copyright (C) 2009-2011 Alain Reguera Delgado -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. -# -# ---------------------------------------------------------------------- -# $Id$ -# ---------------------------------------------------------------------- - -function identity_renderImages { - - local FILE='' - local OUTPUT='' - local EXPORTID='' - local TEMPLATE='' - local TRANSLATION='' - local EXTERNALFILE='' - local EXTERNALFILES='' - local COMMONDIRCOUNT=0 - - # Export id used inside design templates. This value defines the - # design area we want to export. - EXPORTID='CENTOSARTWORK' - - # Start processing the base rendition list of FILES. Fun part - # approching :-). - for FILE in $FILES; do - - # Define final location of translation file. - TRANSLATION=$(dirname $FILE \ - | sed -r 's!/trunk/(Identity/)!/trunk/Locales/\1!')/$(cli_getCurrentLocale).po - - # Print final location of translation file. - if [[ ! -f "$TRANSLATION" ]];then - cli_printMessage "`gettext "None"`" "AsTranslationLine" - else - cli_printMessage "$TRANSLATION" 'AsTranslationLine' - fi - - # Define final location of template file. - TEMPLATE=${FILE} - - # Print final location of template file. - if [[ ! -f "$TEMPLATE" ]];then - cli_printMessage "`gettext "None"`" "AsDesignLine" - else - cli_printMessage "$TEMPLATE" 'AsDesignLine' - fi - - # Define final location of output directory. - identity_getDirOutput - - # Get relative path to file. The path string (stored in FILE) - # has two parts: 1. the variable path and 2. the common path. - # The variable path is before the common point in the path - # string. The common path is after the common point in the - # path string. The common point is the name of the parent - # directory (stored in PARENTDIR). - # - # trunk/Locales/Identity/.../Firstboot/3/splash-small.svg - # -------------------------^| the |^------------^ - # variable path | common | common path - # -------------------------v| point | v------------v - # trunk/Identity/Themes/M.../Firstboot/Img/3/splash-small.png - # - # What we do here is remove the varibale path, the common - # point, and the file extension parts in the string holding - # the path retrived from design models directory structure. - # Then we use the common path as relative path to store the - # the final image file. - # - # The file extension is removed from the common path because - # it is set when we create the final image file. This - # configuration let us use different extensions for the same - # file name. - # - # When we render using renderImage function, the structure of - # files under the output directory will be the same used after - # the common point in the related design model directory - # structure. - FILE=$(echo ${FILE} \ - | sed -r "s!.*${PARENTDIR}/!!" \ - | sed -r "s/\.(svgz|svg)$//") - - # Define absolute path to final file (without extension). - FILE=${OUTPUT}/$(basename "${FILE}") - - # Define instance name from design model. - INSTANCE=$(cli_getTemporalFile ${TEMPLATE}) - - if [[ -f ${TRANSLATION} ]];then - - # Create translated instance from design model. - /usr/bin/xml2po -p ${TRANSLATION} ${TEMPLATE} > ${INSTANCE} - - # Remove .xml2po.mo temporal file. - if [[ -f ${PWD}/.xml2po.mo ]];then - rm ${PWD}/.xml2po.mo - fi - - else - - # Create non-translated instance form design model. - /bin/cat ${TEMPLATE} > ${INSTANCE} - - fi - - # Apply replacement of translation markers to design model - # translated instance. - cli_replaceTMarkers ${INSTANCE} - - # Check export id inside design templates. - grep "id=\"$EXPORTID\"" $INSTANCE > /dev/null - if [[ $? -gt 0 ]];then - cli_printMessage "`eval_gettext "There is no export id (\\\$EXPORTID) inside \\\$TEMPLATE."`" "AsErrorLine" - cli_printMessage '-' 'AsSeparatorLine' - continue - fi - - # Check existence of external files. In order for design - # templates to point different artistic motifs, design - # templates make use of external files that point to specific - # artistic motif background images. If such external files - # doesn't exist, print a message and stop script execution. - # We cannot continue without background information. - identity_checkAbsolutePaths "$INSTANCE" - - # Render template instance and modify the inkscape output to - # reduce the amount of characters used in description column - # at final output. - cli_printMessage "$(inkscape $INSTANCE \ - --export-id=$EXPORTID --export-png=${FILE}.png | sed -r \ - -e "s!Area !`gettext "Area"`: !" \ - -e "s!Background RRGGBBAA:!`gettext "Background"`: RRGGBBAA!" \ - -e "s!Bitmap saved as:!`gettext "Saved as"`:!")" \ - 'AsRegularLine' - - # Remove template instance. - if [[ -a $INSTANCE ]];then - rm $INSTANCE - fi - - # Execute post-rendition actions. - for ACTION in "${POSTACTIONS[@]}"; do - - case "$ACTION" in - - renderSyslinux* ) - identity_renderImageSyslinux "${FILE}" "$ACTION" - ;; - - renderGrub* ) - identity_renderImageGrub "${FILE}" "$ACTION" - ;; - - renderFormats:* ) - identity_renderImageFormats "${FILE}" "$ACTION" - ;; - - groupByType:* ) - identity_renderGroupByType "${FILE}" "$ACTION" - ;; - - esac - - done - - # Output separator line. - cli_printMessage '-' 'AsSeparatorLine' - - # Apply last-rendition actions. As convenction, last-rendition - # actions are applied after all images inside the same - # directory structure have been produced. Notice that, in - # order to apply last-rendition actions correctly, - # centos-art.sh needs to "predict" what the last file in the - # same directory structure would be. There is no magic here, - # so we need to previously define which are the common - # directory structures centos-art.sh could produce content - # for inside an array variable. Later, using the index of that - # array variable we could check the next item in the array - # against the file being currently produced. If they match, we - # haven't reached the end of the same directory structure, but - # if they don't match, we do have reach the end of the same - # directory structure and it is time for last-rendition - # actions to be evaluated before go producing the next - # directory structure in the list of files to process. - if [[ $(dirname "$TEMPLATE") != ${COMMONDIRS[$(($COMMONDIRCOUNT + 1))]} ]];then - - # At this point centos-art.sh should be producing the last - # file from the same unique directory structure, so, - # before producing images for the next directory structure - # lets evaluate last-rendition actions for the current - # directory structure. - for ACTION in "${LASTACTIONS[@]}"; do - - case "$ACTION" in - - renderKSplash ) - identity_renderImageKsplash - ;; - - renderDm:* ) - identity_renderImageDm "$ACTION" - ;; - - groupByType:* ) - identity_renderGroupByType "$ACTION" - ;; - - renderBrands ) - identity_renderImageBrands "${FILE}" "$ACTION" - ;; - - esac - done - fi - - # Increment common directory counter. - COMMONDIRCOUNT=$(($COMMONDIRCOUNT + 1)) - - done - -}