Esempio n. 1
0
 /**
  * Get the value of an entry as text.
  *
  * The value will be returned in a format suitable for presentation,
  * e.g., instead of returning '2' for a {@link
  * PelTag::METERING_MODE} tag, 'Center-Weighted Average' is
  * returned.
  *
  * @param boolean some values can be returned in a long or more
  * brief form, and this parameter controls that.
  *
  * @return string the value as text.
  */
 function getText($brief = false)
 {
     switch ($this->tag) {
         case PelTag::METERING_MODE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Unknown');
                 case 1:
                     return Pel::tra('Average');
                 case 2:
                     return Pel::tra('Center-Weighted Average');
                 case 3:
                     return Pel::tra('Spot');
                 case 4:
                     return Pel::tra('Multi Spot');
                 case 5:
                     return Pel::tra('Pattern');
                 case 6:
                     return Pel::tra('Partial');
                 case 255:
                     return Pel::tra('Other');
                 default:
                     return $this->value[0];
             }
         case PelTag::COMPRESSION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('Uncompressed');
                 case 6:
                     return Pel::tra('JPEG compression');
                 default:
                     return $this->value[0];
             }
         case PelTag::PLANAR_CONFIGURATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('chunky format');
                 case 2:
                     return Pel::tra('planar format');
                 default:
                     return $this->value[0];
             }
         case PelTag::SENSING_METHOD:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('Not defined');
                 case 2:
                     return Pel::tra('One-chip color area sensor');
                 case 3:
                     return Pel::tra('Two-chip color area sensor');
                 case 4:
                     return Pel::tra('Three-chip color area sensor');
                 case 5:
                     return Pel::tra('Color sequential area sensor');
                 case 7:
                     return Pel::tra('Trilinear sensor');
                 case 8:
                     return Pel::tra('Color sequential linear sensor');
                 default:
                     return $this->value[0];
             }
         case PelTag::LIGHT_SOURCE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Unknown');
                 case 1:
                     return Pel::tra('Daylight');
                 case 2:
                     return Pel::tra('Fluorescent');
                 case 3:
                     return Pel::tra('Tungsten (incandescent light)');
                 case 4:
                     return Pel::tra('Flash');
                 case 9:
                     return Pel::tra('Fine weather');
                 case 10:
                     return Pel::tra('Cloudy weather');
                 case 11:
                     return Pel::tra('Shade');
                 case 12:
                     return Pel::tra('Daylight fluorescent');
                 case 13:
                     return Pel::tra('Day white fluorescent');
                 case 14:
                     return Pel::tra('Cool white fluorescent');
                 case 15:
                     return Pel::tra('White fluorescent');
                 case 17:
                     return Pel::tra('Standard light A');
                 case 18:
                     return Pel::tra('Standard light B');
                 case 19:
                     return Pel::tra('Standard light C');
                 case 20:
                     return Pel::tra('D55');
                 case 21:
                     return Pel::tra('D65');
                 case 22:
                     return Pel::tra('D75');
                 case 24:
                     return Pel::tra('ISO studio tungsten');
                 case 255:
                     return Pel::tra('Other');
                 default:
                     return $this->value[0];
             }
         case PelTag::FOCAL_PLANE_RESOLUTION_UNIT:
         case PelTag::RESOLUTION_UNIT:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 2:
                     return Pel::tra('Inch');
                 case 3:
                     return Pel::tra('Centimeter');
                 default:
                     return $this->value[0];
             }
         case PelTag::EXPOSURE_PROGRAM:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Not defined');
                 case 1:
                     return Pel::tra('Manual');
                 case 2:
                     return Pel::tra('Normal program');
                 case 3:
                     return Pel::tra('Aperture priority');
                 case 4:
                     return Pel::tra('Shutter priority');
                 case 5:
                     return Pel::tra('Creative program (biased toward depth of field)');
                 case 6:
                     return Pel::tra('Action program (biased toward fast shutter speed)');
                 case 7:
                     return Pel::tra('Portrait mode (for closeup photos with the background out of focus');
                 case 8:
                     return Pel::tra('Landscape mode (for landscape photos with the background in focus');
                 default:
                     return $this->value[0];
             }
         case PelTag::ORIENTATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('top - left');
                 case 2:
                     return Pel::tra('top - right');
                 case 3:
                     return Pel::tra('bottom - right');
                 case 4:
                     return Pel::tra('bottom - left');
                 case 5:
                     return Pel::tra('left - top');
                 case 6:
                     return Pel::tra('right - top');
                 case 7:
                     return Pel::tra('right - bottom');
                 case 8:
                     return Pel::tra('left - bottom');
                 default:
                     return $this->value[0];
             }
         case PelTag::YCBCR_POSITIONING:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('centered');
                 case 2:
                     return Pel::tra('co-sited');
                 default:
                     return $this->value[0];
             }
         case PelTag::YCBCR_SUB_SAMPLING:
             //CC (e->components, 2, v);
             if ($this->value[0] == 2 && $this->value[1] == 1) {
                 return 'YCbCr4:2:2';
             }
             if ($this->value[0] == 2 && $this->value[1] == 2) {
                 return 'YCbCr4:2:0';
             }
             return $this->value[0] . ', ' . $this->value[1];
         case PelTag::PHOTOMETRIC_INTERPRETATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 2:
                     return 'RGB';
                 case 6:
                     return 'YCbCr';
                 default:
                     return $this->value[0];
             }
         case PelTag::COLOR_SPACE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return 'sRGB';
                 case 2:
                     return 'Adobe RGB';
                 case 0xffff:
                     return Pel::tra('Uncalibrated');
                 default:
                     return $this->value[0];
             }
         case PelTag::FLASH:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0x0:
                     return Pel::tra('Flash did not fire.');
                 case 0x1:
                     return Pel::tra('Flash fired.');
                 case 0x5:
                     return Pel::tra('Strobe return light not detected.');
                 case 0x7:
                     return Pel::tra('Strobe return light detected.');
                 case 0x9:
                     return Pel::tra('Flash fired, compulsory flash mode.');
                 case 0xd:
                     return Pel::tra('Flash fired, compulsory flash mode, return light not detected.');
                 case 0xf:
                     return Pel::tra('Flash fired, compulsory flash mode, return light detected.');
                 case 0x10:
                     return Pel::tra('Flash did not fire, compulsory flash mode.');
                 case 0x18:
                     return Pel::tra('Flash did not fire, auto mode.');
                 case 0x19:
                     return Pel::tra('Flash fired, auto mode.');
                 case 0x1d:
                     return Pel::tra('Flash fired, auto mode, return light not detected.');
                 case 0x1f:
                     return Pel::tra('Flash fired, auto mode, return light detected.');
                 case 0x20:
                     return Pel::tra('No flash function.');
                 case 0x41:
                     return Pel::tra('Flash fired, red-eye reduction mode.');
                 case 0x45:
                     return Pel::tra('Flash fired, red-eye reduction mode, return light not detected.');
                 case 0x47:
                     return Pel::tra('Flash fired, red-eye reduction mode, return light detected.');
                 case 0x49:
                     return Pel::tra('Flash fired, compulsory flash mode, red-eye reduction mode.');
                 case 0x4d:
                     return Pel::tra('Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected.');
                 case 0x4f:
                     return Pel::tra('Flash fired, compulsory flash mode, red-eye reduction mode, return light detected.');
                 case 0x58:
                     return Pel::tra('Flash did not fire, auto mode, red-eye reduction mode.');
                 case 0x59:
                     return Pel::tra('Flash fired, auto mode, red-eye reduction mode.');
                 case 0x5d:
                     return Pel::tra('Flash fired, auto mode, return light not detected, red-eye reduction mode.');
                 case 0x5f:
                     return Pel::tra('Flash fired, auto mode, return light detected, red-eye reduction mode.');
                 default:
                     return $this->value[0];
             }
         case PelTag::CUSTOM_RENDERED:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal process');
                 case 1:
                     return Pel::tra('Custom process');
                 default:
                     return $this->value[0];
             }
         case PelTag::EXPOSURE_MODE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Auto exposure');
                 case 1:
                     return Pel::tra('Manual exposure');
                 case 2:
                     return Pel::tra('Auto bracket');
                 default:
                     return $this->value[0];
             }
         case PelTag::WHITE_BALANCE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Auto white balance');
                 case 1:
                     return Pel::tra('Manual white balance');
                 default:
                     return $this->value[0];
             }
         case PelTag::SCENE_CAPTURE_TYPE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Standard');
                 case 1:
                     return Pel::tra('Landscape');
                 case 2:
                     return Pel::tra('Portrait');
                 case 3:
                     return Pel::tra('Night scene');
                 default:
                     return $this->value[0];
             }
         case PelTag::GAIN_CONTROL:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal');
                 case 1:
                     return Pel::tra('Low gain up');
                 case 2:
                     return Pel::tra('High gain up');
                 case 3:
                     return Pel::tra('Low gain down');
                 case 4:
                     return Pel::tra('High gain down');
                 default:
                     return $this->value[0];
             }
         case PelTag::SATURATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal');
                 case 1:
                     return Pel::tra('Low saturation');
                 case 2:
                     return Pel::tra('High saturation');
                 default:
                     return $this->value[0];
             }
         case PelTag::CONTRAST:
         case PelTag::SHARPNESS:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal');
                 case 1:
                     return Pel::tra('Soft');
                 case 2:
                     return Pel::tra('Hard');
                 default:
                     return $this->value[0];
             }
         case PelTag::SUBJECT_DISTANCE_RANGE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Unknown');
                 case 1:
                     return Pel::tra('Macro');
                 case 2:
                     return Pel::tra('Close view');
                 case 3:
                     return Pel::tra('Distant view');
                 default:
                     return $this->value[0];
             }
         case PelTag::SUBJECT_AREA:
             switch ($this->components) {
                 case 2:
                     return Pel::fmt('(x,y) = (%d,%d)', $this->value[0], $this->value[1]);
                 case 3:
                     return Pel::fmt('Within distance %d of (x,y) = (%d,%d)', $this->value[0], $this->value[1], $this->value[2]);
                 case 4:
                     return Pel::fmt('Within rectangle (width %d, height %d) around (x,y) = (%d,%d)', $this->value[0], $this->value[1], $this->value[2], $this->value[3]);
                 default:
                     return Pel::fmt('Unexpected number of components (%d, expected 2, 3, or 4).', $this->components);
             }
         default:
             return parent::getText($brief);
     }
 }
