/** {@inheritDoc} */ public String valueToString(ImageMetaValue value) { switch (value.getOwningTagID()) { case OLYMPUS_BLUE_BALANCE: case OLYMPUS_RED_BALANCE: return TextUtil.tenths(value.getFloatValue() / 256); case OLYMPUS_CS_CUSTOM_SATURATION: { final String model = getOwningMetadata().getCameraMake(true); if (model != null && model.contains("E-1")) { final long[] n = ((LongMetaValue) value).getLongValues(); n[0] -= n[1]; n[2] -= n[1]; return n[0] + " (0," + n[2] + ')'; } // no break; } case OLYMPUS_CS_CONTRAST_SETTING: case OLYMPUS_CS_PM_CONTRAST: case OLYMPUS_CS_PM_SATURATION: case OLYMPUS_CS_PM_SHARPNESS: case OLYMPUS_CS_SHARPNESS_SETTING: { final String[] values = value.getValues(); if (values.length != 3) return null; return values[0] + " (" + values[1] + ',' + values[2] + ')'; } case OLYMPUS_CS_PANORAMA_MODE: { if (value.getValueCount() != 2) break; final int tagID = value.getOwningTagID(); return getTagValueLabelFor(tagID, value.getIntValue()) + ", " + value.getValues()[1]; } case OLYMPUS_FOCAL_PLANE_DIAGONAL: return value.getStringValue() + "mm"; // TODO: localize } return super.valueToString(value); }