From: Nikita Kitaev Date: Thu, 15 Apr 2010 23:23:23 +0000 (-0700) Subject: Merge branch 'master' into nikitakit_master X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=c11c4966980ed301f40b3dcc24e4fbec525f93e3;hp=6de0a0a51c71b4e47e9c2f63e05ae9ca8295a57f;p=synfig.git Merge branch 'master' into nikitakit_master --- diff --git a/autobuild/synfigstudio-linux-build.sh b/autobuild/synfigstudio-linux-build.sh new file mode 100644 index 0000000..4eb951f --- /dev/null +++ b/autobuild/synfigstudio-linux-build.sh @@ -0,0 +1,865 @@ +#!/bin/bash +# +# SynfigStudio build script +# Copyright (c) 2008-2010 Konstantin Dmitriev +# +# This package 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 package 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. + +# = Usage: = +# ./synfigstudio-linux-build.sh [mode] [revision] +# +# where: +# - [mode] is full|quick|package +# - [revision] - commit id, branch or tag (package mode only) +# +# To build packages it's required to run this script as root. +# +# = Examples: = +# +# == Standart mode == +# Configure and (re)build synfigstudio into your homedir: +# ./synfigstudio-linux-build.sh +# Configure and make clean build synfigstudio into your homedir: +# ./synfigstudio-linux-build.sh full +# Quick rebuild of synfig (without configure) into your homedir: +# ./synfigstudio-linux-build.sh quick +# +# == Package mode == +# Build package from "master" branch: +# ./synfigstudio-linux-build.sh package +# Build package from "genete_setup_dialog" branch +# ./synfigstudio-linux-build.sh package origin/genete_setup_dialog +# Build package from commit with "synfigstudio-0.62.00" tag +# ./synfigstudio-linux-build.sh package synfigstudio-0.62.00 +# +# = TODO = +# - debuginfo packages + +RELEASE=1 +PREFIX=$HOME/synfig/ + +PACKAGES_PATH=$HOME/synfig-packages # path where to write packages files +PACKAGES_BUILDROOT=/tmp/synfig-buildroot # path of for build infrastructure + +# full = clean, configure, make +# standart = configure, make +# quick = make +# package = chroot, clean, configure, make +MODE='standart' +OPENGL=0 +DEBUG=0 +BREED= + +LIBSIGCPP=2.0.17 +GLEW=1.5.1 +CAIROMM=1.2.4 +IMAGEMAGICK=6.4.0 +#GTKMM=2.10.9 +GTKMM=2.8.12 +FTGL=2.1.2 +FREEGLUT=2.4.0 +GTKGLEXT=1.2.0 +GTKGLEXTMM=1.2.0 +#LIBXMLPP=2.14.0 +LIBXMLPP=2.20.0 +#LIBXMLPP=2.23.2 +GLIBMM=2.12.8 +#GLIBMM=2.18.1 +GITVERSION=1.7.0 # git version for chroot environment + +SYNFIG_REPO_DIR='' +WORKDIR_IS_REPO=0 + +# Allow overriding PREFIX and/or BREED +if [ -f "./synfigstudio-build.conf" ] ; then + . "./synfigstudio-build.conf" +fi + +set -e + +if (test "$2"); then + SELECTEDREVISION=$2 +else + SELECTEDREVISION=origin/master +fi + +mklibsigcpp() +{ +if [ ! -d ${PREFIX}/include/sigc++-2.0 ]; then + pushd /source + [ ! -d libsigc++-${LIBSIGCPP} ] && tar -xjf libsigc++-${LIBSIGCPP}.tar.bz2 + cd libsigc++-${LIBSIGCPP} + #make clean || true + ./configure --prefix=${PREFIX}/ --includedir=${PREFIX}/include --disable-static --enable-shared + make -j2 + make install + cd .. + popd +fi +} + +mkglibmm() +{ +if [ ! -d ${PREFIX}/include/glibmm-2.4 ]; then + pushd /source + [ ! -d glibmm-${GLIBMM} ] && tar -xjf glibmm-${GLIBMM}.tar.bz2 + cd glibmm-${GLIBMM} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --disable-fulldocs + make -j2 + make install + cd .. + popd +fi +} + +mklibxmlpp() +{ +if [ ! -d ${PREFIX}/include/libxml++-2.6 ]; then + pushd /source + [ ! -d libxml++-${LIBXMLPP} ] && tar -xjf libxml++-${LIBXMLPP}.tar.bz2 + cd libxml++-${LIBXMLPP} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared + make -j2 + make install + cd .. + popd +fi +} + +mkimagemagick() +{ +if [ ! -d ${PREFIX}/include/ImageMagick ]; then + pushd /source + [ ! -d ImageMagick-${IMAGEMAGICK} ] && tar -xjf ImageMagick-${IMAGEMAGICK}-10.tar.bz2 && cd ImageMagick-${IMAGEMAGICK} && patch -p1 < ../ImageMagick-6.4.0-multilib.patch && cd .. + cd ImageMagick-${IMAGEMAGICK} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared \ + --with-modules \ + --without-perl \ + --without-x \ + --with-threads \ + --with-magick_plus_plus \ + --without-gslib \ + --without-wmf \ + --without-lcms \ + --without-rsvg \ + --without-xml \ + --without-windows-font-dir \ + --without-dps \ + --without-djvu \ + --without-fpx \ + --without-jbig \ + --without-jp2 \ + --without-tiff \ + --without-fontconfig \ + --without-freetype \ + --without-png \ + --without-gvc \ + --without-openexr + sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool + sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + make -j2 + make install + cd .. + popd +fi +} + +mkglew() +{ +[ ! -d glew-${GLEW} ] && tar -xzf glew-${GLEW}.tar.gz && cd glew && patch -p1 < glew-${GLEW}-makefile.patch && cd .. + pushd /source + cd glew + #[[ $DOCLEAN == 1 ]] && make clean || true + sed -i -e 's/\r//g' config/config.guess + make -j2 + make install GLEW_DEST=${PREFIX} libdir=/lib bindir=/bin includedir=/include + cd .. + popd +} + +mkcairomm() +{ +if [ ! -d ${PREFIX}/include/cairomm-1.0 ]; then + pushd /source + [ ! -d cairomm-${CAIROMM} ] && tar -xzf cairomm-${CAIROMM}.tar.gz + cd cairomm-${CAIROMM} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --enable-docs=no + make -j2 + make install + cd .. +fi +} + +mkgtkmm() +{ +if [ ! -d ${PREFIX}/include/gtkmm-2.4 ]; then + pushd /source + [ ! -d gtkmm-${GTKMM} ] && tar -xjf gtkmm-${GTKMM}.tar.bz2 + cd gtkmm-${GTKMM} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --disable-examples --disable-demos --disable-docs + make -j2 + make install + cd .. + popd +fi +} + +mkfreeglut() +{ + pushd /source + [ ! -d freeglut-${FREEGLUT} ] && tar -xzf freeglut-${FREEGLUT}.tar.gz + cd freeglut-${FREEGLUT} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --disable-warnings --enable-shared + make -j2 + make install + cd .. + popd +} + +mkftgl() +{ + pushd /source + if [ ! -d ftgl-${FTGL} ]; then + tar -xjf ftgl-${FTGL}.tar.bz2 + cd FTGL + patch -p1 -b < ftgl-2.1.2-destdir.patch + patch -p1 -b < ftgl-2.1.2-Glyph-g++_41.patch + patch -p1 -b < ftgl-2.1.2-pc_req.patch + patch -p1 -b < ftgl-2.1.2-rpath_FTGLDemo.patch + patch -p1 -b < ftgl-2.1.2-ttf_font.patch + sed -i.fixed_version -e 's|2.0.5|%{version}|g' unix/configure.ac unix/configure + cd .. + fi + cd FTGL + cd unix + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --with-gl-inc=${PREFIX}/include --with-gl-lib=${PREFIX}/lib --with-glut-inc=${PREFIX}/include --with-glut-lib=${PREFIX}/lib --with-x + make all -j2 + make install + cd .. + popd +} + +mkgtkglext() +{ + pushd /source + [ ! -d gtkglext-${GTKGLEXT} ] && tar -xjf gtkglext-${GTKGLEXT}.tar.bz2 + cd gtkglext-${GTKGLEXT} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-gtk-doc --disable-static --enable-shared + make -j2 + make install + cd .. + popd +} + +mkgtkglextmm() +{ + pushd /source + [ ! -d gtkglextmm-${GTKGLEXTMM} ] && tar -xjf gtkglextmm-${GTKGLEXTMM}.tar.bz2 && cd gtkglextmm-${GTKGLEXTMM} && patch -p1 < gtkglextmm-1.2.0-aclocal.diff && cd .. + cd gtkglextmm-${GTKGLEXTMM} + #[[ $DOCLEAN == 1 ]] && make clean || true + ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-dependency-tracking --disable-static --enable-shared + make -j2 + make install + popd +cd .. +} + +mkgit() +{ + pushd /source + [ ! -d git-${GITVERSION} ] && tar -xjf git-${GITVERSION}.tar.bz2 + cd git-${GITVERSION} + ./configure + make -j2 + make install + cd .. + popd +} + +mkETL() +{ +if [ -d ${SYNFIG_REPO_DIR}/ETL/trunk ]; then + pushd ${SYNFIG_REPO_DIR}/ETL/trunk +else + pushd ${SYNFIG_REPO_DIR}/ETL +fi + + +if ( [[ $MODE == 'package' ]] || [[ $MODE == 'full' ]] ); then + echo "Cleaning source tree..." + make clean || true +fi + + +if [[ $MODE != 'quick' ]]; then + echo "Going to configure..." + rm -f aclocal.m4 + autoreconf --install --force + bash ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include $DEBUG +fi + +make -j2 +make install + +popd +} + +mksynfig() +{ +if [ -d ${SYNFIG_REPO_DIR}/synfig-core/trunk ]; then + pushd ${SYNFIG_REPO_DIR}/synfig-core/trunk +else + pushd ${SYNFIG_REPO_DIR}/synfig-core +fi + +export CXXFLAGS=-I${PREFIX}/include/ImageMagick + +( [[ $MODE == 'package' ]] || [[ $MODE == 'full' ]] ) && make clean || true + +if [[ $MODE != 'quick' ]]; then + libtoolize --ltdl --copy --force + sed -i 's/^AC_CONFIG_SUBDIRS(libltdl)$/m4_ifdef([_AC_SEEN_TAG(libltdl)], [], [AC_CONFIG_SUBDIRS(libltdl)])/' configure.ac || true + sed -i 's/^# AC_CONFIG_SUBDIRS(libltdl)$/m4_ifdef([_AC_SEEN_TAG(libltdl)], [], [AC_CONFIG_SUBDIRS(libltdl)])/' configure.ac || true + autoreconf --install --force + bash ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared --with-magickpp --without-libavcodec $DEBUG +fi + +#It looks like mod_libavcodec causes segfault on synfig-core when rendering to png. +#Tested on: ffmpeg-0.4.9-0.52.20080908.fc10.x86_64. + +#if [[ $GIT == 1 ]]; then +# export CFLAGS=-I/opt/synfig/include/GL/ +# export LDFLAGS=-L/opt/synfig/lib/ +#else +# export CFLAGS='' +# export LDFLAGS='' +#fi + +make -j2 +make install + +popd +} + +mksynfigstudio() +{ +if [ -d ${SYNFIG_REPO_DIR}/synfig-studio/trunk ]; then + pushd ${SYNFIG_REPO_DIR}/synfig-studio/trunk +else + pushd ${SYNFIG_REPO_DIR}/synfig-studio +fi + +( [[ $MODE == 'package' ]] || [[ $MODE == 'full' ]] ) && make clean || true + +if [[ $MODE != 'quick' ]]; then + autoreconf --install --force + bash ./configure --prefix=${PREFIX} --includedir=${PREFIX}/include --disable-static --enable-shared $DEBUG +fi + +make -j2 +make install + +for n in AUTHORS COPYING NEWS README +do + cp -f $n ${PREFIX} +done + +if [ -e synfigstudio-cph-monitor ]; then + cp -f synfigstudio-cph-monitor ${PREFIX}/bin/ + chmod a+x ${PREFIX}/bin/synfigstudio-cph-monitor +fi + +popd +} + +mkpack() +{ + [ -d /packages ] || mkdir /packages + + #== tar.bz2 == + TBZPREFIX=/tmp/synfigstudio-${VERSION}-${REVISION}.$BREED.$RELEASE.${ARCH} + rm -rf $TBZPREFIX + mkdir -p $TBZPREFIX + cp -r ${PREFIX}/* $TBZPREFIX + + if [[ $DEBUG == '--enable-debug' ]]; then + GDB="which gdb && xterm -e gdb -ex run -ex quit \$PREFIX/bin/synfig \$@ || " + else + GDB='' + fi + + #binaries + cat > $TBZPREFIX/synfig < $TBZPREFIX/synfigstudio < synfigstudio.spec << EOF +%define __spec_install_post /bin/true + +Name: synfigstudio +Version: ${VERSION} +Release: ${RPMREVISION}.${RELEASE} +Summary: Film-Quality 2D Vector Animation package +Group: Applications/Graphics +License: GPL +URL: http://www.synfig.org/ +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Obsoletes: synfig ETL +AutoReqProv: no + + +%description +Synfig Animation Studio is a powerful, industrial-strength vector-based +2D animation software, designed from the ground-up for producing +feature-film quality animation with fewer people and resources. +It is designed to be capable of producing feature-film quality +animation. It eliminates the need for tweening, preventing the +need to hand-draw each frame. Synfig features spatial and temporal +resolution independence (sharp and smoothat any resolution or framerate), +high dynamic range images, and a flexible plugin system. + + +%prep + + +%build + +%install +rm -rf \$RPM_BUILD_ROOT +mkdir -p \$RPM_BUILD_ROOT/${PREFIX} +cp -r ${PREFIX}/* \$RPM_BUILD_ROOT/${PREFIX} +mkdir -p \$RPM_BUILD_ROOT/usr/share +mv \$RPM_BUILD_ROOT/${PREFIX}/share/applications \$RPM_BUILD_ROOT/usr/share +mv \$RPM_BUILD_ROOT/${PREFIX}/share/icons \$RPM_BUILD_ROOT/usr/share +mkdir -p \$RPM_BUILD_ROOT/usr/share/mime-info +ln -sf ${PREFIX}/share/mime-info/synfigstudio.keys \$RPM_BUILD_ROOT/usr/share/mime-info/synfigstudio.keys +ln -sf ${PREFIX}/share/mime-info/synfigstudio.mime \$RPM_BUILD_ROOT/usr/share/mime-info/synfigstudio.mime +mkdir -p \$RPM_BUILD_ROOT/usr/share/pixmaps +ln -sf ${PREFIX}/share/pixmaps/sif_icon.png \$RPM_BUILD_ROOT/usr/share/pixmaps/sif_icon.png +ln -sf ${PREFIX}/share/pixmaps/synfig_icon.png \$RPM_BUILD_ROOT/usr/share/pixmaps/synfig_icon.png +mkdir -p \$RPM_BUILD_ROOT/usr/bin +mv \$RPM_BUILD_ROOT/${PREFIX}/bin/synfig \$RPM_BUILD_ROOT/usr/bin/ +mv \$RPM_BUILD_ROOT/${PREFIX}/bin/synfigstudio \$RPM_BUILD_ROOT/usr/bin/ + +if [ -e \$RPM_BUILD_ROOT/${PREFIX}/bin/synfigstudio-cph-monitor ]; then +mv \$RPM_BUILD_ROOT/${PREFIX}/bin/synfigstudio-cph-monitor \$RPM_BUILD_ROOT/usr/bin/ +cat > \$RPM_BUILD_ROOT/usr/share/applications/synfigstudio-cph-monitor.desktop << EOD +[Desktop Entry] +Encoding=UTF-8 +Name=Synfig Studio CPH monitor +Comment=This application collecting statistics about synfig crashes +Exec=synfigstudio-cph-monitor +Icon=terminal.png +Terminal=true +Type=Application +Categories=Graphics;Application; +X-Desktop-File-Install-Version=0.15 +EOD +fi + +#cleaning devel stuff +rm -f \$RPM_BUILD_ROOT/${PREFIX}/lib/*.la +rm -f \$RPM_BUILD_ROOT/${PREFIX}/lib/*.a +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/bin +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/include +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/gdkmm-2.4 +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/libxml++-2.6 +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/glibmm-2.4 +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/gtkmm-2.4 +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/pkgconfig +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/lib/sigc++-2.0 +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/doc +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/aclocal +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/ImageMagick-6.4.0 +rm -rf \$RPM_BUILD_ROOT/${PREFIX}/share/man + + +%clean +rm -rf \$RPM_BUILD_ROOT + +%post + +%postun + +%files +%defattr(-,root,root,-) +$PREFIX +/usr/share/* +/usr/bin/* + +%changelog +* Sat Mar 21 2009 Konstantin Dmitriev - 0.61.09-2354.morevnapackage.1 +- Update to SVN2354 +- Include ImageMagick-c++ + +* Wed Jan 14 2009 Konstantin Dmitriev - 0.61.09-2316.morevnapackage.1 +- First release + +EOF + rpmbuild -bb synfigstudio.spec + + #cp /usr/src/redhat/RPMS/$ARCH/synfigstudio-${VERSION}-${RPMREVISION}.$RELEASE.${ARCH}.rpm ../ + cp /usr/src/rpm/RPMS/$ARCH/synfigstudio-${VERSION}-${RPMREVISION}.$RELEASE.${ARCH}.rpm /packages/ + pushd /packages/ + alien -k synfigstudio-${VERSION}-${RPMREVISION}.$RELEASE.${ARCH}.rpm + rm -rf synfigstudio-${VERSION} + popd +} + +initialize() +{ + # Make sure we have all dependencies installed + echo "Checking dependencies..." + DEB_LIST_MINIMAL="build-essential autoconf automake libltdl3-dev libtool gettext cvs libpng12-dev libjpeg62-dev libfreetype6-dev libfontconfig1-dev libgtk2.0-dev libxml2-dev bzip2" + if which yum >/dev/null; then + PKG_LIST="git" + if [[ $MODE == 'package' ]]; then + PKG_LIST="${PKG_LIST} debootstrap rsync" + else + PKG_LIST="${PKG_LIST} libpng-devel libjpeg-devel freetype-devel fontconfig-devel atk-devel pango-devel cairo-devel gtk2-devel gettext-devel libxml2-devel libxml++-devel gcc-c++ autoconf automake libtool libtool-ltdl-devel cvs" + PKG_LIST="${PKG_LIST} OpenEXR-devel libmng-devel ImageMagick-c++-devel gtkmm24-devel glibmm24-devel" + fi + if ! ( rpm -qv $PKG_LIST ); then + echo "Running yum (you need root privelegies to do that)..." + su -c "yum install $PKG_LIST" + fi + elif which apt-get >/dev/null; then + PKG_LIST="git-core" + if [[ $MODE == 'package' ]]; then + if [[ `cat /etc/chroot.id` == "Synfig Packages Buildroot" ]]; then + #we are inside of chroot + PKG_LIST="$DEB_LIST_MINIMAL rpm alien xsltproc wget python" + else + #we have to prepare chroot + PKG_LIST="${PKG_LIST} debootstrap rsync" + fi + else + PKG_LIST="${PKG_LIST} ${DEB_LIST_MINIMAL} libmng-dev libgtkmm-2.4-dev libglibmm-2.4-dev libsigc++-2.0-dev" + fi + if ! ( dpkg -s $PKG_LIST >/dev/null ); then + echo "Running apt-get (you need root privelegies to do that)..." + echo + #echo "http_proxy =====" $http_proxy + #env + sudo apt-get update + sudo apt-get install -y $PKG_LIST + fi + else + if [[ $MODE == 'package' ]]; then + if ! ( which git && which debootstrap ) ; then + echo "ERROR: Please install 'git' and 'debootstrap'." + exit; + fi + else + echo "WARNING: This build script does not works with package mangement systems other than rpm/yum or apt/dpkg! You should install dependent packages manually." + read + fi + fi + echo "Done." + + if [[ $DEBUG == 1 ]]; then + DEBUG='--enable-debug' + else + DEBUG='' + fi + + + + if [[ $MODE == 'package' ]] && [[ `cat /etc/chroot.id` == "Synfig Packages Buildroot" ]]; then + SYNFIG_REPO_DIR="/source/synfig.git" + PREFIX="/opt/synfig" + + which git || mkgit + + pushd $SYNFIG_REPO_DIR + git fetch + git reset --hard HEAD + #we can't switch directly to specified commit wit old git, so let's create temporary branch: + #git checkout master || ( git branch -f master && git checkout master ) + #git branch -f __build $SELECTEDREVISION + #git checkout __build + git checkout $SELECTEDREVISION + VERSION=`cat synfig-core/configure.ac |egrep "AC_INIT\(\[Synfig Core\],"| sed "s|.*Core\],\[||" | sed "s|\],\[.*||"` + if [ -z $BREED ]; then + BREED="`git branch -a --no-color --contains HEAD | sed -e s/\*\ // | sed -e s/\(no\ branch\)// | tr '\n' ' ' | tr -s ' ' | sed s/^' '//`" + if ( echo $BREED | egrep origin/master > /dev/null ); then + #give a priority to master branch + BREED='master' + else + BREED=`echo $BREED | cut -d ' ' -f 1` + BREED=${BREED##*/} + fi + BREED=${BREED%_master} + fi + [[ $DEBUG == 1 ]] && BREED=${BREED}_debug + REVISION=`git show --pretty=medium $SELECTEDREVISION | head -n 3 |tail -n 1 | sed 's/Date: *//' | sed 's/ +.*//'` + REVISION=`date --date="${REVISION}" +%Y%m%d` + echo + echo + echo "BUILDING synfigstudio-$VERSION-$REVISION.$BREED.$RELEASE" + echo + echo + sleep 5 + popd + + #Trick to detect arch under chroot + #ARCH=`rpm -q --queryformat='%{arch}\n' e2fsprogs` + MACHINE_TYPE=`uname -m` + case ${MACHINE_TYPE} in + i586) + ARCH=i386;; + i686) + ARCH=i386;; + *) + ARCH=${MACHINE_TYPE};; + esac + else + #detecting repo + if git rev-parse --git-dir >/dev/null; then + SYNFIG_REPO_DIR=$(dirname `git rev-parse --git-dir`) + WORKDIR_IS_REPO=1 + fi + fi + + export PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig + export PATH=${PREFIX}/bin:$PATH + export LD_LIBRARY_PATH=${PREFIX}/lib:$LD_LIBRARY_PATH + export LDFLAGS="-Wl,-rpath -Wl,\\\$\$ORIGIN/lib" +} + +mk() +{ + if [[ WORKDIR_IS_REPO == 0 ]]; then + SYNFIG_REPO_DIR=`pwd`/synfig.git/ + git clone git://synfig.git.sourceforge.net/gitroot/synfig/synfig ${SYNFIG_REPO_DIR} + fi + + mkETL + mksynfig + mksynfigstudio +} + +mkpackage() +{ + #check if we already in chroot + if [[ `cat /etc/chroot.id` == "Synfig Packages Buildroot" ]]; then + echo "We are in chroot now." + + echo "[user]" > $HOME/.gitconfig + echo "email = packages@synfig.org" >> $HOME/.gitconfig + echo "name = Synfig Packager" >> $HOME/.gitconfig + + + + #synfig-core deps + mklibsigcpp + mkglibmm + mklibxmlpp + if [[ $OPENGL == 1 ]]; then + mkglew + fi + mkimagemagick + #synfig-studio deps + mkcairomm + mkgtkmm + if [[ $OPENGL == 1 ]]; then + mkfreeglut + mkftgl + mkgtkglext + mkgtkglextmm + fi + + mkETL + mksynfig + mksynfigstudio + + mkpack + else + [ -d $HOME/synfig-packages ] || mkdir -p $HOME/synfig-packages + #DEB_LIST="build-essential,autoconf,automake,libltdl3-dev,libtool,gettext,cvs,libpng12-dev,libjpeg62-dev,libfreetype6-dev,libfontconfig1-dev,libgtk2.0-dev,libxml2-dev,bzip2,rpm,alien,xsltproc" + for ARCH in i386 amd64; do + if [[ $ARCH == 'i386' ]];then + SETARCH='linux32' + else + SETARCH='linux64' + fi + if ! [ -e $PACKAGES_BUILDROOT.$ARCH/etc/chroot.id ]; then + debootstrap --arch=$ARCH --variant=buildd --include=sudo etch $PACKAGES_BUILDROOT.$ARCH http://ftp.us.debian.org/debian + fi + #set chroot ID + echo "Synfig Packages Buildroot" > $PACKAGES_BUILDROOT.$ARCH/etc/chroot.id + cp -f $0 $PACKAGES_BUILDROOT.$ARCH/build.sh + #keep proxy settings + if ! [ -z $http_proxy ]; then + #echo "export http_proxy=\"$http_proxy\";" >> $PACKAGES_BUILDROOT.$ARCH/root/.bashrc + #echo "echo 'proxy export done';" >> $PACKAGES_BUILDROOT.$ARCH/root/.bashrc + echo "Acquire::http::Proxy \"$http_proxy\";" > $PACKAGES_BUILDROOT.$ARCH/etc/apt/apt.conf + fi + #fetch sources to cache + [ -d $PACKAGES_BUILDROOT.$ARCH/source ] && rm -rf $PACKAGES_BUILDROOT.$ARCH/source || true + if ! [ -d $PACKAGES_BUILDROOT/synfig.git ]; then + if [[ $WORKDIR_IS_REPO == 1 ]]; then + git clone $SYNFIG_REPO_DIR $PACKAGES_BUILDROOT/synfig.git + sed -i 's|url = .*|url = git://synfig.git.sourceforge.net/gitroot/synfig/synfig|' $PACKAGES_BUILDROOT/synfig.git/.git/config + else + git clone git://synfig.git.sourceforge.net/gitroot/synfig/synfig $PACKAGES_BUILDROOT/synfig.git + fi + fi + pushd $PACKAGES_BUILDROOT + cd synfig.git && git fetch && cd .. + [ ! -e git-$GITVERSION.tar.bz2 ] && wget -c http://kernel.org/pub/software/scm/git/git-$GITVERSION.tar.bz2 + for FILE in \ + cairomm-${CAIROMM}.tar.gz \ + glibmm-${GLIBMM}.tar.bz2 \ + gtkmm-${GTKMM}.tar.bz2 \ + libsigc++-${LIBSIGCPP}.tar.bz2 \ + libxml++-${LIBXMLPP}.tar.bz2 \ + ImageMagick-6.3.8-invalid-gerror-use.patch \ + ImageMagick-${IMAGEMAGICK}-10.tar.bz2 \ + ImageMagick-${IMAGEMAGICK}-multilib.patch \ + ImageMagick-${IMAGEMAGICK}-xdg-open.patch + do + #[ ! -e $FILE ] && wget -c http://download.tuxfamily.org/morevna/morevnapackage/sources/$FILE + rsync -av rsync://download.tuxfamily.org/pub/synfig/packages/sources/$FILE ./ + done + if [[ $OPENGL == 1 ]]; then + for FILE in \ + glew-${GLEW}.tar.gz\ + glew-${GLEW}-makefile.patch \ + freeglut-${FREEGLUT}.tar.gz \ + ftgl-${FTGL}.tar.gz \ + ftgl-${FTGL}-destdir.patch \ + ftgl-${FTGL}-Glyph-g++_41.patch \ + ftgl-${FTGL}-pc_req.patch \ + ftgl-${FTGL}-rpath_FTGLDemo.patch \ + ftgl-${FTGL}-ttf_font.patch \ + gtkglext-${GTKGLEXT}.tar.bz2 \ + gtkglextmm-${GTKGLEXTMM}.tar.bz2 \ + gtkglextmm-${GTKGLEXTMM}-aclocal.diff + do + #[ ! -e $FILE ] && wget -c http://download.tuxfamily.org/morevna/morevnapackage/sources/$FILE + rsync -av rsync://download.tuxfamily.org/pub/synfig/packages/sources/$FILE ./ + done + fi + popd + #copy sources + [ -d $PACKAGES_BUILDROOT.$ARCH/source ] || mkdir -p $PACKAGES_BUILDROOT.$ARCH/source + cp -rf $PACKAGES_BUILDROOT/* $PACKAGES_BUILDROOT.$ARCH/source/ + #go to chroot + $SETARCH chroot $PACKAGES_BUILDROOT.$ARCH env http_proxy=$http_proxy bash /build.sh package $SELECTEDREVISION + mv -f $PACKAGES_BUILDROOT.$ARCH/packages/* $PACKAGES_PATH + done + echo + echo + find $PACKAGES_PATH/synfigstudio* -maxdepth 1 + echo " DONE BUILDING PACKAGES INTO $HOME/synfig-packages" + echo + fi +} + +###=================================== MAIN ====================================== + +if [ -z $1 ]; then + ARG='standart' +else + ARG=$1 +fi + +case $ARG in + full) + MODE='full' + initialize + mk + exit;; + standart) + MODE='standart' + initialize + mk + exit;; + quick) + MODE='quick' + initialize + mk + exit;; + package) + MODE='package' + initialize + mk$ARG + exit;; + *) + MODE='package' + initialize + mk$ARG + exit;; +esac diff --git a/synfig-core/src/modules/mod_svg/svg_parser.cpp b/synfig-core/src/modules/mod_svg/svg_parser.cpp index 680aa4f..18e66b4 100644 --- a/synfig-core/src/modules/mod_svg/svg_parser.cpp +++ b/synfig-core/src/modules/mod_svg/svg_parser.cpp @@ -32,6 +32,7 @@ #endif #include +#include #include "svg_parser.h" /* === U S I N G =========================================================== */ @@ -1780,7 +1781,7 @@ Svg_parser::get_tokens_path(String path){ //mini path lexico-parser else if(a=='V'){ e=15; i++;} else if(a=='H'){ e=16; i++;} else if(a=='z' || a=='Z'){ e=17; i++;} - else if(a=='-' ||a=='.'|| isdigit (a)){ e=18;} + else if(a=='-' || a=='.' || a=='e' || a=='E' || isdigit (a)){ e=18;} else if(a==','){ e=19; i++;} else if(a==' '){i++;} break; @@ -1804,7 +1805,7 @@ Svg_parser::get_tokens_path(String path){ //mini path lexico-parser case 16: tokens.push_back("H"); e=0; break; case 17: tokens.push_back("z"); e=0; break;//loop - case 18: if(a=='-'||a=='.'|| isdigit (a)){ + case 18: if(a=='-' || a=='.' || a=='e' || a=='E' || isdigit (a)){ buffer.append(path.substr(i,1));i++; }else{ e=20; @@ -1853,6 +1854,8 @@ Svg_parser::randomLetter(){ int Svg_parser::getRed(String hex){ if(hex.at(0)=='#'){ + //allow for 3-digit hex codes (#rgb = #rrggbb) + if (hex.length()<7) return (16+1) * hextodec(hex.substr(1,1)); return hextodec(hex.substr(1,2)); }else if(hex.compare(0,3,"rgb")==0 || hex.compare(0,3,"RGB")==0){ int start=hex.find_first_of("(")+1; @@ -1860,11 +1863,12 @@ Svg_parser::getRed(String hex){ String aux=tokenize(hex.substr(start,end-start),",").at(0); return atoi(aux.data()); } - return 0; + return getColor(hex,1); } int Svg_parser::getGreen(String hex){ if(hex.at(0)=='#'){ + if (hex.length()<7) return (16+1) * hextodec(hex.substr(2,1)); return hextodec(hex.substr(3,2)); }else if(hex.compare(0,3,"rgb")==0 || hex.compare(0,3,"RGB")==0){ int start=hex.find_first_of("(")+1; @@ -1872,11 +1876,12 @@ Svg_parser::getGreen(String hex){ String aux=tokenize(hex.substr(start,end-start),",").at(1); return atoi(aux.data()); } - return 0; + return getColor(hex,2); } int Svg_parser::getBlue(String hex){ if(hex.at(0)=='#'){ + if (hex.length()<7) return (16+1) * hextodec(hex.substr(3,1)); return hextodec(hex.substr(5,2)); }else if(hex.compare(0,3,"rgb")==0 || hex.compare(0,3,"RGB")==0){ int start=hex.find_first_of("(")+1; @@ -1884,7 +1889,7 @@ Svg_parser::getBlue(String hex){ String aux=tokenize(hex.substr(start,end-start),",").at(2); return atoi(aux.data()); } - return 0; + return getColor(hex,3); } int Svg_parser::hextodec(String hex){ @@ -2017,3 +2022,161 @@ Svg_parser::new_guid(){ return GUID::hasher(uid).get_string(); } + +#define COLOR_NAME(color, r, g, b) else if(name.compare(0,strlen(color),color)==0) \ + {switch(position) \ + {case 1: return r; case 2: return g; case 3: return b;} } + +int +Svg_parser::getColor(String name, int position){ + if (position<1 || position>3) return 0; + COLOR_NAME("aliceblue",240, 248, 255) + COLOR_NAME("antiquewhite",250, 235, 215) + COLOR_NAME("aqua", 0, 255, 255) + COLOR_NAME("aquamarine",127, 255, 212) + COLOR_NAME("azure",240, 255, 255) + COLOR_NAME("beige",245, 245, 220) + COLOR_NAME("bisque",255, 228, 196) + COLOR_NAME("black", 0, 0, 0) + COLOR_NAME("blanchedalmond",255, 235, 205) + COLOR_NAME("blue", 0, 0, 255) + COLOR_NAME("blueviolet",138, 43, 226) + COLOR_NAME("brown",165, 42, 42) + COLOR_NAME("burlywood",222, 184, 135) + COLOR_NAME("cadetblue", 95, 158, 160) + COLOR_NAME("chartreuse",127, 255, 0) + COLOR_NAME("chocolate",210, 105, 30) + COLOR_NAME("coral",255, 127, 80) + COLOR_NAME("cornflowerblue",100, 149, 237) + COLOR_NAME("cornsilk",255, 248, 220) + COLOR_NAME("crimson",220, 20, 60) + COLOR_NAME("cyan", 0, 255, 255) + COLOR_NAME("darkblue", 0, 0, 139) + COLOR_NAME("darkcyan", 0, 139, 139) + COLOR_NAME("darkgoldenrod",184, 134, 11) + COLOR_NAME("darkgray",169, 169, 169) + COLOR_NAME("darkgreen", 0, 100, 0) + COLOR_NAME("darkgrey",169, 169, 169) + COLOR_NAME("darkkhaki",189, 183, 107) + COLOR_NAME("darkmagenta",139, 0, 139) + COLOR_NAME("darkolivegreen", 85, 107, 47) + COLOR_NAME("darkorange",255, 140, 0) + COLOR_NAME("darkorchid",153, 50, 204) + COLOR_NAME("darkred",139, 0, 0) + COLOR_NAME("darksalmon",233, 150, 122) + COLOR_NAME("darkseagreen",143, 188, 143) + COLOR_NAME("darkslateblue", 72, 61, 139) + COLOR_NAME("darkslategray", 47, 79, 79) + COLOR_NAME("darkslategrey", 47, 79, 79) + COLOR_NAME("darkturquoise", 0, 206, 209) + COLOR_NAME("darkviolet",148, 0, 211) + COLOR_NAME("deeppink",255, 20, 147) + COLOR_NAME("deepskyblue", 0, 191, 255) + COLOR_NAME("dimgray",105, 105, 105) + COLOR_NAME("dimgrey",105, 105, 105) + COLOR_NAME("dodgerblue", 30, 144, 255) + COLOR_NAME("firebrick",178, 34, 34) + COLOR_NAME("floralwhite",255, 250, 240) + COLOR_NAME("forestgreen", 34, 139, 34) + COLOR_NAME("fuchsia",255, 0, 255) + COLOR_NAME("gainsboro",220, 220, 220) + COLOR_NAME("ghostwhite",248, 248, 255) + COLOR_NAME("gold",255, 215, 0) + COLOR_NAME("goldenrod",218, 165, 32) + COLOR_NAME("gray",128, 128, 128) + COLOR_NAME("grey",128, 128, 128) + COLOR_NAME("green", 0, 128, 0) + COLOR_NAME("greenyellow",173, 255, 47) + COLOR_NAME("honeydew",240, 255, 240) + COLOR_NAME("hotpink",255, 105, 180) + COLOR_NAME("indianred",205, 92, 92) + COLOR_NAME("indigo", 75, 0, 130) + COLOR_NAME("ivory",255, 255, 240) + COLOR_NAME("khaki",240, 230, 140) + COLOR_NAME("lavender",230, 230, 250) + COLOR_NAME("lavenderblush",255, 240, 245) + COLOR_NAME("lawngreen",124, 252, 0) + COLOR_NAME("lemonchiffon",255, 250, 205) + COLOR_NAME("lightblue",173, 216, 230) + COLOR_NAME("lightcoral",240, 128, 128) + COLOR_NAME("lightcyan",224, 255, 255) + COLOR_NAME("lightgoldenrodyellow",250, 250, 210) + COLOR_NAME("lightgray",211, 211, 211) + COLOR_NAME("lightgreen",144, 238, 144) + COLOR_NAME("lightgrey",211, 211, 211) + COLOR_NAME("lightpink",255, 182, 193) + COLOR_NAME("lightsalmon",255, 160, 122) + COLOR_NAME("lightseagreen", 32, 178, 170) + COLOR_NAME("lightskyblue",135, 206, 250) + COLOR_NAME("lightslategray",119, 136, 153) + COLOR_NAME("lightslategrey",119, 136, 153) + COLOR_NAME("lightsteelblue",176, 196, 222) + COLOR_NAME("lightyellow",255, 255, 224) + COLOR_NAME("lime", 0, 255, 0) + COLOR_NAME("limegreen", 50, 205, 50) + COLOR_NAME("linen",250, 240, 230) + COLOR_NAME("magenta",255, 0, 255) + COLOR_NAME("maroon",128, 0, 0) + COLOR_NAME("mediumaquamarine",102, 205, 170) + COLOR_NAME("mediumblue", 0, 0, 205) + COLOR_NAME("mediumorchid",186, 85, 211) + COLOR_NAME("mediumpurple",147, 112, 219) + COLOR_NAME("mediumseagreen", 60, 179, 113) + COLOR_NAME("mediumslateblue",123, 104, 238) + COLOR_NAME("mediumspringgreen", 0, 250, 154) + COLOR_NAME("mediumturquoise", 72, 209, 204) + COLOR_NAME("mediumvioletred",199, 21, 133) + COLOR_NAME("midnightblue", 25, 25, 112) + COLOR_NAME("mintcream",245, 255, 250) + COLOR_NAME("mistyrose",255, 228, 225) + COLOR_NAME("moccasin",255, 228, 181) + COLOR_NAME("navajowhite",255, 222, 173) + COLOR_NAME("navy", 0, 0, 128) + COLOR_NAME("oldlace",253, 245, 230) + COLOR_NAME("olive",128, 128, 0) + COLOR_NAME("olivedrab",107, 142, 35) + COLOR_NAME("orange",255, 165, 0) + COLOR_NAME("orangered",255, 69, 0) + COLOR_NAME("orchid",218, 112, 214) + COLOR_NAME("palegoldenrod",238, 232, 170) + COLOR_NAME("palegreen",152, 251, 152) + COLOR_NAME("paleturquoise",175, 238, 238) + COLOR_NAME("palevioletred",219, 112, 147) + COLOR_NAME("papayawhip",255, 239, 213) + COLOR_NAME("peachpuff",255, 218, 185) + COLOR_NAME("peru",205, 133, 63) + COLOR_NAME("pink",255, 192, 203) + COLOR_NAME("plum",221, 160, 221) + COLOR_NAME("powderblue",176, 224, 230) + COLOR_NAME("purple",128, 0, 128) + COLOR_NAME("red",255, 0, 0) + COLOR_NAME("rosybrown",188, 143, 143) + COLOR_NAME("royalblue", 65, 105, 225) + COLOR_NAME("saddlebrown",139, 69, 19) + COLOR_NAME("salmon",250, 128, 114) + COLOR_NAME("sandybrown",244, 164, 96) + COLOR_NAME("seagreen", 46, 139, 87) + COLOR_NAME("seashell",255, 245, 238) + COLOR_NAME("sienna",160, 82, 45) + COLOR_NAME("silver",192, 192, 192) + COLOR_NAME("skyblue",135, 206, 235) + COLOR_NAME("slateblue",106, 90, 205) + COLOR_NAME("slategray",112, 128, 144) + COLOR_NAME("slategrey",112, 128, 144) + COLOR_NAME("snow",255, 250, 250) + COLOR_NAME("springgreen", 0, 255, 127) + COLOR_NAME("steelblue", 70, 130, 180) + COLOR_NAME("tan",210, 180, 140) + COLOR_NAME("teal", 0, 128, 128) + COLOR_NAME("thistle",216, 191, 216) + COLOR_NAME("tomato",255, 99, 71) + COLOR_NAME("turquoise", 64, 224, 208) + COLOR_NAME("violet",238, 130, 238) + COLOR_NAME("wheat",245, 222, 179) + COLOR_NAME("white",255, 255, 255) + COLOR_NAME("whitesmoke",245, 245, 245) + COLOR_NAME("yellow",255, 255, 0) + COLOR_NAME("yellowgreen",154, 205, 50) + return 0; +} +#undef COLOR_NAME diff --git a/synfig-core/src/modules/mod_svg/svg_parser.h b/synfig-core/src/modules/mod_svg/svg_parser.h index 6402f69..3ac8f9b 100644 --- a/synfig-core/src/modules/mod_svg/svg_parser.h +++ b/synfig-core/src/modules/mod_svg/svg_parser.h @@ -65,13 +65,13 @@ typedef struct stop_t{ float pos; }ColorStop; typedef struct linear_g{ - char name[40]; + char name[80]; float x1,x2,y1,y2; std::list *stops; Matrix *transform; }LinearGradient; typedef struct radial_g{ - char name[40]; + char name[80]; float cx,cy;//center point //float fx,fy; //not supported by Synfig float r; //radius @@ -213,6 +213,7 @@ private: int getGreen(String hex); int getBlue(String hex); int hextodec(String hex); + int getColor(String name, int position); float getDimension(const String ac); //string functions void removeS(String *input); diff --git a/synfig-core/src/synfig/layer_motionblur.cpp b/synfig-core/src/synfig/layer_motionblur.cpp index 59f90f7..855112c 100644 --- a/synfig-core/src/synfig/layer_motionblur.cpp +++ b/synfig-core/src/synfig/layer_motionblur.cpp @@ -61,8 +61,12 @@ SYNFIG_LAYER_SET_CVS_ID(Layer_MotionBlur,"$Id$"); /* === M E M B E R S ======================================================= */ Layer_MotionBlur::Layer_MotionBlur(): - Layer_Composite (1.0,Color::BLEND_STRAIGHT), - aperture (0) + Layer_Composite (1.0,Color::BLEND_STRAIGHT), + aperture (0), + subsamples_factor (1.0), + subsampling_type (SUBSAMPLING_HYPERBOLIC), + subsample_start (0.0), + subsample_end (1.0) { } @@ -71,13 +75,21 @@ Layer_MotionBlur::set_param(const String ¶m, const ValueBase &value) { IMPORT(aperture); + IMPORT(subsamples_factor); + IMPORT(subsampling_type); + IMPORT(subsample_start); + IMPORT(subsample_end); return Layer_Composite::set_param(param,value); } ValueBase Layer_MotionBlur::get_param(const String ¶m)const { - EXPORT(aperture); + EXPORT(aperture); + EXPORT(subsamples_factor); + EXPORT(subsampling_type); + EXPORT(subsample_start); + EXPORT(subsample_end); EXPORT_NAME(); EXPORT_VERSION(); @@ -123,6 +135,30 @@ Layer_MotionBlur::get_param_vocab()const .set_description(_("Shutter Time")) ); + ret.push_back(ParamDesc("subsamples_factor") + .set_local_name(_("Subsamples Factor")) + .set_description(_("Multiplies The Number Of Subsamples Rendered")) + ); + + ret.push_back(ParamDesc("subsampling_type") + .set_local_name(_("Subsampling Type")) + .set_description(_("Curve Type For Weighting Subsamples")) + .set_hint("enum") + .add_enum_value(SUBSAMPLING_CONSTANT,"constant",_("Constant")) + .add_enum_value(SUBSAMPLING_LINEAR,"linear",_("Linear")) + .add_enum_value(SUBSAMPLING_HYPERBOLIC,"hyperbolic",_("Hyperbolic")) + ); + + ret.push_back(ParamDesc("subsample_start") + .set_local_name(_("Subsample Start Amount")) + .set_description(_("Relative Amount Of The First Subsample, For Linear Weighting")) + ); + + ret.push_back(ParamDesc("subsample_end") + .set_local_name(_("Subsample End Amount")) + .set_description(_("Relative Amount Of The Last Subsample, For Linear Weighting")) + ); + return ret; } @@ -170,7 +206,17 @@ Layer_MotionBlur::accelerated_render(Context context,Surface *surface,int qualit } - if (samples == 1) return context.accelerated_render(surface,quality,renddesc,cb); + samples *= subsamples_factor; + + if (samples <= 1) return context.accelerated_render(surface,quality,renddesc,cb); + + // Only in modes where subsample_start/end matters... + if(subsampling_type == SUBSAMPLING_LINEAR) + { + // We won't render when the scale==0, so we'll use those samples elsewhere + if(subsample_start == 0) samples++; + if(subsample_end == 0) samples++; + } Surface tmp; int i; @@ -179,14 +225,32 @@ Layer_MotionBlur::accelerated_render(Context context,Surface *surface,int qualit surface->set_wh(renddesc.get_w(),renddesc.get_h()); surface->clear(); + // Render subsamples from time_cur-aperture to time_cur for(i=0;iset_size_request(12,12); widget_color->signal_activate().connect( sigc::bind( - sigc::mem_fun(*this,&studio::Dock_PalEdit::select_color), + sigc::mem_fun(*this,&studio::Dock_PalEdit::select_fill_color), i ) ); - widget_color->signal_secondary().connect( + widget_color->signal_middle_click().connect( + sigc::bind( + sigc::mem_fun(*this,&studio::Dock_PalEdit::select_outline_color), + i + ) + ); + widget_color->signal_right_click().connect( sigc::bind( sigc::mem_fun(*this,&studio::Dock_PalEdit::show_menu), i @@ -294,7 +300,13 @@ Dock_PalEdit::edit_color(int i) } void -Dock_PalEdit::select_color(int i) +Dock_PalEdit::select_fill_color(int i) +{ + synfigapp::Main::set_fill_color(get_color(i)); +} + +void +Dock_PalEdit::select_outline_color(int i) { synfigapp::Main::set_outline_color(get_color(i)); } diff --git a/synfig-studio/src/gtkmm/mod_palette/dock_paledit.h b/synfig-studio/src/gtkmm/mod_palette/dock_paledit.h index 4c1ef2e..cd825ee 100644 --- a/synfig-studio/src/gtkmm/mod_palette/dock_paledit.h +++ b/synfig-studio/src/gtkmm/mod_palette/dock_paledit.h @@ -87,7 +87,8 @@ private: void set_color(synfig::Color x, int i); void erase_color(int i); - void select_color(int i); + void select_fill_color(int i); + void select_outline_color(int i); synfig::Color get_color(int i)const; void edit_color(int i); public: diff --git a/synfig-studio/src/gtkmm/widget_color.cpp b/synfig-studio/src/gtkmm/widget_color.cpp index 2e009b1..1c53b5e 100644 --- a/synfig-studio/src/gtkmm/widget_color.cpp +++ b/synfig-studio/src/gtkmm/widget_color.cpp @@ -168,9 +168,14 @@ Widget_Color::on_event(GdkEvent *event) signal_activate_(); return true; } + if(event->button.button==2) + { + signal_middle_click_(); + return true; + } if(event->button.button==3) { - signal_secondary_(); + signal_right_click_(); return true; } break; diff --git a/synfig-studio/src/gtkmm/widget_color.h b/synfig-studio/src/gtkmm/widget_color.h index 5763bc0..14e3db1 100644 --- a/synfig-studio/src/gtkmm/widget_color.h +++ b/synfig-studio/src/gtkmm/widget_color.h @@ -52,14 +52,16 @@ class Widget_Color : public Gtk::DrawingArea synfig::Color color; sigc::signal signal_activate_; - sigc::signal signal_secondary_; + sigc::signal signal_middle_click_; + sigc::signal signal_right_click_; protected: public: sigc::signal& signal_activate() { return signal_activate_; } sigc::signal& signal_clicked() { return signal_activate_; } - sigc::signal& signal_secondary() { return signal_secondary_; } + sigc::signal& signal_middle_click() { return signal_middle_click_; } + sigc::signal& signal_right_click() { return signal_right_click_; } void set_value(const synfig::Color &data); const synfig::Color &get_value(); diff --git a/synfig-studio/synfigstudio-cph-monitor b/synfig-studio/synfigstudio-cph-monitor index 6dcc2bc..590d3c5 100755 --- a/synfig-studio/synfigstudio-cph-monitor +++ b/synfig-studio/synfigstudio-cph-monitor @@ -1,7 +1,8 @@ #!/bin/bash # Synfig Crash Monitor script -# Copyright (c) 2009 Konstantin Dmitriev +# Copyright (c) 2009-2010 Konstantin Dmitriev +# # This package 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 @@ -124,7 +125,7 @@ mainloop() STARTED=1 RUNTIME=0 #get version - P=$(ps --no-headers -f -Csynfigstudio |egrep "^`whoami`" | tr -s ' '| cut -d ' ' -f 8) + P=$(ps --no-headers -Csynfigstudio -o uid,cmd |egrep "^ *`id -u`" | egrep -v "" | tr -s ' ' | sed "s|^ *`id -u` *||" | sed "s|/bin/sh *||" | head -n 1) echo if [ ! -e $P ]; then P=`which $P`