/** * 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); } }
/** * 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); } }