Esempio n. 2
0
 /**
  * Get the value of an entry as text.
  *
  * The value will be returned in a format suitable for presentation,
  * e.g., instead of returning '2' for a {@link
  * PelTag::METERING_MODE} tag, 'Center-Weighted Average' is
  * returned.
  *
  * @param boolean some values can be returned in a long or more
  * brief form, and this parameter controls that.
  *
  * @return string the value as text.
  */
 function getText($brief = false)
 {
     switch ($this->tag) {
         case PelTag::METERING_MODE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Unknown');
                 case 1:
                     return Pel::tra('Average');
                 case 2:
                     return Pel::tra('Center-Weighted Average');
                 case 3:
                     return Pel::tra('Spot');
                 case 4:
                     return Pel::tra('Multi Spot');
                 case 5:
                     return Pel::tra('Pattern');
                 case 6:
                     return Pel::tra('Partial');
                 case 255:
                     return Pel::tra('Other');
                 default:
                     return $this->value[0];
             }
         case PelTag::COMPRESSION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('Uncompressed');
                 case 6:
                     return Pel::tra('JPEG compression');
                 default:
                     return $this->value[0];
             }
         case PelTag::PLANAR_CONFIGURATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('chunky format');
                 case 2:
                     return Pel::tra('planar format');
                 default:
                     return $this->value[0];
             }
         case PelTag::SENSING_METHOD:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('Not defined');
                 case 2:
                     return Pel::tra('One-chip color area sensor');
                 case 3:
                     return Pel::tra('Two-chip color area sensor');
                 case 4:
                     return Pel::tra('Three-chip color area sensor');
                 case 5:
                     return Pel::tra('Color sequential area sensor');
                 case 7:
                     return Pel::tra('Trilinear sensor');
                 case 8:
                     return Pel::tra('Color sequential linear sensor');
                 default:
                     return $this->value[0];
             }
         case PelTag::LIGHT_SOURCE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Nieznany');
                 case 1:
                     return Pel::tra('Światło dzienne');
                 case 2:
                     return Pel::tra('Fluorescencyjny');
                 case 3:
                     return Pel::tra('Sztuczne (żarówka)');
                 case 4:
                     return Pel::tra('Lampa błyskowa');
                 case 9:
                     return Pel::tra('Dobra pogoda');
                 case 10:
                     return Pel::tra('Pochmurna pogoda');
                 case 11:
                     return Pel::tra('Cień');
                 case 12:
                     return Pel::tra('Dzienne fluorescencyjne');
                 case 13:
                     return Pel::tra('Dzienne białe fluorescencyjne');
                 case 14:
                     return Pel::tra('Chłodne białe fluorescencyjne ');
                 case 15:
                     return Pel::tra('Białe fluorescencyjne ');
                 case 17:
                     return Pel::tra('Standardowe światło A');
                 case 18:
                     return Pel::tra('Standardowe światło B');
                 case 19:
                     return Pel::tra('Standardowe światło C');
                 case 20:
                     return Pel::tra('D55');
                 case 21:
                     return Pel::tra('D65');
                 case 22:
                     return Pel::tra('D75');
                 case 24:
                     return Pel::tra('ISO studyjna żarówka');
                 case 255:
                     return Pel::tra('Inne');
                 default:
                     return $this->value[0];
             }
         case PelTag::FOCAL_PLANE_RESOLUTION_UNIT:
         case PelTag::RESOLUTION_UNIT:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 2:
                     return Pel::tra('Inch');
                 case 3:
                     return Pel::tra('Centimeter');
                 default:
                     return $this->value[0];
             }
         case PelTag::EXPOSURE_PROGRAM:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Niezdefiniowany');
                 case 1:
                     return Pel::tra('Ręczny');
                 case 2:
                     return Pel::tra('Normalny');
                 case 3:
                     return Pel::tra('Priorytet przysłony');
                 case 4:
                     return Pel::tra('Priorytet migawki');
                 case 5:
                     return Pel::tra('Kreatywny (duża głębia ostrości)');
                 case 6:
                     return Pel::tra('Aktywny (duża szybkość migawki)');
                 case 7:
                     return Pel::tra('Tryb portretowy (dla zdjęcia z bliska z nieostrym tłem');
                 case 8:
                     return Pel::tra('Tryb krajobrazowy (dla zdjęcia z tłem)');
                 default:
                     return $this->value[0];
             }
         case PelTag::ORIENTATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('góra - lewo');
                 case 2:
                     return Pel::tra('góra - prawo');
                 case 3:
                     return Pel::tra('dół - prawo');
                 case 4:
                     return Pel::tra('dół - lewo');
                 case 5:
                     return Pel::tra('lewo - góra');
                 case 6:
                     return Pel::tra('prawo - góra');
                 case 7:
                     return Pel::tra('prawo - dół');
                 case 8:
                     return Pel::tra('lewo - dół');
                 default:
                     return $this->value[0];
             }
         case PelTag::YCBCR_POSITIONING:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return Pel::tra('centered');
                 case 2:
                     return Pel::tra('co-sited');
                 default:
                     return $this->value[0];
             }
         case PelTag::YCBCR_SUB_SAMPLING:
             //CC (e->components, 2, v);
             if ($this->value[0] == 2 && $this->value[1] == 1) {
                 return 'YCbCr4:2:2';
             }
             if ($this->value[0] == 2 && $this->value[1] == 2) {
                 return 'YCbCr4:2:0';
             }
             return $this->value[0] . ', ' . $this->value[1];
         case PelTag::PHOTOMETRIC_INTERPRETATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 2:
                     return 'RGB';
                 case 6:
                     return 'YCbCr';
                 default:
                     return $this->value[0];
             }
         case PelTag::COLOR_SPACE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 1:
                     return 'sRGB';
                 case 2:
                     return 'Adobe RGB';
                 case 0xffff:
                     return Pel::tra('Uncalibrated');
                 default:
                     return $this->value[0];
             }
         case PelTag::FLASH:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0x0:
                     return Pel::tra('Bez błysku flesza.');
                 case 0x1:
                     return Pel::tra('Z błyskiem flesza.');
                 case 0x5:
                     return Pel::tra('Światło odbite nie wykryte.');
                 case 0x7:
                     return Pel::tra('Światło odbite wykryte.');
                 case 0x9:
                     return Pel::tra('Z błyskiem flesza, obowiązkowy tryb lampy błyskowej.');
                 case 0xd:
                     return Pel::tra('Z błyskiem flesza, obowiązkowy tryb lampy błyskowej, światło odbite nie wykryte.');
                 case 0xf:
                     return Pel::tra('Z błyskiem flesza, obowiązkowy tryb lampy błyskowej, światło odbite wykryte.');
                 case 0x10:
                     return Pel::tra('Bez błysku flesza, obowiązkowy tryb lampy błyskowej.');
                 case 0x18:
                     return Pel::tra('Bez błysku flesza, tryb automatyczny.');
                 case 0x19:
                     return Pel::tra('Z błyskiem flesza, tryb automatyczny.');
                 case 0x1d:
                     return Pel::tra('Z błyskiem flesza, tryb automatyczny, światło odbite nie wykryte.');
                 case 0x1f:
                     return Pel::tra('Z błyskiem flesza, tryb automatyczny, światło odbite wykryte.');
                 case 0x20:
                     return Pel::tra('Brak funkcji flesz.');
                 case 0x41:
                     return Pel::tra('Z błyskiem flesza, tryb redukcji czerwonych oczu.');
                 case 0x45:
                     return Pel::tra('Z błyskiem flesza, tryb redukcji czerwonych oczu, światło odbite nie wykryte.');
                 case 0x47:
                     return Pel::tra('Z błyskiem flesza, tryb redukcji czerwonych oczu, światło odbite wykryte.');
                 case 0x49:
                     return Pel::tra('Z błyskiem flesza, obowiązkowy tryb lampy błyskowej, tryp redukcji czerwonych oczu.');
                 case 0x4d:
                     return Pel::tra('Z błyskiem flesza, obowiązkowy tryb lampy błyskowej, tryp redukcji czerwonych oczu, światło odbite nie wykryte.');
                 case 0x4f:
                     return Pel::tra('Z błyskiem flesza, obowiązkowy tryb lampy błyskowej, tryp redukcji czerwonych oczu, światło odbite wykryte.');
                 case 0x58:
                     return Pel::tra('Bez lampy błyskowej, tryb automatyczny, tryb redukcji czerwonych oczu.');
                 case 0x59:
                     return Pel::tra('Z lampą błyskową, tryb automatyczny, tryb redukcji czerwonych oczu.');
                 case 0x5d:
                     return Pel::tra('Z lampą błyskową, tryb automatyczny, światło odbite nie wykryte, tryb redukcji czerwonych oczu.');
                 case 0x5f:
                     return Pel::tra('Z lampą błyskową, tryb automatyczny, światło odbite wykryte, tryb redukcji czerwonych oczu.');
                 default:
                     return $this->value[0];
             }
         case PelTag::CUSTOM_RENDERED:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal process');
                 case 1:
                     return Pel::tra('Custom process');
                 default:
                     return $this->value[0];
             }
         case PelTag::EXPOSURE_MODE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Automatyczny');
                 case 1:
                     return Pel::tra('Ręczny');
                 case 2:
                     return Pel::tra('Auto bracket');
                 default:
                     return $this->value[0];
             }
         case PelTag::WHITE_BALANCE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Automatyczny');
                 case 1:
                     return Pel::tra('Ręczny');
                 default:
                     return $this->value[0];
             }
         case PelTag::SCENE_CAPTURE_TYPE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Standard');
                 case 1:
                     return Pel::tra('Landscape');
                 case 2:
                     return Pel::tra('Portrait');
                 case 3:
                     return Pel::tra('Night scene');
                 default:
                     return $this->value[0];
             }
         case PelTag::GAIN_CONTROL:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal');
                 case 1:
                     return Pel::tra('Low gain up');
                 case 2:
                     return Pel::tra('High gain up');
                 case 3:
                     return Pel::tra('Low gain down');
                 case 4:
                     return Pel::tra('High gain down');
                 default:
                     return $this->value[0];
             }
         case PelTag::SATURATION:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal');
                 case 1:
                     return Pel::tra('Low saturation');
                 case 2:
                     return Pel::tra('High saturation');
                 default:
                     return $this->value[0];
             }
         case PelTag::CONTRAST:
         case PelTag::SHARPNESS:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Normal');
                 case 1:
                     return Pel::tra('Soft');
                 case 2:
                     return Pel::tra('Hard');
                 default:
                     return $this->value[0];
             }
         case PelTag::SUBJECT_DISTANCE_RANGE:
             //CC (e->components, 1, v);
             switch ($this->value[0]) {
                 case 0:
                     return Pel::tra('Unknown');
                 case 1:
                     return Pel::tra('Macro');
                 case 2:
                     return Pel::tra('Close view');
                 case 3:
                     return Pel::tra('Distant view');
                 default:
                     return $this->value[0];
             }
         case PelTag::SUBJECT_AREA:
             switch ($this->components) {
                 case 2:
                     return Pel::fmt('(x,y) = (%d,%d)', $this->value[0], $this->value[1]);
                 case 3:
                     return Pel::fmt('Within distance %d of (x,y) = (%d,%d)', $this->value[0], $this->value[1], $this->value[2]);
                 case 4:
                     return Pel::fmt('Within rectangle (width %d, height %d) around (x,y) = (%d,%d)', $this->value[0], $this->value[1], $this->value[2], $this->value[3]);
                 default:
                     return Pel::fmt('Unexpected number of components (%d, expected 2, 3, or 4).', $this->components);
             }
         default:
             return parent::getText($brief);
     }
 }