From 6b56fe61fa13053b86f8dc09316291a22f5b39a3 Mon Sep 17 00:00:00 2001 From: N-Pex Date: Fri, 11 Jul 2025 14:36:58 +0200 Subject: [PATCH] Look at digitalSourceType C2PA info --- src/assets/css/sendattachments.scss | 10 +- src/assets/icons/ic_cr.vue | 51 ++----- src/assets/icons/ic_media_camera.vue | 14 ++ src/assets/icons/ic_media_device.vue | 12 ++ src/assets/icons/ic_media_flag.vue | 9 ++ src/assets/icons/ic_media_screenshot.vue | 15 ++ src/assets/translations/en.json | 5 +- .../content-credentials/C2PAInfo.vue | 138 +++++++++++++----- src/models/proof.ts | 17 +++ 9 files changed, 189 insertions(+), 82 deletions(-) create mode 100644 src/assets/icons/ic_media_camera.vue create mode 100644 src/assets/icons/ic_media_device.vue create mode 100644 src/assets/icons/ic_media_flag.vue create mode 100644 src/assets/icons/ic_media_screenshot.vue diff --git a/src/assets/css/sendattachments.scss b/src/assets/css/sendattachments.scss index 3a798a1..b2c5d5b 100644 --- a/src/assets/css/sendattachments.scss +++ b/src/assets/css/sendattachments.scss @@ -585,7 +585,15 @@ $hiliteColor: #4642f1; font-size: 16px; line-height: 125%; letter-spacing: 0.4px; - vertical-align: middle; + display: flex; + align-items: center; + justify-content: space-between; + white-space: nowrap; + .v-icon { + flex: 0 0 24px; + width: 24px; + height: 24px; + } } .detail-subtitle { diff --git a/src/assets/icons/ic_cr.vue b/src/assets/icons/ic_cr.vue index 4093e70..ca2b06d 100644 --- a/src/assets/icons/ic_cr.vue +++ b/src/assets/icons/ic_cr.vue @@ -1,45 +1,16 @@ - diff --git a/src/assets/icons/ic_media_camera.vue b/src/assets/icons/ic_media_camera.vue new file mode 100644 index 0000000..5154d1b --- /dev/null +++ b/src/assets/icons/ic_media_camera.vue @@ -0,0 +1,14 @@ + diff --git a/src/assets/icons/ic_media_device.vue b/src/assets/icons/ic_media_device.vue new file mode 100644 index 0000000..c385903 --- /dev/null +++ b/src/assets/icons/ic_media_device.vue @@ -0,0 +1,12 @@ + diff --git a/src/assets/icons/ic_media_flag.vue b/src/assets/icons/ic_media_flag.vue new file mode 100644 index 0000000..6f40b1e --- /dev/null +++ b/src/assets/icons/ic_media_flag.vue @@ -0,0 +1,9 @@ + diff --git a/src/assets/icons/ic_media_screenshot.vue b/src/assets/icons/ic_media_screenshot.vue new file mode 100644 index 0000000..34da826 --- /dev/null +++ b/src/assets/icons/ic_media_screenshot.vue @@ -0,0 +1,15 @@ + diff --git a/src/assets/translations/en.json b/src/assets/translations/en.json index 32eb6d1..bf3714e 100644 --- a/src/assets/translations/en.json +++ b/src/assets/translations/en.json @@ -493,6 +493,9 @@ "content_credentials": "Content Credentials", "content_credentials_info": "Source or history information is available for this media to be verified.", "learn_more": "Learn more", - "ai_used": "AI was used in this media" + "ai_used": "Photo modified with AI", + "screenshot_taken_on": "Screenshot taken on {date}", + "captured_with_camera": "Captured with a camera", + "old_photo": "Photo older than 3 months" } } diff --git a/src/components/content-credentials/C2PAInfo.vue b/src/components/content-credentials/C2PAInfo.vue index d301ad2..4df016b 100644 --- a/src/components/content-credentials/C2PAInfo.vue +++ b/src/components/content-credentials/C2PAInfo.vue @@ -2,15 +2,30 @@
{{ t("file_mode.content_credentials") }} + $vuetify.icons.ic_cr
- {{ t("file_mode.content_credentials_info") }} {{ t("file_mode.learn_more") }} + {{ t("file_mode.content_credentials_info") }} +
-
$vuetify.icons.ic_exif_time{{ dateCreated }}
-
$vuetify.icons.ic_exif_device_camera{{ creator }}
-
+
+ $vuetify.icons.ic_media_screenshot{{ screenCapture }} +
+ +
$vuetify.icons.ic_cc_ai{{ t("file_mode.ai_used") }}
+
+ $vuetify.icons.ic_media_flag{{ t("file_mode.old_photo") }} +
@@ -18,9 +33,19 @@ diff --git a/src/models/proof.ts b/src/models/proof.ts index 06b7888..a562233 100644 --- a/src/models/proof.ts +++ b/src/models/proof.ts @@ -4,10 +4,18 @@ export type AIInferenceResult = { humanProbability: number; } +export const C2PASourceTypeScreenCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/screenCapture"; +export const C2PASourceTypeDigitalCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture"; +export const C2PASourceTypeComputationalCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/computationalCapture"; +export const C2PASourceTypeCompositeCapture = "http://cv.iptc.org/newscodes/digitalsourcetype/compositeCapture"; +export const C2PASourceTypeTrainedAlgorithmicMedia = "http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia"; +export const C2PASourceTypeCompositeWithTrainedAlgorithmicMedia = "http://cv.iptc.org/newscodes/digitalsourcetype/compositeWithTrainedAlgorithmicMedia"; + export type C2PAActionsAssertion = { actions: { action: string; softwareAgent?: string; + digitalSourceType?: string; }[]; } @@ -23,9 +31,18 @@ export type C2PAManifest = { } } +export type C2PAValidationResults = { + activeManifest?: { + failure: any[]; + success: any[]; + informational: any[]; + } +} + export type C2PAManifestInfo = { active_manifest: string; manifests: {[key: string]: C2PAManifest}; + validation_results?: C2PAValidationResults; } export type C2PAData = {