Revision 148

Date:
2011/10/06 17:51:31
Author:
ahitrov
Revision Log:
New param transform => ['crop','WxH'] in image field description
More comprehensive libwww
Files:

Legend:

 
Added
 
Removed
 
Modified
  • koi8/core/lib/Contenido/File.pm

     
    214 214 if ( ref $image_info && $image_info->{file_ext} ne $ext ) {
    215 215 rename $filename_tmp.'.'.$ext, $filename_tmp.'.'.$image_info->{file_ext};
    216 216 $ext = $image_info->{file_ext};
    217 } elsif ( !ref $image_info ) {
    218 unlink $filename_tmp.'.'.$ext;
    219 return undef;
    217 220 }
    221 my $transformed;
    222 if ( exists $prop->{transform} && ref $prop->{transform} eq 'ARRAY' && scalar @{$prop->{transform}} == 2 && $prop->{transform}[0] =~ /(crop|resize|shrink)/ ) {
    223 my $c_line;
    224 if ( $prop->{transform}[0] eq 'resize' ) {
    225 $c_line = $state->{'convert_binary'}.' -resize \''.$prop->{transform}[1].'\' -quality 80 '.$filename_tmp.'.'.$ext.' '.$filename_tmp.'.transformed.'.$ext;
    226 } elsif ( $prop->{transform}[0] eq 'crop' ) {
    227 my $shave_string;
    228 my ($nwidth, $nheight) = $prop->{transform}[1] =~ /(\d+)x(\d+)/i ? ($1, $2) : (0, 0);
    229 if ( ($image_info->{width} / $image_info->{height}) > ($nwidth / $nheight) ) {
    230 my $shave_pixels = (($image_info->{width} / $image_info->{height}) - ($nwidth / $nheight)) * $image_info->{height};
    231 $shave_string = ' -shave '.int($shave_pixels / 2).'x0';
    232 } elsif ( ($image_info->{height} / $image_info->{width}) > ($nheight / $nwidth) ) {
    233 my $shave_pixels = (($image_info->{height} / $image_info->{width}) - ($nheight / $nwidth)) * $image_info->{width};
    234 $shave_string = ' -shave 0x'.int($shave_pixels / 2);
    235 }
    236 if ( $shave_string ) {
    237 my $c_line = $state->{"convert_binary"}." $shave_string $filename_tmp.$ext $filename_tmp.shaved.$ext";
    238 my $result = `$c_line`;
    239 if (length $result > 0) {
    240 print "Contenido Error: ��� ������ '$c_line' ��������� ������ '$result' ($@)\n";
    241 return undef;
    242 }
    243 } else {
    244 my $c_line = "cp $filename_tmp.$ext $filename_tmp.shaved.$ext";
    245 my $result = `$c_line`;
    246 if (length $result > 0) {
    247 print "Contenido Error: ��� ������ '$c_line' ��������� ������ '$result' ($@)\n";
    248 return undef;
    249 }
    250 }
    251 $c_line = $state->{'convert_binary'}.' -geometry \''.$prop->{transform}[1].'!\' -quality 80 '.$filename_tmp.'.shaved.'.$ext.' '.$filename_tmp.'.transformed.'.$ext;
    252 } elsif ( $prop->{transform}[0] eq 'shrink' ) {
    253 $c_line = $state->{'convert_binary'}.' -geometry \''.$prop->{transform}[1].'!\' -quality 80 '.$filename_tmp.'.'.$ext.' '.$filename_tmp.'.transformed.'.$ext;
    254 }
    255 my $result = `$c_line`;
    256 $transformed = 1;
    257 unlink $filename_tmp.'.shaved.'.$ext if -e $filename_tmp.'.shaved.'.$ext;
    258 }
    218 259
    219 260 my $IMAGE;
    220 if ( store($filename.'.'.$ext, $filename_tmp.'.'.$ext) ) {
    261 my $stored = $transformed ? store($filename.'.'.$ext, $filename_tmp.'.transformed.'.$ext) : store($filename.'.'.$ext, $filename_tmp.'.'.$ext);
    262 if ( $stored ) {
    221 263 $IMAGE = {};
    222 # hashref slice assigning - ������
    223 @{$IMAGE}{'filename', 'width', 'height'} = (
    224 $filename.'.'.$ext,
    225 Image::Size::imgsize($filename_tmp.'.'.$ext),
    226 );
    264 if ( $transformed && -e $filename_tmp.'.transformed.'.$ext ) {
    265 # hashref slice assigning - ������
    266 @{$IMAGE}{'filename', 'width', 'height'} = (
    267 $filename.'.transformed.'.$ext,
    268 Image::Size::imgsize($filename_tmp.'.'.$ext),
    269 );
    270 unlink $filename_tmp.'.transformed.'.$ext;
    271 } else {
    272 # hashref slice assigning - ������
    273 @{$IMAGE}{'filename', 'width', 'height'} = (
    274 $filename.'.'.$ext,
    275 Image::Size::imgsize($filename_tmp.'.'.$ext),
    276 );
    277 }
    227 278
    228 279 foreach my $suffix (@preview) {
    229 280 my $c_line = $state->{'convert_binary'}.' -geometry \''.$suffix.'\' -quality 80 '.$filename_tmp.'.'.$ext.' '.$filename_tmp.'.'.$suffix.'.'.$ext;
  • koi8/core/ports/all/libwww/GNUmakefile

     
    1 1 ##############################################################################
    2 # $HeadURL: http://svn.dev.rambler.ru/Contenido/trunk/ports/all/libwww/GNUmakefile $
    2 # $HeadURL: http://svn.dev.rambler.ru/Contenido/branches/utf8/ports/all/libwww/GNUmakefile $
    3 3 # $Id: GNUmakefile 175 2006-06-16 12:50:03Z lonerr $
    4 4 ###############################################################################
    5 5
    6 6 #include ../../etc/perl.mk
    7 7
    8 PORTVERSION = 5.805
    8 PORTVERSION = 5.836
    9 9 DISTFILE = ${PORTNAME}-perl-${PORTVERSION}.tar.gz
    10 10 PERL_MAKEMAKER = yes
    11 11 MASTER_CPAN_SUBDIR = LWP

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.