|
- /*
- * JavaScript Load Image IPTC Map
- * https://github.com/blueimp/JavaScript-Load-Image
- *
- * Copyright 2013, Sebastian Tschan
- * Copyright 2018, Dave Bevan
- *
- * IPTC tags mapping based on
- * https://iptc.org/standards/photo-metadata
- * https://exiftool.org/TagNames/IPTC.html
- *
- * Licensed under the MIT license:
- * https://opensource.org/licenses/MIT
- */
-
- /* global define, module, require */
-
- ;(function (factory) {
- 'use strict'
- if (typeof define === 'function' && define.amd) {
- // Register as an anonymous AMD module:
- define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc'], factory)
- } else if (typeof module === 'object' && module.exports) {
- factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc'))
- } else {
- // Browser globals:
- factory(window.loadImage)
- }
- })(function (loadImage) {
- 'use strict'
-
- var IptcMapProto = loadImage.IptcMap.prototype
-
- IptcMapProto.tags = {
- 0: 'ApplicationRecordVersion',
- 3: 'ObjectTypeReference',
- 4: 'ObjectAttributeReference',
- 5: 'ObjectName',
- 7: 'EditStatus',
- 8: 'EditorialUpdate',
- 10: 'Urgency',
- 12: 'SubjectReference',
- 15: 'Category',
- 20: 'SupplementalCategories',
- 22: 'FixtureIdentifier',
- 25: 'Keywords',
- 26: 'ContentLocationCode',
- 27: 'ContentLocationName',
- 30: 'ReleaseDate',
- 35: 'ReleaseTime',
- 37: 'ExpirationDate',
- 38: 'ExpirationTime',
- 40: 'SpecialInstructions',
- 42: 'ActionAdvised',
- 45: 'ReferenceService',
- 47: 'ReferenceDate',
- 50: 'ReferenceNumber',
- 55: 'DateCreated',
- 60: 'TimeCreated',
- 62: 'DigitalCreationDate',
- 63: 'DigitalCreationTime',
- 65: 'OriginatingProgram',
- 70: 'ProgramVersion',
- 75: 'ObjectCycle',
- 80: 'Byline',
- 85: 'BylineTitle',
- 90: 'City',
- 92: 'Sublocation',
- 95: 'State',
- 100: 'CountryCode',
- 101: 'Country',
- 103: 'OriginalTransmissionReference',
- 105: 'Headline',
- 110: 'Credit',
- 115: 'Source',
- 116: 'CopyrightNotice',
- 118: 'Contact',
- 120: 'Caption',
- 121: 'LocalCaption',
- 122: 'Writer',
- 125: 'RasterizedCaption',
- 130: 'ImageType',
- 131: 'ImageOrientation',
- 135: 'LanguageIdentifier',
- 150: 'AudioType',
- 151: 'AudioSamplingRate',
- 152: 'AudioSamplingResolution',
- 153: 'AudioDuration',
- 154: 'AudioOutcue',
- 184: 'JobID',
- 185: 'MasterDocumentID',
- 186: 'ShortDocumentID',
- 187: 'UniqueDocumentID',
- 188: 'OwnerID',
- 200: 'ObjectPreviewFileFormat',
- 201: 'ObjectPreviewFileVersion',
- 202: 'ObjectPreviewData',
- 221: 'Prefs',
- 225: 'ClassifyState',
- 228: 'SimilarityIndex',
- 230: 'DocumentNotes',
- 231: 'DocumentHistory',
- 232: 'ExifCameraInfo',
- 255: 'CatalogSets'
- }
-
- IptcMapProto.stringValues = {
- 10: {
- 0: '0 (reserved)',
- 1: '1 (most urgent)',
- 2: '2',
- 3: '3',
- 4: '4',
- 5: '5 (normal urgency)',
- 6: '6',
- 7: '7',
- 8: '8 (least urgent)',
- 9: '9 (user-defined priority)'
- },
- 75: {
- a: 'Morning',
- b: 'Both Morning and Evening',
- p: 'Evening'
- },
- 131: {
- L: 'Landscape',
- P: 'Portrait',
- S: 'Square'
- }
- }
-
- IptcMapProto.getText = function (id) {
- var value = this.get(id)
- var tagCode = this.map[id]
- var stringValue = this.stringValues[tagCode]
- if (stringValue) return stringValue[value]
- return String(value)
- }
-
- IptcMapProto.getAll = function () {
- var map = {}
- var prop
- var name
- for (prop in this) {
- if (Object.prototype.hasOwnProperty.call(this, prop)) {
- name = this.tags[prop]
- if (name) map[name] = this.getText(name)
- }
- }
- return map
- }
-
- IptcMapProto.getName = function (tagCode) {
- return this.tags[tagCode]
- }
-
- // Extend the map of tag names to tag codes:
- ;(function () {
- var tags = IptcMapProto.tags
- var map = IptcMapProto.map || {}
- var prop
- // Map the tag names to tags:
- for (prop in tags) {
- if (Object.prototype.hasOwnProperty.call(tags, prop)) {
- map[tags[prop]] = Number(prop)
- }
- }
- })()
- })
|