Location : Home > Languages > Perl > Package
Title : Math::FitRect
Toolbox Logo

名称

 Math::FitRect - 他のアスペクト比にあうように長方形をサイズ変換する


概要

use Math::FitRect;

# これは {w=>40, h=>20, x=>0, y=>10} を返す。
my $rect = fit_rect( [80,40] => 40 );

# これは {w=>80, h=>40, x=>-19, y=>0} を返す。
my $rect = crop_rect( [80,40] => 40 );

説明

 本モジュールは、 Data::Pager のような単純なモジュールのように、内容はきわめてシンプルであるが多くの時間を削減する。本モジュールはサムネイルなど画像をサイズ変更したい際にサイズを計算するのに有用である。もし他に互いに当方系を重ね合わせることができるものが見つかれば教えてほしい。


長方形の指定方法

 メソッドが必要とする長方形を指定する方法には以下の方法がある。

1) $size

 正方形を特定する符号なし整数のスカラー値。

2) [ $w, $h ]

 幅と高さの配列参照。

3) { w=>$w, h=>$h }

 ハッシュ参照。


メソッド

 $rect1 及び $rect2 は以下のように定義する。

    $rect1 = [20,10];               $rect2 = [40,8];
  ....................
  .                  .   ........................................
  .                  .   .                                      .
  .                  .   .                                      .
  .                  .   .                                      .
  .                  .   .                                      .
  .                  .   .                                      .
  .                  .   .                                      .
  .                  .   ........................................
  ....................

fit_rect

my $new_rect1 = fit_rect( $rect1 => $rect2 );

は以下のハッシュ参照を返す。

  { w=>16, h=>8, x=>12, y=>0 } = $new_rect1;
  ............----------------............
  .           |              |           .
  .           |              |           .
  .           |              |           .
  .           |              |           .
  .           |              |           .
  .           |              |           .
  ............----------------............

 2つの長方形を入力とし、1つめの長方形を2つめの長方形の中に置く。出力の長方形はオフセットを特定する 'x' 及び 'y' パラメータと同様に 'w' 及び 'h' パラメータによるハッシュ参照で返す。

crop_rect

my $new_rect1 = crop_rect( $rect1 => $rect2 );

は以下のハッシュ参照を返す。

  { w=>40, h=>20, x=>0, y=>-6 } = $new_rect1;
  ----------------------------------------
  |                                      |
  |                                      |
  |                                      |
  |                                      |
  |                                      |
  ........................................
  .                                      .
  .                                      .
  .                                      .
  .                                      .
  .                                      .
  .                                      .
  ........................................
  |                                      |
  |                                      |
  |                                      |
  |                                      |
  |                                      |
  ----------------------------------------

 fit_rect 関数と同様に、crop_rect は2つの長方形をパラメータとして入力とし、 $rect2 を完全に満たすように $rect1 を生成する。これは、上下または左右を切り落とす(または刈り取る)。このメソッドは fit_rect のような出力を返す。


内部メソッド

 以下のメソッドはドキュメントどおりに稼動するとか将来のバージョンでも同じように稼動することを保証しないので直接用いないこと。

_calc_rect

_calc_rect( $type, $from_rect, $to_rect );

_normalize

$rect = _normalize( $rect );

 サポートされた形式の長方形を入力とし、以下のキーをハッシュ参照として返す。

w - Width.
h - Height.
r - Aspect ratio. (w/h)

著者

 Copyright (C) 2005 Aran Clary Deltac (CPAN: BLUEFEET)
 本ライブラリはフリーソフトウェアであり、 Perl 本体と同等の条件下で修正・再配布してもよい。
 バグ報告やコメントは <aran@arandeltac.com> に知らせてほしい。
 また、その際には Geo::Distance のバージョン、Perl のバージョン、使用しているOSの名前とバージョンも添えてほしい。勇気があるならパッチも歓迎。

Toolbox Logo
Updated : 2006/07/07