├── data ├── tests │ ├── bluish-symlink.icc │ ├── bluish.icc │ ├── test.jpg │ ├── test.kdc │ ├── test.png │ ├── test.tif │ ├── ibm-t61.icc │ ├── cie-widget.png │ ├── trc-widget.png │ ├── gamma-widget.png │ ├── image-widget.png │ ├── AdobeGammaTest.icm │ ├── image-widget-good.png │ ├── image-widget-nonembed.png │ └── image-widget-output.png ├── appdata │ ├── ss-info.png │ ├── ss-picker.png │ ├── ss-cie1931.png │ ├── ss-calibrate.png │ ├── meson.build │ └── org.gnome.ColorProfileViewer.metainfo.xml.in ├── figures │ ├── viewer-example-00.png │ ├── viewer-example-01.png │ ├── viewer-example-02.png │ ├── viewer-example-03.png │ └── meson.build ├── icons │ ├── 16x16 │ │ └── gnome-color-manager.png │ ├── 22x22 │ │ └── gnome-color-manager.png │ ├── 24x24 │ │ └── gnome-color-manager.png │ ├── 32x32 │ │ └── gnome-color-manager.png │ ├── 48x48 │ │ └── gnome-color-manager.png │ ├── 64x64 │ │ └── gnome-color-manager.png │ ├── 256x256 │ │ └── gnome-color-manager.png │ ├── meson.build │ └── render-icons.py ├── org.gnome.ColorProfileViewer.service.in ├── gcm-picker.desktop.in ├── gcm-import.desktop.in ├── org.gnome.ColorProfileViewer.desktop.in └── meson.build ├── AUTHORS ├── MAINTAINERS ├── po ├── update-linguas.sh ├── meson.build ├── POTFILES.skip ├── .gitignore ├── POTFILES.in └── LINGUAS ├── meson_options.txt ├── help ├── meson.build ├── LINGUAS ├── C │ ├── legal.xml │ ├── gnome-help.its │ ├── color-import-osx.page │ ├── color-import-linux.page │ └── color-import-windows.page ├── zh_HK │ └── zh_HK.po ├── zh_TW │ └── zh_TW.po ├── zh_CN │ └── zh_CN.po ├── ko │ └── ko.po ├── bg │ └── bg.po ├── cs │ └── cs.po ├── pt_BR │ └── pt_BR.po └── eu │ └── eu.po ├── src ├── gcm-picker.gresource.xml ├── gcm-viewer.gresource.xml ├── gcm-debug.h ├── gcm-utils.h ├── gcm-trc-widget.h ├── gcm-gamma-widget.h ├── gcm-cie-widget.h ├── gcm-cell-renderer-color.h ├── gcm-cell-renderer-profile-text.h ├── meson.build ├── gcm-debug.c ├── gcm-cell-renderer-color.c ├── gcm-utils.c ├── gcm-cell-renderer-profile-text.c ├── gcm-self-test.c ├── gcm-gamma-widget.c ├── gcm-import.c ├── gcm-trc-widget.c └── gcm-inspect.c ├── .gitlab-ci.yml ├── meson_post_install.sh ├── RELEASE ├── man ├── meson.build ├── gcm-picker.sgml ├── gcm-import.sgml ├── gcm-viewer.sgml └── gcm-inspect.sgml ├── gnome-color-manager.doap ├── README ├── contrib └── gnome-color-manager.spec.in ├── COMMITMENT └── meson.build /data/tests/bluish-symlink.icc: -------------------------------------------------------------------------------- 1 | bluish.icc -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Richard Hughes 2 | 3 | -------------------------------------------------------------------------------- /MAINTAINERS: -------------------------------------------------------------------------------- 1 | Richard Hughes 2 | 3 | -------------------------------------------------------------------------------- /po/update-linguas.sh: -------------------------------------------------------------------------------- 1 | ls *.po | cut -d. -f1 | sort > LINGUAS 2 | -------------------------------------------------------------------------------- /data/tests/bluish.icc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/bluish.icc -------------------------------------------------------------------------------- /data/tests/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/test.jpg -------------------------------------------------------------------------------- /data/tests/test.kdc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/test.kdc -------------------------------------------------------------------------------- /data/tests/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/test.png -------------------------------------------------------------------------------- /data/tests/test.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/test.tif -------------------------------------------------------------------------------- /meson_options.txt: -------------------------------------------------------------------------------- 1 | option('tests', type : 'boolean', value : true, description : 'enable tests') 2 | -------------------------------------------------------------------------------- /data/tests/ibm-t61.icc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/ibm-t61.icc -------------------------------------------------------------------------------- /data/appdata/ss-info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/appdata/ss-info.png -------------------------------------------------------------------------------- /data/appdata/ss-picker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/appdata/ss-picker.png -------------------------------------------------------------------------------- /data/tests/cie-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/cie-widget.png -------------------------------------------------------------------------------- /data/tests/trc-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/trc-widget.png -------------------------------------------------------------------------------- /data/appdata/ss-cie1931.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/appdata/ss-cie1931.png -------------------------------------------------------------------------------- /data/tests/gamma-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/gamma-widget.png -------------------------------------------------------------------------------- /data/tests/image-widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/image-widget.png -------------------------------------------------------------------------------- /data/appdata/ss-calibrate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/appdata/ss-calibrate.png -------------------------------------------------------------------------------- /data/tests/AdobeGammaTest.icm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/AdobeGammaTest.icm -------------------------------------------------------------------------------- /data/tests/image-widget-good.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/image-widget-good.png -------------------------------------------------------------------------------- /data/figures/viewer-example-00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/figures/viewer-example-00.png -------------------------------------------------------------------------------- /data/figures/viewer-example-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/figures/viewer-example-01.png -------------------------------------------------------------------------------- /data/figures/viewer-example-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/figures/viewer-example-02.png -------------------------------------------------------------------------------- /data/figures/viewer-example-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/figures/viewer-example-03.png -------------------------------------------------------------------------------- /data/tests/image-widget-nonembed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/image-widget-nonembed.png -------------------------------------------------------------------------------- /data/tests/image-widget-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/tests/image-widget-output.png -------------------------------------------------------------------------------- /data/icons/16x16/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/16x16/gnome-color-manager.png -------------------------------------------------------------------------------- /data/icons/22x22/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/22x22/gnome-color-manager.png -------------------------------------------------------------------------------- /data/icons/24x24/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/24x24/gnome-color-manager.png -------------------------------------------------------------------------------- /data/icons/32x32/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/32x32/gnome-color-manager.png -------------------------------------------------------------------------------- /data/icons/48x48/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/48x48/gnome-color-manager.png -------------------------------------------------------------------------------- /data/icons/64x64/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/64x64/gnome-color-manager.png -------------------------------------------------------------------------------- /data/icons/256x256/gnome-color-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/gnome-color-manager/HEAD/data/icons/256x256/gnome-color-manager.png -------------------------------------------------------------------------------- /data/org.gnome.ColorProfileViewer.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=org.gnome.ColorProfileViewer 3 | Exec=@bindir@/gcm-viewer --gapplication-service 4 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(meson.project_name(), 2 | preset : 'glib', 3 | args: [ 4 | '--default-domain=' + meson.project_name() 5 | ] 6 | ) 7 | -------------------------------------------------------------------------------- /po/POTFILES.skip: -------------------------------------------------------------------------------- 1 | # List of source files that should *not* be translated. 2 | # Please keep this file sorted alphabetically. 3 | src/egg-debug.c 4 | tools/egg-debug.c 5 | -------------------------------------------------------------------------------- /help/meson.build: -------------------------------------------------------------------------------- 1 | gnome.yelp('gnome-color-manager', 2 | sources: [ 3 | 'legal.xml', 4 | 'color-import-linux.page', 5 | 'color-import-windows.page', 6 | 'color-import-osx.page', 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /src/gcm-picker.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | gcm-picker.ui 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/gcm-viewer.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | gcm-viewer.ui 5 | 6 | 7 | -------------------------------------------------------------------------------- /help/LINGUAS: -------------------------------------------------------------------------------- 1 | bg 2 | ca 3 | cs 4 | da 5 | de 6 | el 7 | es 8 | eu 9 | fi 10 | fr 11 | gl 12 | hr 13 | hu 14 | id 15 | it 16 | ko 17 | ml 18 | nl 19 | pl 20 | pt_BR 21 | ru 22 | sv 23 | tr 24 | uk 25 | zh_CN 26 | zh_HK 27 | zh_TW 28 | -------------------------------------------------------------------------------- /data/figures/meson.build: -------------------------------------------------------------------------------- 1 | install_data([ 2 | 'viewer-example-00.png', 3 | 'viewer-example-01.png', 4 | 'viewer-example-02.png', 5 | 'viewer-example-03.png', 6 | ], 7 | install_dir : join_paths(prefixed_datadir, 'gnome-color-manager/figures') 8 | ) 9 | -------------------------------------------------------------------------------- /data/appdata/meson.build: -------------------------------------------------------------------------------- 1 | i18n.merge_file( 2 | input: 'org.gnome.ColorProfileViewer.metainfo.xml.in', 3 | output: 'org.gnome.ColorProfileViewer.metainfo.xml', 4 | type: 'xml', 5 | po_dir: join_paths(meson.source_root(), 'po'), 6 | install: true, 7 | install_dir: join_paths(prefixed_datadir, 'metainfo') 8 | ) 9 | -------------------------------------------------------------------------------- /help/C/legal.xml: -------------------------------------------------------------------------------- 1 | 3 |

This work is licensed under a Creative 4 | Commons Attribution-ShareAlike 3.0 Unported License.

5 |
6 | -------------------------------------------------------------------------------- /po/.gitignore: -------------------------------------------------------------------------------- 1 | boldquot.sed 2 | en@boldquot.header 3 | en@quot.header 4 | *.gmo 5 | insert-header.sin 6 | Makefile 7 | Makefile.in 8 | Makefile.in.in 9 | Makefile.in.in~ 10 | Makevars.template 11 | *.po~ 12 | *.pot 13 | POTFILES 14 | quot.sed 15 | remove-potcdate.sed 16 | remove-potcdate.sin 17 | Rules-quot 18 | stamp-it 19 | stamp-po 20 | -------------------------------------------------------------------------------- /data/gcm-picker.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Color Picker 3 | Comment=Use the color sensor to sample spot colors 4 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 5 | Icon=gnome-color-manager 6 | Exec=gcm-picker 7 | Terminal=false 8 | Type=Application 9 | Categories=GNOME;GTK;System; 10 | StartupNotify=true 11 | NoDisplay=true 12 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | include: 2 | - project: "GNOME/citemplates" 3 | file: "templates/default-rules.yml" 4 | - component: "gitlab.gnome.org/GNOME/citemplates/gnomeos-basic-ci@master" 5 | - component: "gitlab.gnome.org/GNOME/citemplates/release-service@master" 6 | inputs: 7 | dist-job-name: "build-gnomeos" 8 | tarball-artifact-path: "_builddir/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz" 9 | -------------------------------------------------------------------------------- /src/gcm-debug.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | gboolean gcm_debug_is_verbose (void); 13 | GOptionGroup *gcm_debug_get_option_group (void); 14 | void gcm_debug_setup (gboolean enabled); 15 | -------------------------------------------------------------------------------- /data/gcm-import.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=ICC Profile Installer 3 | Comment=Install ICC profiles 4 | Categories=System; 5 | Exec=/usr/bin/gcm-import %F 6 | Terminal=false 7 | Type=Application 8 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 9 | Icon=application-vnd.iccprofile 10 | StartupNotify=true 11 | NoDisplay=true 12 | MimeType=application/vnd.iccprofile; 13 | 14 | -------------------------------------------------------------------------------- /meson_post_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ -z $MESON_INSTALL_PREFIX ]; then 3 | echo 'This is meant to be ran from Meson only!' 4 | exit 1 5 | fi 6 | 7 | if [ -z $DESTDIR ]; then 8 | echo 'Updating icon cache' 9 | gtk-update-icon-cache -qtf "$MESON_INSTALL_PREFIX/share/icons/hicolor" 10 | echo 'Updating desktop database' 11 | update-desktop-database -q "$MESON_INSTALL_PREFIX/share/applications" 12 | fi 13 | -------------------------------------------------------------------------------- /data/icons/meson.build: -------------------------------------------------------------------------------- 1 | 2 | icon_sizes = ['16x16', '22x22', '24x24', '32x32', '48x48', '64x64', '256x256'] 3 | foreach size: icon_sizes 4 | install_data([ 5 | size + '/gnome-color-manager.png', 6 | ], 7 | install_dir : join_paths(prefixed_datadir, 'icons/hicolor/' + size + '/apps'), 8 | ) 9 | endforeach 10 | 11 | 12 | install_data([ 13 | 'scalable/gnome-color-manager.svg', 14 | ], 15 | install_dir : join_paths(prefixed_datadir, 'icons/hicolor/scalable/apps') 16 | ) 17 | -------------------------------------------------------------------------------- /po/POTFILES.in: -------------------------------------------------------------------------------- 1 | # List of source files containing translatable strings. 2 | # Please keep this file sorted alphabetically. 3 | data/appdata/org.gnome.ColorProfileViewer.metainfo.xml.in 4 | data/gcm-import.desktop.in 5 | data/gcm-picker.desktop.in 6 | data/org.gnome.ColorProfileViewer.desktop.in 7 | src/gcm-cell-renderer-profile-text.c 8 | src/gcm-debug.c 9 | src/gcm-import.c 10 | src/gcm-inspect.c 11 | src/gcm-picker.c 12 | src/gcm-picker.ui 13 | src/gcm-utils.c 14 | src/gcm-viewer.c 15 | src/gcm-viewer.ui 16 | -------------------------------------------------------------------------------- /RELEASE: -------------------------------------------------------------------------------- 1 | GNOME Color Manager Release Notes 2 | 3 | Write NEWS entries for gnome-color-manager in the same format as usual. 4 | 5 | git log --format="%s" 3.36.2.. | grep -i -v trivial | grep -v Merge | uniq | sort 6 | Add any user visible changes into ../data/appdata/org.gnome.ColorProfileViewer.metainfo.xml.in 7 | 8 | git commit -a -m "Release version 3.36.3" 9 | git tag -a 3.36.3 -m "Release version 3.36.3" 10 | git push --tags 11 | git push 12 | 13 | Do post release version bump in meson.build 14 | 15 | git commit -a -m "trivial: Post release version bump" 16 | git push 17 | -------------------------------------------------------------------------------- /data/org.gnome.ColorProfileViewer.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Color Profile Viewer 3 | Comment=Inspect and compare installed color profiles 4 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 5 | Icon=gnome-color-manager 6 | Exec=gcm-viewer 7 | Terminal=false 8 | Type=Application 9 | Categories=GNOME;GTK;System; 10 | NotShowIn=GNOME; 11 | # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! 12 | Keywords=Color;ICC; 13 | StartupNotify=true 14 | DBusActivatable=true 15 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | ab 2 | ar 3 | as 4 | be 5 | bg 6 | bn_IN 7 | bs 8 | ca 9 | ca@valencia 10 | cs 11 | da 12 | de 13 | el 14 | en_GB 15 | eo 16 | es 17 | et 18 | eu 19 | fa 20 | fi 21 | fr 22 | fur 23 | gd 24 | gl 25 | gu 26 | he 27 | hi 28 | hr 29 | hu 30 | id 31 | is 32 | it 33 | ja 34 | ka 35 | kab 36 | kk 37 | kn 38 | ko 39 | lt 40 | lv 41 | ml 42 | mr 43 | ms 44 | nb 45 | ne 46 | nl 47 | oc 48 | or 49 | pa 50 | pl 51 | pt 52 | pt_BR 53 | ro 54 | ru 55 | sk 56 | sl 57 | sr 58 | sr@latin 59 | sv 60 | ta 61 | te 62 | tg 63 | th 64 | tr 65 | ug 66 | uk 67 | uz 68 | vi 69 | zh_CN 70 | zh_HK 71 | zh_TW 72 | -------------------------------------------------------------------------------- /help/C/gnome-help.its: -------------------------------------------------------------------------------- 1 | 4 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /data/meson.build: -------------------------------------------------------------------------------- 1 | subdir('appdata') 2 | subdir('figures') 3 | subdir('icons') 4 | 5 | desktop_files = [ 6 | 'org.gnome.ColorProfileViewer.desktop', 7 | 'gcm-picker.desktop', 8 | 'gcm-import.desktop', 9 | ] 10 | foreach desktop_file: desktop_files 11 | i18n.merge_file( 12 | input: desktop_file + '.in', 13 | output: desktop_file, 14 | type: 'desktop', 15 | po_dir: join_paths(meson.source_root(), 'po'), 16 | install: true, 17 | install_dir: join_paths(prefixed_datadir, 'applications') 18 | ) 19 | endforeach 20 | 21 | dbusconf = configuration_data() 22 | dbusconf.set('bindir', prefixed_bindir) 23 | configure_file( 24 | input: 'org.gnome.ColorProfileViewer.service.in', 25 | output: 'org.gnome.ColorProfileViewer.service', 26 | configuration: dbusconf, 27 | install: true, 28 | install_dir: join_paths(prefixed_datadir, 'dbus-1', 'services'), 29 | ) 30 | -------------------------------------------------------------------------------- /man/meson.build: -------------------------------------------------------------------------------- 1 | docbook2man = find_program('docbook2man', required : false) 2 | if docbook2man.found() 3 | custom_target('gcm-import-man', 4 | output : 'gcm-import.1', 5 | input : 'gcm-import.sgml', 6 | command : [docbook2man, '@INPUT@', '--output', 'man'], 7 | install : true, 8 | install_dir : join_paths(prefixed_mandir, 'man1'), 9 | ) 10 | custom_target('gcm-inspect-man', 11 | output : 'gcm-inspect.1', 12 | input : 'gcm-inspect.sgml', 13 | command : [docbook2man, '@INPUT@', '--output', 'man'], 14 | install : true, 15 | install_dir : join_paths(prefixed_mandir, 'man1'), 16 | ) 17 | custom_target('gcm-picker-man', 18 | output : 'gcm-picker.1', 19 | input : 'gcm-picker.sgml', 20 | command : [docbook2man, '@INPUT@', '--output', 'man'], 21 | install : true, 22 | install_dir : join_paths(prefixed_mandir, 'man1'), 23 | ) 24 | custom_target('gcm-viewer-man', 25 | output : 'gcm-viewer.1', 26 | input : 'gcm-viewer.sgml', 27 | command : [docbook2man, '@INPUT@', '--output', 'man'], 28 | install : true, 29 | install_dir : join_paths(prefixed_mandir, 'man1'), 30 | ) 31 | endif 32 | -------------------------------------------------------------------------------- /help/C/color-import-osx.page: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | How to import an existing ICC profile using an OS X system. 10 | 11 | Richard Hughes 12 | richard@hughsie.com 13 | 14 | 15 | 16 | 17 | Installing an ICC profile on Apple OS X 18 |

19 | Apple OS X supports a similar scheme to Linux, in that profiles can 20 | be installed system-wide or specific to the user. 21 | System wide profiles are stored in /Library/ColorSync/Profiles 22 | and user-specific profiles are stored in ~/Library/ColorSync/Profiles. 23 |

24 |

25 | Use the System PreferencesDisplaysColor 26 | tool to import the file and assign the profile to the correct device. 27 |

28 | 29 |
30 | -------------------------------------------------------------------------------- /src/gcm-utils.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2009-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | 13 | #define GCM_STOCK_ICON "gnome-color-manager" 14 | #define GCM_DBUS_SERVICE "org.gnome.ColorManager" 15 | #define GCM_DBUS_INTERFACE "org.gnome.ColorManager" 16 | #define GCM_DBUS_PATH "/org/gnome/ColorManager" 17 | 18 | /* DISTROS: you will have to patch if you have changed the name of these packages */ 19 | #define GCM_PREFS_PACKAGE_NAME_SHARED_COLOR_TARGETS "shared-color-targets" 20 | #define GCM_PREFS_PACKAGE_NAME_ARGYLLCMS "argyllcms" 21 | #define GCM_PREFS_PACKAGE_NAME_COLOR_PROFILES "shared-color-profiles" 22 | #define GCM_PREFS_PACKAGE_NAME_COLOR_PROFILES_EXTRA "shared-color-profiles-extra" 23 | 24 | gchar *gcm_utils_linkify (const gchar *text); 25 | const gchar *cd_colorspace_to_localised_string (CdColorspace colorspace); 26 | gboolean gcm_utils_image_convert (GtkImage *image, 27 | CdIcc *input, 28 | CdIcc *abstract, 29 | CdIcc *output, 30 | GError **error); 31 | 32 | -------------------------------------------------------------------------------- /gnome-color-manager.doap: -------------------------------------------------------------------------------- 1 | 6 | 7 | GNOME Color Manager 8 | GNOME Color Profile Tools 9 | 10 | C 11 | 12 | GNOME Color Manager is a set of graphical utilities for color management 13 | to be used in the GNOME desktop. 14 | 15 | 16 | 17 | 18 | Richard Hughes 19 | 20 | 21 | rhughes 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /help/C/color-import-linux.page: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | How to import an existing ICC profile using a Linux system. 10 | 11 | Richard Hughes 12 | richard@hughsie.com 13 | 14 | 15 | 16 | 17 | Installing an ICC profile on Linux 18 |

19 | If you have gnome-color-manager or colord-kde 20 | installed then just double click the .icc profile 21 | and click Import. 22 | You can then assign the new profile to an existing device using the 23 | System SettingsColor panel. 24 |

25 |

26 | Profile calibration curves are automatically loaded at login, or can 27 | be loaded for all users at startup if the Set for all 28 | users button is clicked. 29 |

30 | 31 |
32 | -------------------------------------------------------------------------------- /src/gcm-trc-widget.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2006-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | #define GCM_TYPE_TRC_WIDGET (gcm_trc_widget_get_type ()) 13 | #define GCM_TRC_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCM_TYPE_TRC_WIDGET, GcmTrcWidget)) 14 | #define GCM_TRC_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), GCM_TRC_WIDGET, GcmTrcWidgetClass)) 15 | #define GCM_IS_TRC_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCM_TYPE_TRC_WIDGET)) 16 | #define GCM_IS_TRC_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), EFF_TYPE_TRC_WIDGET)) 17 | #define GCM_TRC_WIDGET_GET_CLASS (G_TYPE_INSTANCE_GET_CLASS ((obj), GCM_TYPE_TRC_WIDGET, GcmTrcWidgetClass)) 18 | 19 | typedef struct GcmTrcWidget GcmTrcWidget; 20 | typedef struct GcmTrcWidgetClass GcmTrcWidgetClass; 21 | typedef struct GcmTrcWidgetPrivate GcmTrcWidgetPrivate; 22 | 23 | struct GcmTrcWidget 24 | { 25 | GtkDrawingArea parent; 26 | GcmTrcWidgetPrivate *priv; 27 | }; 28 | 29 | struct GcmTrcWidgetClass 30 | { 31 | GtkDrawingAreaClass parent_class; 32 | }; 33 | 34 | GType gcm_trc_widget_get_type (void); 35 | GtkWidget *gcm_trc_widget_new (void); 36 | -------------------------------------------------------------------------------- /src/gcm-gamma-widget.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2009-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | 12 | #define GCM_TYPE_GAMMA_WIDGET (gcm_gamma_widget_get_type ()) 13 | #define GCM_GAMMA_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCM_TYPE_GAMMA_WIDGET, GcmGammaWidget)) 14 | #define GCM_GAMMA_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), GCM_GAMMA_WIDGET, GcmGammaWidgetClass)) 15 | #define GCM_IS_GAMMA_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCM_TYPE_GAMMA_WIDGET)) 16 | #define GCM_IS_GAMMA_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), EFF_TYPE_GAMMA_WIDGET)) 17 | #define GCM_GAMMA_WIDGET_GET_CLASS (G_TYPE_INSTANCE_GET_CLASS ((obj), GCM_TYPE_GAMMA_WIDGET, GcmGammaWidgetClass)) 18 | 19 | typedef struct GcmGammaWidget GcmGammaWidget; 20 | typedef struct GcmGammaWidgetClass GcmGammaWidgetClass; 21 | typedef struct GcmGammaWidgetPrivate GcmGammaWidgetPrivate; 22 | 23 | struct GcmGammaWidget 24 | { 25 | GtkDrawingArea parent; 26 | GcmGammaWidgetPrivate *priv; 27 | }; 28 | 29 | struct GcmGammaWidgetClass 30 | { 31 | GtkDrawingAreaClass parent_class; 32 | }; 33 | 34 | GType gcm_gamma_widget_get_type (void); 35 | GtkWidget *gcm_gamma_widget_new (void); 36 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | GNOME Color Manager 2 | Color profile manager for the GNOME desktop 3 | 4 | GNOME Color Manager is a session framework that makes it easy to manage, install 5 | and generate color profiles in the GNOME desktop. 6 | 7 | This project has the following features: 8 | 9 | * Setting output gamma tables (with local brightness and adjustments) to any 10 | Xrandr output (falling back to the per-screen methods for drivers that do not 11 | yet support Xrandr 1.3). 12 | 13 | * Setting of settings at session start, and when monitors are hotplugged. 14 | 15 | * Easy install of vendor supplied ICC or ICM files, just by double clicking 16 | on the file. 17 | 18 | * Easy display calibration using an external calibration device, and scanner 19 | calibration using a inexpensive IT 8.7 target. For calibration, the ArgyllCMS 20 | package is required. 21 | 22 | * Integration X11 by setting the per-screen and per-output _ICC_PROFILE atom, 23 | which makes applications such as the GIMP use a color managed output. 24 | 25 | * Easy to use DBus interface for applications to query what ICC profiles should 26 | be used for a specific device or device type. This is session activated and 27 | is only started when it is needed, and quits after a small period of idleness. 28 | 29 | For more information, please see https://gitlab.gnome.org/GNOME/gnome-color-manager 30 | 31 | -------------------------------------------------------------------------------- /src/gcm-cie-widget.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2006-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | 13 | #define GCM_TYPE_CIE_WIDGET (gcm_cie_widget_get_type ()) 14 | #define GCM_CIE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCM_TYPE_CIE_WIDGET, GcmCieWidget)) 15 | #define GCM_CIE_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), GCM_CIE_WIDGET, GcmCieWidgetClass)) 16 | #define GCM_IS_CIE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCM_TYPE_CIE_WIDGET)) 17 | #define GCM_IS_CIE_WIDGET_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), EFF_TYPE_CIE_WIDGET)) 18 | #define GCM_CIE_WIDGET_GET_CLASS (G_TYPE_INSTANCE_GET_CLASS ((obj), GCM_TYPE_CIE_WIDGET, GcmCieWidgetClass)) 19 | 20 | typedef struct GcmCieWidget GcmCieWidget; 21 | typedef struct GcmCieWidgetClass GcmCieWidgetClass; 22 | typedef struct GcmCieWidgetPrivate GcmCieWidgetPrivate; 23 | 24 | struct GcmCieWidget 25 | { 26 | GtkDrawingArea parent; 27 | GcmCieWidgetPrivate *priv; 28 | }; 29 | 30 | struct GcmCieWidgetClass 31 | { 32 | GtkDrawingAreaClass parent_class; 33 | }; 34 | 35 | GType gcm_cie_widget_get_type (void); 36 | GtkWidget *gcm_cie_widget_new (void); 37 | void gcm_cie_widget_set_from_profile (GtkWidget *widget, 38 | CdIcc *profile); 39 | -------------------------------------------------------------------------------- /src/gcm-cell-renderer-color.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2011 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | #define GCM_TYPE_CELL_RENDERER_COLOR (gcm_cell_renderer_color_get_type()) 15 | #define GCM_CELL_RENDERER_COLOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GCM_TYPE_CELL_RENDERER_COLOR, GcmCellRendererColor)) 16 | #define GCM_CELL_RENDERER_COLOR_CLASS(cls) (G_TYPE_CHECK_CLASS_CAST((cls), GCM_TYPE_CELL_RENDERER_COLOR, GcmCellRendererColorClass)) 17 | #define GCM_IS_CELL_RENDERER_COLOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GCM_TYPE_CELL_RENDERER_COLOR)) 18 | #define GCM_IS_CELL_RENDERER_COLOR_CLASS(cls) (G_TYPE_CHECK_CLASS_TYPE((cls), GCM_TYPE_CELL_RENDERER_COLOR)) 19 | #define GCM_CELL_RENDERER_COLOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GCM_TYPE_CELL_RENDERER_COLOR, GcmCellRendererColorClass)) 20 | 21 | typedef struct _GcmCellRendererColor GcmCellRendererColor; 22 | typedef struct _GcmCellRendererColorClass GcmCellRendererColorClass; 23 | 24 | struct _GcmCellRendererColor 25 | { 26 | GtkCellRendererPixbuf parent; 27 | CdColorLab *color; 28 | CdProfile *profile; 29 | gchar *icon_name; 30 | }; 31 | 32 | struct _GcmCellRendererColorClass 33 | { 34 | GtkCellRendererPixbufClass parent_class; 35 | }; 36 | 37 | GType gcm_cell_renderer_color_get_type (void); 38 | GtkCellRenderer *gcm_cell_renderer_color_new (void); 39 | -------------------------------------------------------------------------------- /src/gcm-cell-renderer-profile-text.h: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | #define GCM_TYPE_CELL_RENDERER_PROFILE_TEXT (gcm_cell_renderer_profile_text_get_type()) 15 | #define GCM_CELL_RENDERER_PROFILE_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GCM_TYPE_CELL_RENDERER_PROFILE_TEXT, GcmCellRendererProfileText)) 16 | #define GCM_CELL_RENDERER_PROFILE_TEXT_CLASS(cls) (G_TYPE_CHECK_CLASS_CAST((cls), GCM_TYPE_CELL_RENDERER_PROFILE_TEXT, GcmCellRendererProfileTextClass)) 17 | #define GCM_IS_CELL_RENDERER_PROFILE_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GCM_TYPE_CELL_RENDERER_PROFILE_TEXT)) 18 | #define GCM_IS_CELL_RENDERER_PROFILE_TEXT_CLASS(cls) (G_TYPE_CHECK_CLASS_TYPE((cls), GCM_TYPE_CELL_RENDERER_PROFILE_TEXT)) 19 | #define GCM_CELL_RENDERER_PROFILE_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GCM_TYPE_CELL_RENDERER_PROFILE_TEXT, GcmCellRendererProfileTextClass)) 20 | 21 | typedef struct _GcmCellRendererProfileText GcmCellRendererProfileText; 22 | typedef struct _GcmCellRendererProfileTextClass GcmCellRendererProfileTextClass; 23 | 24 | struct _GcmCellRendererProfileText 25 | { 26 | GtkCellRendererText parent; 27 | CdProfile *profile; 28 | gboolean is_default; 29 | gchar *markup; 30 | }; 31 | 32 | struct _GcmCellRendererProfileTextClass 33 | { 34 | GtkCellRendererTextClass parent_class; 35 | }; 36 | 37 | GType gcm_cell_renderer_profile_text_get_type (void); 38 | GtkCellRenderer *gcm_cell_renderer_profile_text_new (void); 39 | -------------------------------------------------------------------------------- /contrib/gnome-color-manager.spec.in: -------------------------------------------------------------------------------- 1 | %define alphatag #ALPHATAG# 2 | 3 | Name: gnome-color-manager 4 | Version: #VERSION# 5 | Release: 0.#BUILD#%{?alphatag}%{?dist} 6 | Summary: Color management tools for GNOME 7 | License: GPLv2+ 8 | URL: https://gitlab.gnome.org/GNOME/gnome-color-manager 9 | Source0: http://download.gnome.org/sources/gnome-color-manager/3.36/%{name}-%{version}.tar.xz 10 | 11 | BuildRequires: gcc 12 | BuildRequires: gtk3-devel >= 3.0.0 13 | BuildRequires: gettext 14 | BuildRequires: lcms2-devel 15 | BuildRequires: glib2-devel >= 2.25.9-2 16 | BuildRequires: docbook-utils 17 | BuildRequires: colord-devel >= 0.1.12 18 | BuildRequires: itstool 19 | BuildRequires: meson 20 | 21 | Requires: shared-mime-info 22 | 23 | # obsolete sub-package 24 | Obsoletes: gnome-color-manager-devel <= 3.1.1 25 | Provides: gnome-color-manager-devel 26 | 27 | %description 28 | gnome-color-manager is a session framework that makes it easy to manage, install 29 | and generate color profiles in the GNOME desktop. 30 | 31 | %prep 32 | %autosetup -p1 33 | 34 | %build 35 | %meson 36 | %meson_build 37 | 38 | %install 39 | %meson_install 40 | 41 | %find_lang %name --with-gnome 42 | 43 | %files -f %{name}.lang 44 | %license COPYING 45 | %doc AUTHORS README 46 | %{_bindir}/gcm-* 47 | %{_datadir}/applications/gcm-*.desktop 48 | %{_datadir}/applications/org.gnome.ColorProfileViewer.desktop 49 | %dir %{_datadir}/gnome-color-manager 50 | %dir %{_datadir}/gnome-color-manager/figures 51 | %{_datadir}/gnome-color-manager/figures/* 52 | %{_datadir}/icons/hicolor/*/*/*.png 53 | %{_datadir}/icons/hicolor/scalable/*/*.svg* 54 | %{_datadir}/metainfo/org.gnome.ColorProfileViewer.metainfo.xml 55 | %{_mandir}/man1/*.1* 56 | 57 | %changelog 58 | * #LONGDATE# Richard Hughes #VERSION#-0.#BUILD##ALPHATAG# 59 | - Update from GIT 60 | 61 | -------------------------------------------------------------------------------- /COMMITMENT: -------------------------------------------------------------------------------- 1 | Common Cure Rights Commitment, version 1.0 2 | 3 | Before filing or continuing to prosecute any legal proceeding or claim 4 | (other than a Defensive Action) arising from termination of a Covered 5 | License, we commit to extend to the person or entity ('you') accused 6 | of violating the Covered License the following provisions regarding 7 | cure and reinstatement, taken from GPL version 3. As used here, the 8 | term 'this License' refers to the specific Covered License being 9 | enforced. 10 | 11 | However, if you cease all violation of this License, then your 12 | license from a particular copyright holder is reinstated (a) 13 | provisionally, unless and until the copyright holder explicitly 14 | and finally terminates your license, and (b) permanently, if the 15 | copyright holder fails to notify you of the violation by some 16 | reasonable means prior to 60 days after the cessation. 17 | 18 | Moreover, your license from a particular copyright holder is 19 | reinstated permanently if the copyright holder notifies you of the 20 | violation by some reasonable means, this is the first time you 21 | have received notice of violation of this License (for any work) 22 | from that copyright holder, and you cure the violation prior to 30 23 | days after your receipt of the notice. 24 | 25 | We intend this Commitment to be irrevocable, and binding and 26 | enforceable against us and assignees of or successors to our 27 | copyrights. 28 | 29 | Definitions 30 | 31 | 'Covered License' means the GNU General Public License, version 2 32 | (GPLv2), the GNU Lesser General Public License, version 2.1 33 | (LGPLv2.1), or the GNU Library General Public License, version 2 34 | (LGPLv2), all as published by the Free Software Foundation. 35 | 36 | 'Defensive Action' means a legal proceeding or claim that We bring 37 | against you in response to a prior proceeding or claim initiated by 38 | you or your affiliate. 39 | 40 | 'We' means each contributor to this repository as of the date of 41 | inclusion of this file, including subsidiaries of a corporate 42 | contributor. 43 | 44 | This work is available under a Creative Commons Attribution-ShareAlike 45 | 4.0 International license. 46 | -------------------------------------------------------------------------------- /man/gcm-picker.sgml: -------------------------------------------------------------------------------- 1 | 3 | 11 April,2008"> 4 | 5 | GNU"> 6 | GPL"> 7 | ]> 8 | 9 | 10 | 11 |
12 | richard@hughsie.com; 13 |
14 | 15 | Richard 16 | Hughes 17 | 18 | 19 | 2011 20 | Richard Hughes 21 | 22 | &date; 23 |
24 | 25 | gcm-picker 26 | 1 27 | 28 | 29 | &package; 30 | GNOME Color Manager Color Picker Tool 31 | 32 | 33 | 34 | &package; 35 | 36 | 37 | 38 | 39 | DESCRIPTION 40 | 41 | This manual page documents briefly the &package; command. 42 | 43 | 44 | &package; allows you to pick spot colors. 45 | 46 | 47 | 48 | SEE ALSO 49 | gcm-import 50 | gnome-control-center 51 | 52 | 53 | AUTHOR 54 | This manual page was written by Richard Hughes richard@hughsie.com. 55 | 56 | 57 |
58 | 59 | 75 | 76 | -------------------------------------------------------------------------------- /man/gcm-import.sgml: -------------------------------------------------------------------------------- 1 | 3 | 11 April,2008"> 4 | 5 | GNU"> 6 | GPL"> 7 | ]> 8 | 9 | 10 | 11 |
12 | richard@hughsie.com; 13 |
14 | 15 | Richard 16 | Hughes 17 | 18 | 19 | 2009 20 | Richard Hughes 21 | 22 | &date; 23 |
24 | 25 | gcm-import 26 | 1 27 | 28 | 29 | &package; 30 | GNOME Color Manager Import Tool 31 | 32 | 33 | 34 | &package; 35 | 36 | 37 | 38 | 39 | DESCRIPTION 40 | 41 | This manual page documents briefly the &package; command. 42 | 43 | 44 | &package; allows you to import ICC files supplied by vendors. 45 | 46 | 47 | 48 | SEE ALSO 49 | gcm-viewer 50 | gnome-control-center 51 | 52 | 53 | AUTHOR 54 | This manual page was written by Richard Hughes richard@hughsie.com. 55 | 56 | 57 |
58 | 59 | 75 | 76 | -------------------------------------------------------------------------------- /man/gcm-viewer.sgml: -------------------------------------------------------------------------------- 1 | 3 | 11 April,2008"> 4 | 5 | GNU"> 6 | GPL"> 7 | ]> 8 | 9 | 10 | 11 |
12 | richard@hughsie.com; 13 |
14 | 15 | Richard 16 | Hughes 17 | 18 | 19 | 2011 20 | Richard Hughes 21 | 22 | &date; 23 |
24 | 25 | gcm-viewer 26 | 1 27 | 28 | 29 | &package; 30 | GNOME Color Manager Profile Viewer Tool 31 | 32 | 33 | 34 | &package; 35 | 36 | 37 | 38 | 39 | DESCRIPTION 40 | 41 | This manual page documents briefly the &package; command. 42 | 43 | 44 | &package; allows you to view properties of ICC files. 45 | 46 | 47 | 48 | SEE ALSO 49 | gcm-import 50 | gnome-control-center 51 | 52 | 53 | AUTHOR 54 | This manual page was written by Richard Hughes richard@hughsie.com. 55 | 56 | 57 |
58 | 59 | 75 | 76 | -------------------------------------------------------------------------------- /man/gcm-inspect.sgml: -------------------------------------------------------------------------------- 1 | 3 | 11 April,2008"> 4 | 5 | GNU"> 6 | GPL"> 7 | ]> 8 | 9 | 10 | 11 |
12 | richard@hughsie.com; 13 |
14 | 15 | Richard 16 | Hughes 17 | 18 | 19 | 2011 20 | Richard Hughes 21 | 22 | &date; 23 |
24 | 25 | gcm-inspect 26 | 1 27 | 28 | 29 | &package; 30 | GNOME Color Manager Inspect Tool 31 | 32 | 33 | 34 | &package; 35 | 36 | 37 | 38 | 39 | DESCRIPTION 40 | 41 | This manual page documents briefly the &package; command. 42 | 43 | 44 | &package; allows you to inspect your session color management settings. 45 | 46 | 47 | 48 | SEE ALSO 49 | gcm-import 50 | gnome-control-center 51 | 52 | 53 | AUTHOR 54 | This manual page was written by Richard Hughes richard@hughsie.com. 55 | 56 | 57 |
58 | 59 | 75 | 76 | -------------------------------------------------------------------------------- /src/meson.build: -------------------------------------------------------------------------------- 1 | cargs = ['-DG_LOG_DOMAIN="GnomeColorManager"'] 2 | 3 | gcm_picker_resources = gnome.compile_resources( 4 | 'gcm-picker-resources', 5 | 'gcm-picker.gresource.xml', 6 | source_dir : '.', 7 | c_name : 'gcm', 8 | ) 9 | 10 | gcm_viewer_resources = gnome.compile_resources( 11 | 'gcm-viewer-resources', 12 | 'gcm-viewer.gresource.xml', 13 | source_dir : '.', 14 | c_name : 'gcm', 15 | ) 16 | 17 | shared_srcs = [ 18 | 'gcm-cie-widget.c', 19 | 'gcm-debug.c', 20 | 'gcm-trc-widget.c', 21 | 'gcm-utils.c', 22 | ] 23 | 24 | executable( 25 | 'gcm-inspect', 26 | sources : [ 27 | 'gcm-inspect.c', 28 | shared_srcs 29 | ], 30 | include_directories : [ 31 | include_directories('..'), 32 | ], 33 | dependencies : [ 34 | libcolord, 35 | libm, 36 | libgio, 37 | libgtk, 38 | ], 39 | c_args : cargs, 40 | install : true, 41 | ) 42 | 43 | executable( 44 | 'gcm-import', 45 | sources : [ 46 | 'gcm-import.c', 47 | shared_srcs 48 | ], 49 | include_directories : [ 50 | include_directories('..'), 51 | ], 52 | dependencies : [ 53 | libcolord, 54 | libm, 55 | libgio, 56 | libgtk, 57 | ], 58 | c_args : cargs, 59 | install : true, 60 | ) 61 | 62 | executable( 63 | 'gcm-picker', 64 | gcm_picker_resources, 65 | sources : [ 66 | 'gcm-picker.c', 67 | shared_srcs 68 | ], 69 | include_directories : [ 70 | include_directories('..'), 71 | ], 72 | dependencies : [ 73 | liblcms, 74 | libcolord, 75 | libm, 76 | libgio, 77 | libgtk, 78 | ], 79 | c_args : cargs, 80 | install : true, 81 | ) 82 | 83 | executable( 84 | 'gcm-viewer', 85 | gcm_viewer_resources, 86 | sources : [ 87 | 'gcm-cell-renderer-profile-text.c', 88 | 'gcm-cell-renderer-color.c', 89 | 'gcm-viewer.c', 90 | shared_srcs 91 | ], 92 | include_directories : [ 93 | include_directories('..'), 94 | ], 95 | dependencies : [ 96 | libcolord, 97 | libm, 98 | liblcms, 99 | libgio, 100 | libgtk, 101 | ], 102 | c_args : cargs, 103 | install : true, 104 | ) 105 | 106 | if get_option('tests') 107 | cargs += ['-DTESTDATADIR="' + join_paths(meson.current_source_dir(), '..', 'data', 'tests') + '"'] 108 | e = executable( 109 | 'gcm-self-test', 110 | sources : [ 111 | shared_srcs, 112 | 'gcm-gamma-widget.c', 113 | 'gcm-self-test.c', 114 | ], 115 | include_directories : [ 116 | include_directories('..'), 117 | ], 118 | dependencies : [ 119 | libcolord, 120 | libgio, 121 | libgtk, 122 | libm, 123 | ], 124 | c_args : cargs 125 | ) 126 | test('gcm-self-test', e) 127 | endif 128 | -------------------------------------------------------------------------------- /meson.build: -------------------------------------------------------------------------------- 1 | project('gnome-color-manager', 'c', 2 | version : '3.36.3', 3 | license : 'GPL-2.0+', 4 | default_options : ['warning_level=1'], 5 | meson_version : '>=0.46.0' 6 | ) 7 | 8 | conf = configuration_data() 9 | conf.set_quoted('PACKAGE_NAME', meson.project_name()) 10 | conf.set_quoted('PACKAGE_VERSION', meson.project_version()) 11 | 12 | # get suported warning flags 13 | test_args = [ 14 | '-fstack-protector-strong', 15 | '-Waggregate-return', 16 | '-Warray-bounds', 17 | '-Wcast-align', 18 | '-Wclobbered', 19 | '-Wdeclaration-after-statement', 20 | '-Wempty-body', 21 | '-Wextra', 22 | '-Wformat=2', 23 | '-Wformat-nonliteral', 24 | '-Wformat-security', 25 | '-Wformat-signedness', 26 | '-Wignored-qualifiers', 27 | '-Wimplicit-function-declaration', 28 | '-Winit-self', 29 | '-Winline', 30 | '-Wmissing-declarations', 31 | '-Wmissing-format-attribute', 32 | '-Wmissing-include-dirs', 33 | '-Wmissing-noreturn', 34 | '-Wmissing-parameter-type', 35 | '-Wmissing-prototypes', 36 | '-Wnested-externs', 37 | '-Wno-discarded-qualifiers', 38 | '-Wno-missing-field-initializers', 39 | '-Wno-strict-aliasing', 40 | '-Wno-suggest-attribute=format', 41 | '-Wno-unused-parameter', 42 | '-Wno-cast-function-type', 43 | '-Wno-deprecated-declarations', 44 | '-Wold-style-definition', 45 | '-Woverride-init', 46 | '-Wpacked', 47 | '-Wpointer-arith', 48 | '-Wredundant-decls', 49 | '-Wreturn-type', 50 | '-Wshadow', 51 | '-Wsign-compare', 52 | '-Wstrict-aliasing', 53 | '-Wstrict-prototypes', 54 | '-Wswitch-default', 55 | '-Wtype-limits', 56 | '-Wundef', 57 | '-Wuninitialized', 58 | '-Wunused-but-set-variable', 59 | '-Wwrite-strings' 60 | ] 61 | cc = meson.get_compiler('c') 62 | foreach arg: test_args 63 | if cc.has_argument(arg) 64 | add_project_arguments(arg, language : 'c') 65 | endif 66 | endforeach 67 | 68 | # enable full RELRO where possible 69 | # FIXME: until https://github.com/mesonbuild/meson/issues/1140 is fixed 70 | test_link_args = [ 71 | '-Wl,-z,relro', 72 | '-Wl,-z,now', 73 | ] 74 | foreach arg: test_link_args 75 | if cc.has_link_argument(arg) 76 | add_project_link_arguments(arg, language : 'c') 77 | endif 78 | endforeach 79 | 80 | prefixed_bindir = join_paths(get_option('prefix'), get_option('bindir')) 81 | prefixed_localedir = join_paths(get_option('prefix'), get_option('localedir')) 82 | prefixed_libexecdir = join_paths(get_option('prefix'), get_option('libexecdir')) 83 | prefixed_mandir = join_paths(get_option('prefix'), get_option('mandir')) 84 | prefixed_datadir = join_paths(get_option('prefix'), get_option('datadir')) 85 | prefixed_pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), 'gnome-color-manager') 86 | 87 | libgio = dependency('gio-2.0', version : '>= 2.25.9') 88 | libgtk = dependency('gtk+-3.0', version : '>= 3.4') 89 | libcolord = dependency('colord', version : '>= 1.3.1') 90 | libm = cc.find_library('m', required: false) 91 | liblcms = dependency('lcms2', version : '>= 2.2') 92 | 93 | gnome = import('gnome') 94 | i18n = import('i18n') 95 | 96 | conf.set_quoted('GETTEXT_PACKAGE', meson.project_name()) 97 | conf.set_quoted('LOCALEDIR', prefixed_localedir) 98 | conf.set_quoted('DATADIR', prefixed_datadir) 99 | conf.set_quoted('PKGDATADIR', prefixed_pkgdatadir) 100 | conf.set_quoted('BINDIR', prefixed_bindir) 101 | conf.set_quoted('LIBEXECDIR', prefixed_libexecdir) 102 | configure_file( 103 | output : 'config.h', 104 | configuration : conf 105 | ) 106 | 107 | subdir('data') 108 | subdir('help') 109 | subdir('man') 110 | subdir('po') 111 | subdir('src') 112 | 113 | # FIXME: remove when https://github.com/mesonbuild/meson/issues/837 fixed 114 | meson.add_install_script('meson_post_install.sh') 115 | -------------------------------------------------------------------------------- /src/gcm-debug.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | static gboolean _verbose = FALSE; 16 | static gboolean _console = FALSE; 17 | 18 | gboolean 19 | gcm_debug_is_verbose (void) 20 | { 21 | /* local first */ 22 | if (_verbose) 23 | return TRUE; 24 | 25 | /* fall back to env variable */ 26 | if (g_getenv ("VERBOSE") != NULL) 27 | return TRUE; 28 | return FALSE; 29 | } 30 | 31 | 32 | static void 33 | gcm_debug_ignore_cb (const gchar *log_domain, GLogLevelFlags log_level, 34 | const gchar *message, gpointer user_data) 35 | { 36 | } 37 | 38 | static void 39 | gcm_debug_handler_cb (const gchar *log_domain, GLogLevelFlags log_level, 40 | const gchar *message, gpointer user_data) 41 | { 42 | gchar str_time[255]; 43 | time_t the_time; 44 | 45 | /* time header */ 46 | time (&the_time); 47 | strftime (str_time, 254, "%H:%M:%S", localtime (&the_time)); 48 | 49 | /* no color please, we're British */ 50 | if (!_console) { 51 | if (log_level == G_LOG_LEVEL_DEBUG) { 52 | g_print ("%s\t%s\n", str_time, message); 53 | } else { 54 | g_print ("***\n%s\t%s\n***\n", str_time, message); 55 | } 56 | return; 57 | } 58 | 59 | /* critical is also in red */ 60 | if (log_level == G_LOG_LEVEL_CRITICAL || 61 | log_level == G_LOG_LEVEL_ERROR) { 62 | g_print ("%c[%dm%s\t", 0x1B, 32, str_time); 63 | g_print ("%c[%dm%s\n%c[%dm", 0x1B, 31, message, 0x1B, 0); 64 | } else { 65 | /* debug in blue */ 66 | g_print ("%c[%dm%s\t", 0x1B, 32, str_time); 67 | g_print ("%c[%dm%s\n%c[%dm", 0x1B, 34, message, 0x1B, 0); 68 | } 69 | } 70 | 71 | static gboolean 72 | gcm_debug_pre_parse_hook (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error) 73 | { 74 | const GOptionEntry main_entries[] = { 75 | { "verbose", 'v', 0, G_OPTION_ARG_NONE, &_verbose, 76 | /* TRANSLATORS: turn on all debugging */ 77 | N_("Show debugging information for all files"), NULL }, 78 | { NULL} 79 | }; 80 | 81 | /* add main entry */ 82 | g_option_context_add_main_entries (context, main_entries, NULL); 83 | return TRUE; 84 | } 85 | 86 | void 87 | gcm_debug_setup (gboolean enabled) 88 | { 89 | if (enabled) { 90 | g_log_set_fatal_mask (NULL, G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL); 91 | g_log_set_handler (G_LOG_DOMAIN, 92 | G_LOG_LEVEL_ERROR | 93 | G_LOG_LEVEL_CRITICAL | 94 | G_LOG_LEVEL_DEBUG | 95 | G_LOG_LEVEL_WARNING, 96 | gcm_debug_handler_cb, NULL); 97 | } else { 98 | /* hide all debugging */ 99 | g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, 100 | gcm_debug_ignore_cb, NULL); 101 | } 102 | } 103 | 104 | static gboolean 105 | gcm_debug_post_parse_hook (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error) 106 | { 107 | /* verbose? */ 108 | gcm_debug_setup (_verbose); 109 | _console = (isatty (fileno (stdout)) == 1); 110 | g_debug ("Verbose debugging %s (on console %i)", _verbose ? "enabled" : "disabled", _console); 111 | return TRUE; 112 | } 113 | 114 | /** 115 | * gcm_debug_get_option_group: 116 | * 117 | * Returns a #GOptionGroup for the commandline arguments recognized 118 | * by debugging. You should add this group to your #GOptionContext 119 | * with g_option_context_add_group(), if you are using 120 | * g_option_context_parse() to parse your commandline arguments. 121 | * 122 | * Returns: a #GOptionGroup for the commandline arguments 123 | */ 124 | GOptionGroup * 125 | gcm_debug_get_option_group (void) 126 | { 127 | GOptionGroup *group; 128 | group = g_option_group_new ("debug", _("Debugging Options"), _("Show debugging options"), NULL, NULL); 129 | g_option_group_set_parse_hooks (group, gcm_debug_pre_parse_hook, gcm_debug_post_parse_hook); 130 | return group; 131 | } 132 | 133 | -------------------------------------------------------------------------------- /help/C/color-import-windows.page: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | How to import an existing ICC profile using a Windows system. 10 | 11 | Richard Hughes 12 | richard@hughsie.com 13 | 14 | 15 | 16 | 17 | Installing an ICC profile on Microsoft Windows 18 |

19 | The method for assigning the profile to a device and also using the 20 | embedded calibration curves is different for each version of 21 | Microsoft Windows. 22 |

23 |
24 | Windows XP 25 |

26 | Right click on the profile in Windows Explorer and click Install profile. 27 | This copies the profile to the correct directory automatically. 28 |

29 |

30 | Then open Control CenterColor 31 | and add the profile to the device. 32 |

33 | 34 |

35 | If you are replacing an existing profile in Windows XP, the 36 | above shortcut does not work. 37 | The profiles must be manually copied to 38 | C:\Windows\system32\spool\drivers\color for the 39 | original profile to be replaced. 40 |

41 |
42 |

43 | Windows XP requires a program to be run at startup to copy the 44 | profile calibration curves into the video card. 45 | This can be done using Adobe Gamma, LUT Loader 46 | or by using the free 47 | Microsoft Color Control Panel Applet. 48 | Using the latter adds a new Color item to the control 49 | panel and allows the calibration curves from default profile to be 50 | easily set at each startup. 51 |

52 |
53 | 54 |
55 | Windows Vista 56 |

57 | Microsoft Windows Vista mistakenly removes calibration curves from 58 | the video LUT after logon, after suspend, and when the UAC screen 59 | appears. 60 | This means you may have to manually reload the ICC profile 61 | calibration curves. 62 | If you are using profiles with embedded calibration curves you have 63 | to be very careful the calibration state has not been cleared. 64 |

65 |
66 | 67 |
68 | Windows 7 69 |

70 | Windows 7 supports a similar scheme to Linux, in that profiles can 71 | be installed system-wide or specific to the user. 72 | They are however stored in the same place. 73 | Right click on the profile in Windows Explorer and click Install profile 74 | or copy the .icc profile to C:\Windows\system32\spool\drivers\color. 75 |

76 |

77 | Open Control CenterColor Management 78 | and then add the profile to the system by clicking the 79 | Add button. 80 | Click on the Advanced tab and look for Display Calibration. 81 | Calibration curve loading is enabled by the Use Windows display 82 | calibration checkbox but it is not sensitive. 83 | This can be enabled by clicking on Change system defaults 84 | and then returning to the Advanced tab and then clicking 85 | the checkbox. 86 |

87 |

88 | Close the dialog and click Reload current calibrations to 89 | set the gamma ramps. 90 | The profile calibration curves should now be set for every boot. 91 |

92 |
93 | 94 |
95 | -------------------------------------------------------------------------------- /src/gcm-cell-renderer-color.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2011-2015 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "gcm-cell-renderer-color.h" 16 | 17 | enum { 18 | PROP_0, 19 | PROP_COLOR, 20 | PROP_PROFILE, 21 | PROP_LAST 22 | }; 23 | 24 | G_DEFINE_TYPE (GcmCellRendererColor, gcm_cell_renderer_color, GTK_TYPE_CELL_RENDERER_PIXBUF) 25 | 26 | static gpointer parent_class = NULL; 27 | 28 | static void 29 | gcm_cell_renderer_color_get_property (GObject *object, guint param_id, 30 | GValue *value, GParamSpec *pspec) 31 | { 32 | GcmCellRendererColor *renderer = GCM_CELL_RENDERER_COLOR (object); 33 | 34 | switch (param_id) { 35 | case PROP_COLOR: 36 | g_value_set_boxed (value, g_boxed_copy (CD_TYPE_COLOR_XYZ, 37 | renderer->color)); 38 | break; 39 | case PROP_PROFILE: 40 | g_value_set_object (value, renderer->profile); 41 | break; 42 | default: 43 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); 44 | break; 45 | } 46 | } 47 | 48 | static void 49 | gcm_cell_renderer_set_color (GcmCellRendererColor *renderer) 50 | { 51 | CdColorRGB8 rgb; 52 | g_autoptr(GdkPixbuf) pixbuf = NULL; 53 | gint height = 26; /* TODO: needs to be a property */ 54 | gint width = 400; /* TODO: needs to be a property */ 55 | gint x, y; 56 | guchar *pixels; 57 | guint pos; 58 | cmsHPROFILE profile_srgb = NULL; 59 | cmsHPROFILE profile_lab = NULL; 60 | cmsHTRANSFORM xform = NULL; 61 | 62 | /* nothing set yet */ 63 | if (renderer->color == NULL) 64 | goto out; 65 | 66 | /* convert the color to sRGB */ 67 | profile_lab = cmsCreateLab2Profile (NULL); 68 | profile_srgb = cmsCreate_sRGBProfile (); 69 | xform = cmsCreateTransform (profile_lab, TYPE_Lab_DBL, 70 | profile_srgb, TYPE_RGB_8, 71 | INTENT_ABSOLUTE_COLORIMETRIC, 0); 72 | cmsDoTransform (xform, renderer->color, &rgb, 1); 73 | 74 | /* create a pixbuf of the right size */ 75 | pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height); 76 | width = gdk_pixbuf_get_width (pixbuf); 77 | height = gdk_pixbuf_get_height (pixbuf); 78 | pixels = gdk_pixbuf_get_pixels (pixbuf); 79 | for (y=0; ycolor); 110 | gcm_cell_renderer_set_color (renderer); 111 | break; 112 | case PROP_PROFILE: 113 | if (renderer->profile != NULL) 114 | g_object_unref (renderer->profile); 115 | renderer->color = g_value_dup_object (value); 116 | gcm_cell_renderer_set_color (renderer); 117 | break; 118 | default: 119 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); 120 | break; 121 | } 122 | } 123 | 124 | static void 125 | gcm_cell_renderer_finalize (GObject *object) 126 | { 127 | GcmCellRendererColor *renderer; 128 | renderer = GCM_CELL_RENDERER_COLOR (object); 129 | g_free (renderer->icon_name); 130 | cd_color_lab_free (renderer->color); 131 | if (renderer->profile != NULL) 132 | g_object_unref (renderer->profile); 133 | G_OBJECT_CLASS (parent_class)->finalize (object); 134 | } 135 | 136 | static void 137 | gcm_cell_renderer_color_class_init (GcmCellRendererColorClass *class) 138 | { 139 | GObjectClass *object_class = G_OBJECT_CLASS (class); 140 | object_class->finalize = gcm_cell_renderer_finalize; 141 | 142 | parent_class = g_type_class_peek_parent (class); 143 | 144 | object_class->get_property = gcm_cell_renderer_color_get_property; 145 | object_class->set_property = gcm_cell_renderer_color_set_property; 146 | 147 | g_object_class_install_property (object_class, PROP_COLOR, 148 | g_param_spec_boxed ("color", NULL, 149 | NULL, 150 | CD_TYPE_COLOR_XYZ, 151 | G_PARAM_READWRITE)); 152 | 153 | g_object_class_install_property (object_class, PROP_PROFILE, 154 | g_param_spec_object ("profile", NULL, 155 | NULL, 156 | CD_TYPE_PROFILE, 157 | G_PARAM_READWRITE)); 158 | } 159 | 160 | static void 161 | gcm_cell_renderer_color_init (GcmCellRendererColor *renderer) 162 | { 163 | renderer->color = cd_color_lab_new (); 164 | } 165 | 166 | GtkCellRenderer * 167 | gcm_cell_renderer_color_new (void) 168 | { 169 | return g_object_new (GCM_TYPE_CELL_RENDERER_COLOR, NULL); 170 | } 171 | 172 | -------------------------------------------------------------------------------- /src/gcm-utils.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2009-2015 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include "gcm-utils.h" 17 | 18 | gchar * 19 | gcm_utils_linkify (const gchar *hostile_text) 20 | { 21 | guint i; 22 | guint j = 0; 23 | gboolean ret; 24 | GString *string; 25 | g_autofree gchar *text = NULL; 26 | 27 | /* Properly escape this as some profiles 'helpfully' put markup in like: 28 | * "Copyright (C) 2005-2010 Kai-Uwe Behrmann " */ 29 | text = g_markup_escape_text (hostile_text, -1); 30 | 31 | /* find and replace links */ 32 | string = g_string_new (""); 33 | for (i=0;; i++) { 34 | 35 | /* find the start of a link */ 36 | ret = g_str_has_prefix (&text[i], "http://"); 37 | if (ret) { 38 | g_string_append_len (string, text+j, i-j); 39 | for (j=i;; j++) { 40 | /* find the end of the link, or the end of the string */ 41 | if (text[j] == '\0' || 42 | text[j] == ' ') { 43 | g_string_append (string, ""); 46 | g_string_append_len (string, text+i, j-i); 47 | g_string_append (string, ""); 48 | break; 49 | } 50 | } 51 | } 52 | 53 | /* end of the string, dump what's left */ 54 | if (text[i] == '\0') { 55 | g_string_append_len (string, text+j, i-j); 56 | break; 57 | } 58 | } 59 | return g_string_free (string, FALSE); 60 | } 61 | 62 | const gchar * 63 | cd_colorspace_to_localised_string (CdColorspace colorspace) 64 | { 65 | if (colorspace == CD_COLORSPACE_RGB) { 66 | /* TRANSLATORS: this is the colorspace, e.g. red, green, blue */ 67 | return _("RGB"); 68 | } 69 | if (colorspace == CD_COLORSPACE_CMYK) { 70 | /* TRANSLATORS: this is the colorspace, e.g. cyan, magenta, yellow, black */ 71 | return _("CMYK"); 72 | } 73 | if (colorspace == CD_COLORSPACE_GRAY) { 74 | /* TRANSLATORS: this is the colorspace type */ 75 | return _("gray"); 76 | } 77 | return NULL; 78 | } 79 | 80 | static CdPixelFormat 81 | gcm_utils_get_pixel_format (GdkPixbuf *pixbuf) 82 | { 83 | guint bits; 84 | CdPixelFormat format = CD_PIXEL_FORMAT_UNKNOWN; 85 | 86 | /* no alpha channel */ 87 | bits = gdk_pixbuf_get_bits_per_sample (pixbuf); 88 | if (!gdk_pixbuf_get_has_alpha (pixbuf) && bits == 8) { 89 | format = CD_PIXEL_FORMAT_RGB24; 90 | goto out; 91 | } 92 | 93 | /* alpha channel */ 94 | if (bits == 8) { 95 | format = CD_PIXEL_FORMAT_RGBA32; 96 | goto out; 97 | } 98 | out: 99 | return format; 100 | } 101 | 102 | gboolean 103 | gcm_utils_image_convert (GtkImage *image, 104 | CdIcc *input, 105 | CdIcc *abstract, 106 | CdIcc *output, 107 | GError **error) 108 | { 109 | CdPixelFormat pixel_format; 110 | g_autoptr(CdTransform) transform = NULL; 111 | GdkPixbuf *pixbuf; 112 | GdkPixbuf *original_pixbuf; 113 | gboolean ret = TRUE; 114 | guchar *data; 115 | guint bpp; 116 | 117 | /* get pixbuf */ 118 | pixbuf = gtk_image_get_pixbuf (image); 119 | if (pixbuf == NULL) 120 | return FALSE; 121 | 122 | /* work out the pixel format */ 123 | pixel_format = gcm_utils_get_pixel_format (pixbuf); 124 | if (pixel_format == CD_PIXEL_FORMAT_UNKNOWN) { 125 | ret = FALSE; 126 | g_set_error_literal (error, 1, 0, "format not supported"); 127 | return FALSE; 128 | } 129 | 130 | /* get a copy of the original image, *not* a ref */ 131 | original_pixbuf = g_object_get_data (G_OBJECT (pixbuf), "GcmImageOld"); 132 | if (original_pixbuf == NULL) { 133 | data = g_memdup (gdk_pixbuf_get_pixels (pixbuf), 134 | gdk_pixbuf_get_bits_per_sample (pixbuf) * 135 | gdk_pixbuf_get_rowstride (pixbuf) * 136 | gdk_pixbuf_get_height (pixbuf) / 8); 137 | original_pixbuf = gdk_pixbuf_new_from_data (data, 138 | gdk_pixbuf_get_colorspace (pixbuf), 139 | gdk_pixbuf_get_has_alpha (pixbuf), 140 | gdk_pixbuf_get_bits_per_sample (pixbuf), 141 | gdk_pixbuf_get_width (pixbuf), 142 | gdk_pixbuf_get_height (pixbuf), 143 | gdk_pixbuf_get_rowstride (pixbuf), 144 | (GdkPixbufDestroyNotify) g_free, NULL); 145 | g_object_set_data_full (G_OBJECT (pixbuf), "GcmImageOld", 146 | original_pixbuf, 147 | (GDestroyNotify) g_object_unref); 148 | } 149 | 150 | /* convert in-place */ 151 | transform = cd_transform_new (); 152 | cd_transform_set_input_icc (transform, input); 153 | cd_transform_set_abstract_icc (transform, abstract); 154 | cd_transform_set_output_icc (transform, output); 155 | cd_transform_set_rendering_intent (transform, CD_RENDERING_INTENT_PERCEPTUAL); 156 | cd_transform_set_input_pixel_format (transform, pixel_format); 157 | cd_transform_set_output_pixel_format (transform, pixel_format); 158 | bpp = gdk_pixbuf_get_rowstride (pixbuf) / gdk_pixbuf_get_width (pixbuf); 159 | ret = cd_transform_process (transform, 160 | gdk_pixbuf_get_pixels (original_pixbuf), 161 | gdk_pixbuf_get_pixels (pixbuf), 162 | gdk_pixbuf_get_width (pixbuf), 163 | gdk_pixbuf_get_height (pixbuf), 164 | gdk_pixbuf_get_rowstride (pixbuf) / bpp, 165 | NULL, 166 | error); 167 | if (!ret) 168 | return FALSE; 169 | 170 | /* refresh */ 171 | g_object_ref (pixbuf); 172 | gtk_image_set_from_pixbuf (image, pixbuf); 173 | g_object_unref (pixbuf); 174 | return TRUE; 175 | } 176 | -------------------------------------------------------------------------------- /data/icons/render-icons.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import os 4 | import sys 5 | import xml.sax 6 | import subprocess 7 | 8 | INKSCAPE = '/usr/bin/inkscape' 9 | SRC = os.path.join('.', 'src') 10 | 11 | inkscape_process = None 12 | 13 | def wait_for_prompt(process, command=None): 14 | if command is not None: 15 | process.stdin.write(command+'\n') 16 | 17 | output = process.stdout.read(1) 18 | output += process.stdout.read(1) 19 | 20 | while output != "\n>": 21 | output = output[-1:] 22 | output += process.stdout.read(1) 23 | 24 | def start_inkscape(): 25 | process = subprocess.Popen([INKSCAPE, '--shell'], bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 26 | wait_for_prompt(process) 27 | return process 28 | 29 | def inkscape_render_rect(icon_file, rect, output_file): 30 | global inkscape_process 31 | if inkscape_process is None: 32 | inkscape_process = start_inkscape() 33 | wait_for_prompt(inkscape_process, '%s -i %s -e %s' % (icon_file, rect, output_file)) 34 | 35 | class ContentHandler(xml.sax.ContentHandler): 36 | ROOT = 0 37 | SVG = 1 38 | LAYER = 2 39 | OTHER = 3 40 | TEXT = 4 41 | def __init__(self, path, force=False): 42 | self.stack = [self.ROOT] 43 | self.inside = [self.ROOT] 44 | self.path = path 45 | self.rects = [] 46 | self.state = self.ROOT 47 | self.chars = "" 48 | self.force = force 49 | 50 | def endDocument(self): 51 | pass 52 | 53 | def startElement(self, name, attrs): 54 | if self.inside[-1] == self.ROOT: 55 | if name == "svg": 56 | self.stack.append(self.SVG) 57 | self.inside.append(self.SVG) 58 | return 59 | elif self.inside[-1] == self.SVG: 60 | if (name == "g" and attrs.has_key('inkscape:groupmode') and attrs.has_key('inkscape:label') 61 | and attrs['inkscape:groupmode'] == 'layer' and attrs['inkscape:label'].startswith('baseplate')): 62 | self.stack.append(self.LAYER) 63 | self.inside.append(self.LAYER) 64 | self.context = None 65 | self.icon_name = None 66 | self.rects = [] 67 | return 68 | elif self.inside[-1] == self.LAYER: 69 | if name == "text" and attrs.has_key('inkscape:label') and attrs['inkscape:label'] == 'context': 70 | self.stack.append(self.TEXT) 71 | self.inside.append(self.TEXT) 72 | self.text='context' 73 | self.chars = "" 74 | return 75 | elif name == "text" and attrs.has_key('inkscape:label') and attrs['inkscape:label'] == 'icon-name': 76 | self.stack.append(self.TEXT) 77 | self.inside.append(self.TEXT) 78 | self.text='icon-name' 79 | self.chars = "" 80 | return 81 | elif name == "rect": 82 | self.rects.append(attrs) 83 | 84 | self.stack.append(self.OTHER) 85 | 86 | 87 | def endElement(self, name): 88 | stacked = self.stack.pop() 89 | if self.inside[-1] == stacked: 90 | self.inside.pop() 91 | 92 | if stacked == self.TEXT and self.text is not None: 93 | assert self.text in ['context', 'icon-name'] 94 | if self.text == 'context': 95 | self.context = self.chars 96 | elif self.text == 'icon-name': 97 | self.icon_name = self.chars 98 | self.text = None 99 | elif stacked == self.LAYER: 100 | assert self.icon_name 101 | assert self.context 102 | print '%s %s' % (self.context, self.icon_name) 103 | for rect in self.rects: 104 | width = rect['width'] 105 | height = rect['height'] 106 | id = rect['id'] 107 | 108 | dir = os.path.join("icons", "%sx%s" % (width, height), self.context) 109 | outfile = os.path.join(dir, self.icon_name+'.png') 110 | if not os.path.exists(dir): 111 | os.makedirs(dir) 112 | # Do a time based check! 113 | if self.force or not os.path.exists(outfile): 114 | inkscape_render_rect(self.path, id, outfile) 115 | sys.stdout.write('.') 116 | else: 117 | stat_in = os.stat(self.path) 118 | stat_out = os.stat(outfile) 119 | if stat_in.st_mtime > stat_out.st_mtime: 120 | inkscape_render_rect(self.path, id, outfile) 121 | sys.stdout.write('.') 122 | else: 123 | sys.stdout.write('-') 124 | sys.stdout.flush() 125 | sys.stdout.write('\n') 126 | sys.stdout.flush() 127 | 128 | def characters(self, chars): 129 | self.chars += chars.strip() 130 | 131 | if len(sys.argv) == 1: 132 | if not os.path.exists('icons'): 133 | os.mkdir('icons') 134 | print 'Rendering from SVGs in %s' % SRC 135 | for file in os.listdir(SRC): 136 | if file[-4:] == '.svg': 137 | file = os.path.join(SRC, file) 138 | handler = ContentHandler(file) 139 | xml.sax.parse(open(file), handler) 140 | else: 141 | file = os.path.join(SRC, sys.argv[1] + '.svg') 142 | if os.path.exists(os.path.join(file)): 143 | handler = ContentHandler(file, True) 144 | xml.sax.parse(open(file), handler) 145 | else: 146 | print "Error: No such file %s" % file 147 | sys.exit(1) 148 | 149 | 150 | -------------------------------------------------------------------------------- /src/gcm-cell-renderer-profile-text.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | #include "gcm-cell-renderer-profile-text.h" 15 | #include "gcm-utils.h" 16 | 17 | enum { 18 | PROP_0, 19 | PROP_PROFILE, 20 | PROP_IS_DEFAULT, 21 | PROP_LAST 22 | }; 23 | 24 | G_DEFINE_TYPE (GcmCellRendererProfileText, gcm_cell_renderer_profile_text, GTK_TYPE_CELL_RENDERER_TEXT) 25 | 26 | static gpointer parent_class = NULL; 27 | 28 | static void 29 | gcm_cell_renderer_profile_text_get_property (GObject *object, guint param_id, 30 | GValue *value, GParamSpec *pspec) 31 | { 32 | GcmCellRendererProfileText *renderer = GCM_CELL_RENDERER_PROFILE_TEXT (object); 33 | 34 | switch (param_id) { 35 | case PROP_PROFILE: 36 | g_value_set_object (value, renderer->profile); 37 | break; 38 | case PROP_IS_DEFAULT: 39 | g_value_set_boolean (value, renderer->is_default); 40 | break; 41 | default: 42 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); 43 | break; 44 | } 45 | } 46 | 47 | static GString * 48 | gcm_cell_renderer_get_profile_text (CdProfile *profile) 49 | { 50 | CdColorspace colorspace; 51 | const gchar *id; 52 | GString *string; 53 | g_autofree gchar *markup = NULL; 54 | 55 | if (profile == NULL) { 56 | /* TRANSLATORS: this is when there is no profile for the device */ 57 | return g_string_new (_("No profile")); 58 | } 59 | 60 | /* add profile description */ 61 | id = cd_profile_get_title (profile); 62 | if (id != NULL && id[0] != '\0') { 63 | markup = g_markup_escape_text (id, -1); 64 | string = g_string_new (markup); 65 | goto out; 66 | } 67 | 68 | /* some meta profiles do not have ICC profiles */ 69 | colorspace = cd_profile_get_colorspace (profile); 70 | if (colorspace != CD_COLORSPACE_UNKNOWN) { 71 | string = g_string_new (NULL); 72 | g_string_append_printf (string, 73 | _("Default %s"), 74 | cd_colorspace_to_localised_string (colorspace)); 75 | goto out; 76 | } 77 | 78 | /* fall back to ID, ick */ 79 | string = g_string_new (cd_profile_get_id (profile)); 80 | out: 81 | 82 | /* any source prefix? */ 83 | id = cd_profile_get_metadata_item (profile, 84 | CD_PROFILE_METADATA_DATA_SOURCE); 85 | if (g_strcmp0 (id, CD_PROFILE_METADATA_DATA_SOURCE_EDID) == 0) { 86 | /* TRANSLATORS: this is a profile prefix to signify the 87 | * profile has been auto-generated for this hardware */ 88 | g_string_prepend (string, _("Default: ")); 89 | } 90 | if (g_strcmp0 (id, CD_PROFILE_METADATA_DATA_SOURCE_STANDARD) == 0) { 91 | /* TRANSLATORS: this is a profile prefix to signify the 92 | * profile his a standard space like AdobeRGB */ 93 | g_string_prepend (string, _("Colorspace: ")); 94 | } 95 | if (g_strcmp0 (id, CD_PROFILE_METADATA_DATA_SOURCE_TEST) == 0) { 96 | /* TRANSLATORS: this is a profile prefix to signify the 97 | * profile is a test profile */ 98 | g_string_prepend (string, _("Test profile: ")); 99 | } 100 | return string; 101 | } 102 | 103 | static void 104 | gcm_cell_renderer_set_markup (GcmCellRendererProfileText *renderer) 105 | { 106 | GString *string; 107 | 108 | /* do we have a profile to load? */ 109 | string = gcm_cell_renderer_get_profile_text (renderer->profile); 110 | 111 | /* this is the default profile */ 112 | if (renderer->is_default) { 113 | g_string_prepend (string, ""); 114 | g_string_append (string, ""); 115 | } 116 | 117 | /* assign */ 118 | g_free (renderer->markup); 119 | renderer->markup = g_string_free (string, FALSE); 120 | g_object_set (renderer, "markup", renderer->markup, NULL); 121 | } 122 | 123 | static void 124 | gcm_cell_renderer_profile_text_set_property (GObject *object, guint param_id, 125 | const GValue *value, GParamSpec *pspec) 126 | { 127 | GcmCellRendererProfileText *renderer = GCM_CELL_RENDERER_PROFILE_TEXT (object); 128 | 129 | switch (param_id) { 130 | case PROP_PROFILE: 131 | if (renderer->profile != NULL) 132 | g_object_unref (renderer->profile); 133 | renderer->profile = g_value_dup_object (value); 134 | gcm_cell_renderer_set_markup (renderer); 135 | break; 136 | case PROP_IS_DEFAULT: 137 | renderer->is_default = g_value_get_boolean (value); 138 | gcm_cell_renderer_set_markup (renderer); 139 | break; 140 | default: 141 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); 142 | break; 143 | } 144 | } 145 | 146 | static void 147 | gcm_cell_renderer_finalize (GObject *object) 148 | { 149 | GcmCellRendererProfileText *renderer; 150 | renderer = GCM_CELL_RENDERER_PROFILE_TEXT (object); 151 | g_free (renderer->markup); 152 | if (renderer->profile != NULL) 153 | g_object_unref (renderer->profile); 154 | G_OBJECT_CLASS (parent_class)->finalize (object); 155 | } 156 | 157 | static void 158 | gcm_cell_renderer_profile_text_class_init (GcmCellRendererProfileTextClass *class) 159 | { 160 | GObjectClass *object_class = G_OBJECT_CLASS (class); 161 | object_class->finalize = gcm_cell_renderer_finalize; 162 | 163 | parent_class = g_type_class_peek_parent (class); 164 | 165 | object_class->get_property = gcm_cell_renderer_profile_text_get_property; 166 | object_class->set_property = gcm_cell_renderer_profile_text_set_property; 167 | 168 | g_object_class_install_property (object_class, PROP_PROFILE, 169 | g_param_spec_object ("profile", "PROFILE", 170 | "PROFILE", CD_TYPE_PROFILE, G_PARAM_READWRITE)); 171 | g_object_class_install_property (object_class, PROP_IS_DEFAULT, 172 | g_param_spec_boolean ("is-default", "IS_DEFAULT", 173 | "IS_DEFAULT", FALSE, G_PARAM_READWRITE)); 174 | } 175 | 176 | static void 177 | gcm_cell_renderer_profile_text_init (GcmCellRendererProfileText *renderer) 178 | { 179 | renderer->is_default = FALSE; 180 | renderer->profile = NULL; 181 | renderer->markup = NULL; 182 | } 183 | 184 | GtkCellRenderer * 185 | gcm_cell_renderer_profile_text_new (void) 186 | { 187 | return g_object_new (GCM_TYPE_CELL_RENDERER_PROFILE_TEXT, NULL); 188 | } 189 | 190 | -------------------------------------------------------------------------------- /src/gcm-self-test.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2007-2015 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "gcm-cie-widget.h" 16 | #include "gcm-debug.h" 17 | #include "gcm-gamma-widget.h" 18 | #include "gcm-trc-widget.h" 19 | #include "gcm-utils.h" 20 | 21 | static void 22 | gcm_test_cie_widget_func (void) 23 | { 24 | GtkWidget *widget; 25 | GtkWidget *image; 26 | GtkWidget *dialog; 27 | GtkWidget *vbox; 28 | gboolean ret; 29 | gint response; 30 | CdColorYxy white_Yxy; 31 | CdColorYxy red_Yxy; 32 | CdColorYxy green_Yxy; 33 | CdColorYxy blue_Yxy; 34 | g_autoptr(CdColorXYZ) blue = NULL; 35 | g_autoptr(CdColorXYZ) green = NULL; 36 | g_autoptr(CdColorXYZ) red = NULL; 37 | g_autoptr(CdColorXYZ) white = NULL; 38 | g_autoptr(CdIcc) profile = NULL; 39 | g_autoptr(GFile) file = NULL; 40 | 41 | widget = gcm_cie_widget_new (); 42 | g_assert (widget != NULL); 43 | 44 | profile = cd_icc_new (); 45 | file = g_file_new_for_path (TESTDATADIR "/bluish.icc"); 46 | ret = cd_icc_load_file (profile, file, CD_ICC_LOAD_FLAGS_NONE, NULL, NULL); 47 | g_assert (ret); 48 | g_object_get (profile, 49 | "white", &white, 50 | "red", &red, 51 | "green", &green, 52 | "blue", &blue, 53 | NULL); 54 | 55 | cd_color_xyz_to_yxy (white, &white_Yxy); 56 | cd_color_xyz_to_yxy (red, &red_Yxy); 57 | cd_color_xyz_to_yxy (green, &green_Yxy); 58 | cd_color_xyz_to_yxy (blue, &blue_Yxy); 59 | 60 | g_object_set (widget, 61 | "red", &red_Yxy, 62 | "green", &green_Yxy, 63 | "blue", &blue_Yxy, 64 | "white", &white_Yxy, 65 | NULL); 66 | 67 | /* show in a dialog as an example */ 68 | dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Does CIE widget match\nthe picture below?"); 69 | image = gtk_image_new_from_file (TESTDATADIR "/cie-widget.png"); 70 | vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); 71 | gtk_box_pack_end (GTK_BOX(vbox), widget, TRUE, TRUE, 12); 72 | gtk_box_pack_end (GTK_BOX(vbox), image, TRUE, TRUE, 12); 73 | gtk_widget_set_size_request (widget, 300, 300); 74 | gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); 75 | gtk_widget_show (widget); 76 | gtk_widget_show (image); 77 | 78 | response = gtk_dialog_run (GTK_DIALOG (dialog)); 79 | 80 | g_assert ((response == GTK_RESPONSE_YES)); 81 | 82 | gtk_widget_destroy (dialog); 83 | } 84 | 85 | static void 86 | gcm_test_gamma_widget_func (void) 87 | { 88 | GtkWidget *widget; 89 | GtkWidget *image; 90 | GtkWidget *dialog; 91 | GtkWidget *vbox; 92 | gint response; 93 | 94 | widget = gcm_gamma_widget_new (); 95 | g_assert (widget != NULL); 96 | 97 | g_object_set (widget, 98 | "color-light", 0.5f, 99 | "color-dark", 0.0f, 100 | "color-red", 0.25f, 101 | "color-green", 0.25f, 102 | "color-blue", 0.25f, 103 | NULL); 104 | 105 | /* show in a dialog as an example */ 106 | dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Does GAMMA widget match\nthe picture below?"); 107 | image = gtk_image_new_from_file (TESTDATADIR "/gamma-widget.png"); 108 | vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); 109 | gtk_box_pack_end (GTK_BOX(vbox), widget, TRUE, TRUE, 12); 110 | gtk_box_pack_end (GTK_BOX(vbox), image, TRUE, TRUE, 12); 111 | gtk_widget_set_size_request (widget, 300, 300); 112 | gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); 113 | gtk_widget_show (widget); 114 | gtk_widget_show (image); 115 | 116 | response = gtk_dialog_run (GTK_DIALOG (dialog)); 117 | 118 | g_assert ((response == GTK_RESPONSE_YES)); 119 | 120 | gtk_widget_destroy (dialog); 121 | } 122 | 123 | static void 124 | gcm_test_trc_widget_func (void) 125 | { 126 | GtkWidget *widget; 127 | GtkWidget *image; 128 | GtkWidget *dialog; 129 | GtkWidget *vbox; 130 | gboolean ret; 131 | gint response; 132 | g_autoptr(CdIcc) profile = NULL; 133 | g_autoptr(GFile) file = NULL; 134 | g_autoptr(GPtrArray) clut = NULL; 135 | 136 | widget = gcm_trc_widget_new (); 137 | g_assert (widget != NULL); 138 | 139 | profile = cd_icc_new (); 140 | file = g_file_new_for_path (TESTDATADIR "/AdobeGammaTest.icm"); 141 | ret = cd_icc_load_file (profile, file, CD_ICC_LOAD_FLAGS_NONE, NULL, NULL); 142 | g_assert (ret); 143 | clut = cd_icc_get_vcgt (profile, 256, NULL); 144 | g_object_set (widget, 145 | "data", clut, 146 | NULL); 147 | 148 | /* show in a dialog as an example */ 149 | dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Does TRC widget match\nthe picture below?"); 150 | image = gtk_image_new_from_file (TESTDATADIR "/trc-widget.png"); 151 | vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); 152 | gtk_box_pack_end (GTK_BOX(vbox), widget, TRUE, TRUE, 12); 153 | gtk_box_pack_end (GTK_BOX(vbox), image, TRUE, TRUE, 12); 154 | gtk_widget_set_size_request (widget, 300, 300); 155 | gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE); 156 | gtk_widget_show (widget); 157 | gtk_widget_show (image); 158 | 159 | response = gtk_dialog_run (GTK_DIALOG (dialog)); 160 | 161 | g_assert ((response == GTK_RESPONSE_YES)); 162 | 163 | gtk_widget_destroy (dialog); 164 | } 165 | 166 | static void 167 | gcm_test_utils_func (void) 168 | { 169 | g_autofree gchar *text = NULL; 170 | text = gcm_utils_linkify ("http://www.dave.org is text http://www.hughsie.com that needs to be linked to http://www.bbc.co.uk really"); 171 | g_assert_cmpstr (text, ==, "http://www.dave.org is text " 172 | "http://www.hughsie.com that needs to be linked to " 173 | "http://www.bbc.co.uk really"); 174 | } 175 | 176 | int 177 | main (int argc, char **argv) 178 | { 179 | gtk_init (&argc, &argv); 180 | g_test_init (&argc, &argv, NULL); 181 | 182 | /* setup manually as we have no GMainContext */ 183 | gcm_debug_setup (g_getenv ("VERBOSE") != NULL); 184 | 185 | g_test_add_func ("/color/utils", gcm_test_utils_func); 186 | if (g_test_thorough ()) { 187 | g_test_add_func ("/color/trc", gcm_test_trc_widget_func); 188 | g_test_add_func ("/color/cie", gcm_test_cie_widget_func); 189 | g_test_add_func ("/color/gamma_widget", gcm_test_gamma_widget_func); 190 | } 191 | 192 | return g_test_run (); 193 | } 194 | 195 | -------------------------------------------------------------------------------- /help/zh_HK/zh_HK.po: -------------------------------------------------------------------------------- 1 | # Chinese (Hong Kong) translation for gnome-color-manager. 2 | # Copyright (C) 2013 gnome-color-manager's COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # Cheng-Chia Tseng , 2013. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: gnome-color-manager master\n" 9 | "POT-Creation-Date: 2014-02-04 07:37+0000\n" 10 | "PO-Revision-Date: 2014-03-10 19:27+0800\n" 11 | "Last-Translator: Cheng-Chia Tseng \n" 12 | "Language-Team: Chinese (Hong Kong) \n" 13 | "Language: zh_TW\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Generator: Poedit 1.5.4\n" 18 | 19 | #. (itstool) path: p/link 20 | #: C/legal.xml:3 21 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 22 | msgstr "創用CC 姓名標示─相同方式分享 3.0 未本地化移植版授權條款" 23 | 24 | #. (itstool) path: license/p 25 | #: C/legal.xml:3 26 | msgid "This work is licensed under a <_:link-1/>." 27 | msgstr "本著作根據據 <_:link-1/> 方式授權。" 28 | 29 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 30 | msgctxt "_" 31 | msgid "translator-credits" 32 | msgstr "Cheng-Chia Tseng , 2013, 2014" 33 | 34 | #. (itstool) path: info/desc 35 | #: C/color-import-linux.page:9 36 | msgid "How to import an existing ICC profile using a Linux system." 37 | msgstr "如何使用 Linux 系統匯入既有的 ICC 描述檔。" 38 | 39 | #. (itstool) path: credit/name 40 | #: C/color-import-linux.page:11 C/color-import-windows.page:11 41 | #: C/color-import-osx.page:11 42 | msgid "Richard Hughes" 43 | msgstr "Richard Hughes" 44 | 45 | #. (itstool) path: page/title 46 | #: C/color-import-linux.page:17 47 | msgid "Installing an ICC profile on Linux" 48 | msgstr "在 Linux 上安裝 ICC 描述檔" 49 | 50 | #. (itstool) path: page/p 51 | #: C/color-import-linux.page:18 52 | msgid "" 53 | "If you have gnome-color-manager or colord-kde " 54 | "installed then just double click the .icc profile and click " 55 | "Import. You can then assign the new profile to an existing device " 56 | "using the System SettingsColor panel." 57 | msgstr "如果你有安裝 gnome-color-managercolord-kde,那麼只要雙點 .icc 描述檔,接着點按 匯入 即可。你可以使用 系統設定值顏色 面板,將新描述檔指派給現有的裝置使用。" 58 | 59 | #. (itstool) path: page/p 60 | #: C/color-import-linux.page:25 61 | msgid "" 62 | "Profile calibration curves are automatically loaded at login, or can be " 63 | "loaded for all users at startup if the Set for all users button " 64 | "is clicked." 65 | msgstr "登入時會自動載入描述檔校正曲線;如果點按 所有使用者皆可用,則系統初始啟動之時就會為所有使用者載入校正曲線。" 66 | 67 | #. (itstool) path: info/desc 68 | #: C/color-import-windows.page:9 69 | msgid "How to import an existing ICC profile using a Windows system." 70 | msgstr "如何使用 Windows 系統匯入既有的 ICC 描述檔。" 71 | 72 | #. (itstool) path: page/title 73 | #: C/color-import-windows.page:17 74 | msgid "Installing an ICC profile on Microsoft Windows" 75 | msgstr "在微軟 Windows 上安裝 ICC 描述檔" 76 | 77 | #. (itstool) path: page/p 78 | #: C/color-import-windows.page:18 79 | msgid "" 80 | "The method for assigning the profile to a device and also using the embedded " 81 | "calibration curves is different for each version of Microsoft Windows." 82 | msgstr "在不同的 Microsoft Windows 版本上,為裝置指派描述檔、以及使用內嵌校正曲線的方法並不相同。" 83 | 84 | #. (itstool) path: section/title 85 | #: C/color-import-windows.page:24 86 | msgid "Windows XP" 87 | msgstr "Windows XP" 88 | 89 | #. (itstool) path: section/p 90 | #: C/color-import-windows.page:25 91 | msgid "" 92 | "Right click on the profile in Windows Explorer and click Install " 93 | "profile. This copies the profile to the correct directory " 94 | "automatically." 95 | msgstr "" 96 | 97 | #. (itstool) path: section/p 98 | #: C/color-import-windows.page:29 99 | msgid "" 100 | "Then open Control CenterColor and add " 101 | "the profile to the device." 102 | msgstr "" 103 | 104 | #. (itstool) path: note/p 105 | #: C/color-import-windows.page:34 106 | msgid "" 107 | "If you are replacing an existing profile in Windows XP, the above shortcut " 108 | "does not work. The profiles must be manually copied to C:\\Windows" 109 | "\\system32\\spool\\drivers\\color for the original profile to be " 110 | "replaced." 111 | msgstr "" 112 | 113 | #. (itstool) path: section/p 114 | #: C/color-import-windows.page:42 115 | msgid "" 116 | "Windows XP requires a program to be run at startup to copy the profile " 117 | "calibration curves into the video card. This can be done using Adobe " 118 | "Gamma, LUT Loader or by using the free " 120 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 121 | "Color item to the control panel and allows the calibration curves " 122 | "from default profile to be easily set at each startup." 123 | msgstr "" 124 | 125 | #. (itstool) path: section/title 126 | #: C/color-import-windows.page:55 127 | msgid "Windows Vista" 128 | msgstr "Windows Vista" 129 | 130 | #. (itstool) path: section/p 131 | #: C/color-import-windows.page:56 132 | msgid "" 133 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 134 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 135 | "you may have to manually reload the ICC profile calibration curves. If you " 136 | "are using profiles with embedded calibration curves you have to be very " 137 | "careful the calibration state has not been cleared." 138 | msgstr "" 139 | 140 | #. (itstool) path: section/title 141 | #: C/color-import-windows.page:68 142 | msgid "Windows 7" 143 | msgstr "Windows 7" 144 | 145 | #. (itstool) path: section/p 146 | #: C/color-import-windows.page:69 147 | msgid "" 148 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 149 | "installed system-wide or specific to the user. They are however stored in " 150 | "the same place. Right click on the profile in Windows Explorer and click " 151 | "Install profile or copy the .icc profile to C:\\Windows" 152 | "\\system32\\spool\\drivers\\color." 153 | msgstr "" 154 | 155 | #. (itstool) path: section/p 156 | #: C/color-import-windows.page:76 157 | msgid "" 158 | "Open Control CenterColor Management " 159 | "and then add the profile to the system by clicking the Add " 160 | "button. Click on the Advanced tab and look for Display " 161 | "Calibration. Calibration curve loading is enabled by the Use " 162 | "Windows display calibration checkbox but it is not sensitive. This can " 163 | "be enabled by clicking on Change system defaults and then " 164 | "returning to the Advanced tab and then clicking the checkbox." 165 | msgstr "" 166 | 167 | #. (itstool) path: section/p 168 | #: C/color-import-windows.page:87 169 | msgid "" 170 | "Close the dialog and click Reload current calibrations to set the " 171 | "gamma ramps. The profile calibration curves should now be set for every boot." 172 | msgstr "" 173 | 174 | #. (itstool) path: info/desc 175 | #: C/color-import-osx.page:9 176 | msgid "How to import an existing ICC profile using an OS X system." 177 | msgstr "如何使用 OS X 系統匯入既有的 ICC 描述檔。" 178 | 179 | #. (itstool) path: page/title 180 | #: C/color-import-osx.page:17 181 | msgid "Installing an ICC profile on Apple OS X" 182 | msgstr "在 Apple OS X 上安裝 ICC 描述檔" 183 | 184 | #. (itstool) path: page/p 185 | #: C/color-import-osx.page:18 186 | msgid "" 187 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 188 | "installed system-wide or specific to the user. System wide profiles are " 189 | "stored in /Library/ColorSync/Profiles and user-specific " 190 | "profiles are stored in ~/Library/ColorSync/Profiles." 191 | msgstr "" 192 | 193 | #. (itstool) path: page/p 194 | #: C/color-import-osx.page:24 195 | msgid "" 196 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 198 | "device." 199 | msgstr "" 200 | -------------------------------------------------------------------------------- /help/zh_TW/zh_TW.po: -------------------------------------------------------------------------------- 1 | # Chinese (Taiwan) translation for gnome-color-manager. 2 | # Copyright (C) 2013 gnome-color-manager's COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # Cheng-Chia Tseng , 2013. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: gnome-color-manager master\n" 9 | "POT-Creation-Date: 2014-02-04 07:37+0000\n" 10 | "PO-Revision-Date: 2014-01-04 21:31+0800\n" 11 | "Last-Translator: Cheng-Chia Tseng \n" 12 | "Language-Team: Chinese (Taiwan) \n" 13 | "Language: zh_TW\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Generator: Poedit 1.5.4\n" 18 | 19 | #. (itstool) path: p/link 20 | #: C/legal.xml:3 21 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 22 | msgstr "創用CC 姓名標示─相同方式分享 3.0 未本地化移植版授權條款" 23 | 24 | #. (itstool) path: license/p 25 | #: C/legal.xml:3 26 | msgid "This work is licensed under a <_:link-1/>." 27 | msgstr "本著作依據 <_:link-1/> 方式授權。" 28 | 29 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 30 | msgctxt "_" 31 | msgid "translator-credits" 32 | msgstr "Cheng-Chia Tseng , 2013, 2014" 33 | 34 | #. (itstool) path: info/desc 35 | #: C/color-import-linux.page:9 36 | msgid "How to import an existing ICC profile using a Linux system." 37 | msgstr "如何使用 Linux 系統匯入既有的 ICC 描述檔。" 38 | 39 | #. (itstool) path: credit/name 40 | #: C/color-import-linux.page:11 C/color-import-windows.page:11 41 | #: C/color-import-osx.page:11 42 | msgid "Richard Hughes" 43 | msgstr "Richard Hughes" 44 | 45 | #. (itstool) path: page/title 46 | #: C/color-import-linux.page:17 47 | msgid "Installing an ICC profile on Linux" 48 | msgstr "在 Linux 上安裝 ICC 描述檔" 49 | 50 | #. (itstool) path: page/p 51 | #: C/color-import-linux.page:18 52 | msgid "" 53 | "If you have gnome-color-manager or colord-kde " 54 | "installed then just double click the .icc profile and click " 55 | "Import. You can then assign the new profile to an existing device " 56 | "using the System SettingsColor panel." 57 | msgstr "" 58 | "如果您有安裝 gnome-color-managercolord-kde,那麼只" 59 | "要雙點 .icc 描述檔,接著點按 匯入 即可。您可以使用 " 60 | "系統設定值顏色 面板,將新描述檔指派給" 61 | "現有的裝置使用。" 62 | 63 | #. (itstool) path: page/p 64 | #: C/color-import-linux.page:25 65 | msgid "" 66 | "Profile calibration curves are automatically loaded at login, or can be " 67 | "loaded for all users at startup if the Set for all users button " 68 | "is clicked." 69 | msgstr "" 70 | "登入時會自動載入描述檔校正曲線;如果點按 所有使用者皆可用,則系統" 71 | "初始啟動之時就會為所有使用者載入校正曲線。" 72 | 73 | #. (itstool) path: info/desc 74 | #: C/color-import-windows.page:9 75 | msgid "How to import an existing ICC profile using a Windows system." 76 | msgstr "如何使用 Windows 系統匯入既有的 ICC 描述檔。" 77 | 78 | #. (itstool) path: page/title 79 | #: C/color-import-windows.page:17 80 | msgid "Installing an ICC profile on Microsoft Windows" 81 | msgstr "在微軟 Windows 上安裝 ICC 描述檔" 82 | 83 | #. (itstool) path: page/p 84 | #: C/color-import-windows.page:18 85 | msgid "" 86 | "The method for assigning the profile to a device and also using the embedded " 87 | "calibration curves is different for each version of Microsoft Windows." 88 | msgstr "" 89 | "在不同的 Microsoft Windows 版本上,為裝置指派描述檔、以及使用內嵌校正曲線的方" 90 | "法並不相同。" 91 | 92 | #. (itstool) path: section/title 93 | #: C/color-import-windows.page:24 94 | msgid "Windows XP" 95 | msgstr "Windows XP" 96 | 97 | #. (itstool) path: section/p 98 | #: C/color-import-windows.page:25 99 | msgid "" 100 | "Right click on the profile in Windows Explorer and click Install " 101 | "profile. This copies the profile to the correct directory " 102 | "automatically." 103 | msgstr "" 104 | 105 | #. (itstool) path: section/p 106 | #: C/color-import-windows.page:29 107 | msgid "" 108 | "Then open Control CenterColor and add " 109 | "the profile to the device." 110 | msgstr "" 111 | 112 | #. (itstool) path: note/p 113 | #: C/color-import-windows.page:34 114 | msgid "" 115 | "If you are replacing an existing profile in Windows XP, the above shortcut " 116 | "does not work. The profiles must be manually copied to C:\\Windows" 117 | "\\system32\\spool\\drivers\\color for the original profile to be " 118 | "replaced." 119 | msgstr "" 120 | 121 | #. (itstool) path: section/p 122 | #: C/color-import-windows.page:42 123 | msgid "" 124 | "Windows XP requires a program to be run at startup to copy the profile " 125 | "calibration curves into the video card. This can be done using Adobe " 126 | "Gamma, LUT Loader or by using the free " 128 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 129 | "Color item to the control panel and allows the calibration curves " 130 | "from default profile to be easily set at each startup." 131 | msgstr "" 132 | 133 | #. (itstool) path: section/title 134 | #: C/color-import-windows.page:55 135 | msgid "Windows Vista" 136 | msgstr "Windows Vista" 137 | 138 | #. (itstool) path: section/p 139 | #: C/color-import-windows.page:56 140 | msgid "" 141 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 142 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 143 | "you may have to manually reload the ICC profile calibration curves. If you " 144 | "are using profiles with embedded calibration curves you have to be very " 145 | "careful the calibration state has not been cleared." 146 | msgstr "" 147 | 148 | #. (itstool) path: section/title 149 | #: C/color-import-windows.page:68 150 | msgid "Windows 7" 151 | msgstr "Windows 7" 152 | 153 | #. (itstool) path: section/p 154 | #: C/color-import-windows.page:69 155 | msgid "" 156 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 157 | "installed system-wide or specific to the user. They are however stored in " 158 | "the same place. Right click on the profile in Windows Explorer and click " 159 | "Install profile or copy the .icc profile to C:\\Windows" 160 | "\\system32\\spool\\drivers\\color." 161 | msgstr "" 162 | 163 | #. (itstool) path: section/p 164 | #: C/color-import-windows.page:76 165 | msgid "" 166 | "Open Control CenterColor Management " 167 | "and then add the profile to the system by clicking the Add " 168 | "button. Click on the Advanced tab and look for Display " 169 | "Calibration. Calibration curve loading is enabled by the Use " 170 | "Windows display calibration checkbox but it is not sensitive. This can " 171 | "be enabled by clicking on Change system defaults and then " 172 | "returning to the Advanced tab and then clicking the checkbox." 173 | msgstr "" 174 | 175 | #. (itstool) path: section/p 176 | #: C/color-import-windows.page:87 177 | msgid "" 178 | "Close the dialog and click Reload current calibrations to set the " 179 | "gamma ramps. The profile calibration curves should now be set for every boot." 180 | msgstr "" 181 | 182 | #. (itstool) path: info/desc 183 | #: C/color-import-osx.page:9 184 | msgid "How to import an existing ICC profile using an OS X system." 185 | msgstr "如何使用 OS X 系統匯入既有的 ICC 描述檔。" 186 | 187 | #. (itstool) path: page/title 188 | #: C/color-import-osx.page:17 189 | msgid "Installing an ICC profile on Apple OS X" 190 | msgstr "在 Apple OS X 上安裝 ICC 描述檔" 191 | 192 | #. (itstool) path: page/p 193 | #: C/color-import-osx.page:18 194 | msgid "" 195 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 196 | "installed system-wide or specific to the user. System wide profiles are " 197 | "stored in /Library/ColorSync/Profiles and user-specific " 198 | "profiles are stored in ~/Library/ColorSync/Profiles." 199 | msgstr "" 200 | 201 | #. (itstool) path: page/p 202 | #: C/color-import-osx.page:24 203 | msgid "" 204 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 206 | "device." 207 | msgstr "" 208 | -------------------------------------------------------------------------------- /src/gcm-gamma-widget.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2009-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "gcm-gamma-widget.h" 15 | 16 | G_DEFINE_TYPE (GcmGammaWidget, gcm_gamma_widget, GTK_TYPE_DRAWING_AREA); 17 | #define GCM_GAMMA_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GCM_TYPE_GAMMA_WIDGET, GcmGammaWidgetPrivate)) 18 | 19 | struct GcmGammaWidgetPrivate 20 | { 21 | gdouble color_light; 22 | gdouble color_dark; 23 | gdouble color_red; 24 | gdouble color_green; 25 | gdouble color_blue; 26 | guint chart_width; 27 | guint chart_height; 28 | }; 29 | 30 | static gboolean gcm_gamma_widget_draw (GtkWidget *gamma, cairo_t *cr); 31 | static void gcm_gamma_widget_finalize (GObject *object); 32 | 33 | enum 34 | { 35 | PROP_0, 36 | PROP_COLOR_LIGHT, 37 | PROP_COLOR_DARK, 38 | PROP_COLOR_RED, 39 | PROP_COLOR_GREEN, 40 | PROP_COLOR_BLUE, 41 | PROP_LAST 42 | }; 43 | 44 | static void 45 | dkp_gamma_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) 46 | { 47 | GcmGammaWidget *gama = GCM_GAMMA_WIDGET (object); 48 | switch (prop_id) { 49 | case PROP_COLOR_LIGHT: 50 | g_value_set_double (value, gama->priv->color_light); 51 | break; 52 | case PROP_COLOR_DARK: 53 | g_value_set_double (value, gama->priv->color_dark); 54 | break; 55 | case PROP_COLOR_RED: 56 | g_value_set_double (value, gama->priv->color_red); 57 | break; 58 | case PROP_COLOR_GREEN: 59 | g_value_set_double (value, gama->priv->color_green); 60 | break; 61 | case PROP_COLOR_BLUE: 62 | g_value_set_double (value, gama->priv->color_blue); 63 | break; 64 | default: 65 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); 66 | break; 67 | } 68 | } 69 | 70 | static void 71 | dkp_gamma_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) 72 | { 73 | GcmGammaWidget *gama = GCM_GAMMA_WIDGET (object); 74 | 75 | switch (prop_id) { 76 | case PROP_COLOR_LIGHT: 77 | gama->priv->color_light = g_value_get_double (value); 78 | break; 79 | case PROP_COLOR_DARK: 80 | gama->priv->color_dark = g_value_get_double (value); 81 | break; 82 | case PROP_COLOR_RED: 83 | gama->priv->color_red = g_value_get_double (value); 84 | break; 85 | case PROP_COLOR_GREEN: 86 | gama->priv->color_green = g_value_get_double (value); 87 | break; 88 | case PROP_COLOR_BLUE: 89 | gama->priv->color_blue = g_value_get_double (value); 90 | break; 91 | default: 92 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); 93 | break; 94 | } 95 | 96 | /* refresh widget */ 97 | gtk_widget_hide (GTK_WIDGET (gama)); 98 | gtk_widget_show (GTK_WIDGET (gama)); 99 | } 100 | 101 | static void 102 | gcm_gamma_widget_class_init (GcmGammaWidgetClass *class) 103 | { 104 | GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); 105 | GObjectClass *object_class = G_OBJECT_CLASS (class); 106 | 107 | widget_class->draw = gcm_gamma_widget_draw; 108 | object_class->get_property = dkp_gamma_get_property; 109 | object_class->set_property = dkp_gamma_set_property; 110 | object_class->finalize = gcm_gamma_widget_finalize; 111 | 112 | g_type_class_add_private (class, sizeof (GcmGammaWidgetPrivate)); 113 | 114 | /* properties */ 115 | g_object_class_install_property (object_class, 116 | PROP_COLOR_LIGHT, 117 | g_param_spec_double ("color-light", NULL, NULL, 118 | 0.0f, G_MAXDOUBLE, 0.0f, 119 | G_PARAM_READWRITE)); 120 | g_object_class_install_property (object_class, 121 | PROP_COLOR_DARK, 122 | g_param_spec_double ("color-dark", NULL, NULL, 123 | 0.0f, G_MAXDOUBLE, 0.0f, 124 | G_PARAM_READWRITE)); 125 | g_object_class_install_property (object_class, 126 | PROP_COLOR_RED, 127 | g_param_spec_double ("color-red", NULL, NULL, 128 | 0.0f, G_MAXDOUBLE, 0.0f, 129 | G_PARAM_READWRITE)); 130 | g_object_class_install_property (object_class, 131 | PROP_COLOR_GREEN, 132 | g_param_spec_double ("color-green", NULL, NULL, 133 | 0.0f, G_MAXDOUBLE, 0.0f, 134 | G_PARAM_READWRITE)); 135 | g_object_class_install_property (object_class, 136 | PROP_COLOR_BLUE, 137 | g_param_spec_double ("color-blue", NULL, NULL, 138 | 0.0f, G_MAXDOUBLE, 0.0f, 139 | G_PARAM_READWRITE)); 140 | } 141 | 142 | static void 143 | gcm_gamma_widget_init (GcmGammaWidget *gama) 144 | { 145 | PangoContext *context; 146 | 147 | gama->priv = GCM_GAMMA_WIDGET_GET_PRIVATE (gama); 148 | gama->priv->color_light = 1.0f; 149 | gama->priv->color_dark = 0.0f; 150 | gama->priv->color_red = 0.5f; 151 | gama->priv->color_green = 0.5f; 152 | gama->priv->color_blue = 0.5f; 153 | 154 | /* do pango stuff */ 155 | context = gtk_widget_get_pango_context (GTK_WIDGET (gama)); 156 | pango_context_set_base_gravity (context, PANGO_GRAVITY_AUTO); 157 | } 158 | 159 | static void 160 | gcm_gamma_widget_finalize (GObject *object) 161 | { 162 | // GcmGammaWidget *gama = (GcmGammaWidget*) object; 163 | G_OBJECT_CLASS (gcm_gamma_widget_parent_class)->finalize (object); 164 | } 165 | 166 | static void 167 | gcm_gamma_widget_draw_lines (GcmGammaWidget *gama, cairo_t *cr) 168 | { 169 | guint i; 170 | gdouble dark; 171 | gdouble light; 172 | 173 | /* just copy */ 174 | dark = gama->priv->color_dark; 175 | light = gama->priv->color_light; 176 | 177 | cairo_save (cr); 178 | cairo_set_line_width (cr, 1); 179 | 180 | /* do horizontal lines */ 181 | for (i = 0; i < gama->priv->chart_height; i++) { 182 | 183 | /* set correct color */ 184 | if (i%2 == 0) { 185 | cairo_set_source_rgb (cr, dark, dark, dark); 186 | } else { 187 | cairo_set_source_rgb (cr, light, light, light); 188 | } 189 | cairo_move_to (cr, 0.5, i + 0.5f); 190 | cairo_line_to (cr, gama->priv->chart_width - 1, i + 0.5f); 191 | cairo_stroke (cr); 192 | } 193 | 194 | cairo_restore (cr); 195 | } 196 | 197 | static void 198 | gcm_gamma_widget_draw_box (GcmGammaWidget *gama, cairo_t *cr) 199 | { 200 | guint box_width; 201 | guint box_height; 202 | guint mid_x; 203 | guint mid_y; 204 | 205 | cairo_save (cr); 206 | cairo_set_line_width (cr, 1); 207 | 208 | /* half the size in either direction */ 209 | box_width = gama->priv->chart_width / 4; 210 | box_height = gama->priv->chart_height / 4; 211 | mid_x = gama->priv->chart_width / 2; 212 | mid_y = gama->priv->chart_height / 2; 213 | 214 | /* plain box */ 215 | cairo_set_source_rgb (cr, gama->priv->color_red, gama->priv->color_green, gama->priv->color_blue); 216 | cairo_rectangle (cr, mid_x - box_width + 0.5f, (((mid_y - box_height)/2)*2) + 0.0f, box_width*2 + 0.5f, (((box_height*2)/2)*2) + 1.0f); 217 | cairo_fill (cr); 218 | 219 | cairo_restore (cr); 220 | } 221 | 222 | static void 223 | gcm_gamma_widget_draw_bounding_box (cairo_t *cr, gint x, gint y, gint width, gint height) 224 | { 225 | /* background */ 226 | cairo_rectangle (cr, x, y, width, height); 227 | cairo_set_source_rgb (cr, 1, 1, 1); 228 | cairo_fill (cr); 229 | 230 | /* solid outline box */ 231 | cairo_rectangle (cr, x + 0.5f, y + 0.5f, width - 1, height - 1); 232 | cairo_set_source_rgb (cr, 0.1, 0.1, 0.1); 233 | cairo_set_line_width (cr, 1); 234 | cairo_stroke (cr); 235 | } 236 | 237 | static gboolean 238 | gcm_gamma_widget_draw (GtkWidget *gamma_widget, cairo_t *cr) 239 | { 240 | GtkAllocation allocation; 241 | 242 | GcmGammaWidget *gama = (GcmGammaWidget*) gamma_widget; 243 | g_return_val_if_fail (gama != NULL, FALSE); 244 | g_return_val_if_fail (GCM_IS_GAMMA_WIDGET (gama), FALSE); 245 | 246 | /* make size adjustment */ 247 | gtk_widget_get_allocation (gamma_widget, &allocation); 248 | if (allocation.height <= 5 || allocation.width <= 5) 249 | return FALSE; 250 | 251 | /* save */ 252 | gama->priv->chart_height = ((guint) (allocation.height / 2) * 2) - 1; 253 | gama->priv->chart_width = allocation.width; 254 | 255 | /* gamma background */ 256 | gcm_gamma_widget_draw_bounding_box (cr, 0, 0, gama->priv->chart_width, gama->priv->chart_height); 257 | gcm_gamma_widget_draw_lines (gama, cr); 258 | gcm_gamma_widget_draw_box (gama, cr); 259 | return FALSE; 260 | } 261 | 262 | GtkWidget * 263 | gcm_gamma_widget_new (void) 264 | { 265 | return g_object_new (GCM_TYPE_GAMMA_WIDGET, NULL); 266 | } 267 | 268 | -------------------------------------------------------------------------------- /src/gcm-import.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2009-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | 18 | #include "gcm-utils.h" 19 | #include "gcm-debug.h" 20 | 21 | static gboolean 22 | gcm_import_show_details (GtkWindow *window, 23 | gboolean is_profile_id, 24 | const gchar *data) 25 | { 26 | gboolean ret; 27 | guint xid; 28 | g_autoptr(GError) error = NULL; 29 | g_autoptr(GPtrArray) argv = NULL; 30 | 31 | /* spawn new viewer async and modal to this dialog */ 32 | argv = g_ptr_array_new_with_free_func (g_free); 33 | xid = gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET(window))); 34 | g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL)); 35 | g_ptr_array_add (argv, g_strdup_printf ("--parent-window=%u", xid)); 36 | if (is_profile_id) 37 | g_ptr_array_add (argv, g_strdup_printf ("--profile=%s", data)); 38 | else 39 | g_ptr_array_add (argv, g_strdup_printf ("--file=%s", data)); 40 | g_ptr_array_add (argv, NULL); 41 | ret = g_spawn_async (NULL, 42 | (gchar **) argv->pdata, 43 | NULL, 44 | 0, 45 | NULL, NULL, 46 | NULL, 47 | &error); 48 | 49 | if (!ret) 50 | g_warning ("failed to spawn viewer: %s", error->message); 51 | return ret; 52 | } 53 | 54 | int 55 | main (int argc, char **argv) 56 | { 57 | g_autoptr(CdClient) client = NULL; 58 | g_autoptr(CdProfile) profile_tmp = NULL; 59 | const gchar *copyright; 60 | const gchar *description; 61 | const gchar *title; 62 | const gchar *lang; 63 | gboolean ret; 64 | GOptionContext *context; 65 | GtkResponseType response; 66 | GtkWidget *dialog; 67 | g_autoptr(CdIcc) icc = NULL; 68 | g_autoptr(GError) error = NULL; 69 | g_autoptr(GFile) destination = NULL; 70 | g_autoptr(GFile) file = NULL; 71 | g_autoptr(GString) string = NULL; 72 | g_auto(GStrv) files = NULL; 73 | 74 | const GOptionEntry options[] = { 75 | { G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &files, 76 | /* TRANSLATORS: command line option: a list of catalogs to install */ 77 | _("ICC profile to install"), NULL }, 78 | { NULL} 79 | }; 80 | 81 | setlocale (LC_ALL, ""); 82 | 83 | bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 84 | bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 85 | textdomain (GETTEXT_PACKAGE); 86 | 87 | gtk_init (&argc, &argv); 88 | 89 | context = g_option_context_new ("gnome-color-manager import program"); 90 | g_option_context_add_main_entries (context, options, NULL); 91 | g_option_context_add_group (context, gcm_debug_get_option_group ()); 92 | g_option_context_add_group (context, gtk_get_option_group (TRUE)); 93 | g_option_context_parse (context, &argc, &argv, NULL); 94 | g_option_context_free (context); 95 | 96 | /* nothing sent */ 97 | if (files == NULL) { 98 | dialog = gtk_message_dialog_new (NULL, 99 | 0, 100 | GTK_MESSAGE_ERROR, 101 | GTK_BUTTONS_CLOSE, 102 | /* TRANSLATORS: nothing was specified on the command line */ 103 | _("No filename specified")); 104 | gtk_window_set_icon_name (GTK_WINDOW (dialog), 105 | GCM_STOCK_ICON); 106 | gtk_dialog_run (GTK_DIALOG (dialog)); 107 | gtk_widget_destroy (dialog); 108 | return EXIT_FAILURE; 109 | } 110 | 111 | /* load profile */ 112 | icc = cd_icc_new (); 113 | file = g_file_new_for_path (files[0]); 114 | ret = cd_icc_load_file (icc, file, 115 | CD_ICC_LOAD_FLAGS_FALLBACK_MD5, 116 | NULL, &error); 117 | if (!ret) { 118 | dialog = gtk_message_dialog_new (NULL, 119 | 0, 120 | GTK_MESSAGE_ERROR, 121 | GTK_BUTTONS_CLOSE, 122 | /* TRANSLATORS: could not read file */ 123 | _("Failed to open ICC profile")); 124 | gtk_window_set_icon_name (GTK_WINDOW (dialog), 125 | GCM_STOCK_ICON); 126 | gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), 127 | /* TRANSLATORS: parsing error */ 128 | _("Failed to parse file: %s"), 129 | error->message); 130 | gtk_dialog_run (GTK_DIALOG (dialog)); 131 | gtk_widget_destroy (dialog); 132 | return EXIT_FAILURE; 133 | } 134 | 135 | /* get data */ 136 | lang = g_getenv ("LANG"); 137 | description = cd_icc_get_description (icc, lang, NULL); 138 | copyright = cd_icc_get_copyright (icc, lang, NULL); 139 | 140 | /* create message */ 141 | string = g_string_new (""); 142 | /* TRANSLATORS: message text */ 143 | g_string_append_printf (string, _("Profile description: %s"), 144 | description != NULL ? description : files[0]); 145 | 146 | /* add copyright */ 147 | if (copyright != NULL) { 148 | if (g_str_has_prefix (copyright, "Copyright ")) 149 | copyright += 10; 150 | if (g_str_has_prefix (copyright, "Copyright, ")) 151 | copyright += 11; 152 | /* TRANSLATORS: message text */ 153 | g_string_append_printf (string, "\n%s %s", _("Profile copyright:"), copyright); 154 | } 155 | 156 | /* check file does't already exist as system-wide */ 157 | client = cd_client_new (); 158 | ret = cd_client_connect_sync (client, 159 | NULL, 160 | &error); 161 | if (!ret) { 162 | g_warning ("failed to connect to colord: %s", 163 | error->message); 164 | return EXIT_FAILURE; 165 | } 166 | 167 | profile_tmp = cd_client_find_profile_by_property_sync (client, 168 | CD_PROFILE_METADATA_FILE_CHECKSUM, 169 | cd_icc_get_checksum (icc), 170 | NULL, 171 | NULL); 172 | if (profile_tmp != NULL) { 173 | ret = cd_profile_connect_sync (profile_tmp, 174 | NULL, 175 | &error); 176 | if (!ret) { 177 | g_warning ("failed to connect to profile %s: %s", 178 | cd_profile_get_object_path (profile_tmp), 179 | error->message); 180 | return EXIT_FAILURE; 181 | } 182 | dialog = gtk_message_dialog_new (NULL, 183 | 0, 184 | GTK_MESSAGE_INFO, 185 | GTK_BUTTONS_CLOSE, 186 | /* TRANSLATORS: color profile already been installed */ 187 | _("Color profile is already imported")); 188 | gtk_window_set_icon_name (GTK_WINDOW (dialog), GCM_STOCK_ICON); 189 | gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", string->str); 190 | gtk_dialog_add_button (GTK_DIALOG (dialog), _("Show Details"), GTK_RESPONSE_HELP); 191 | response = gtk_dialog_run (GTK_DIALOG (dialog)); 192 | if (response == GTK_RESPONSE_HELP) { 193 | gcm_import_show_details (GTK_WINDOW (dialog), 194 | TRUE, 195 | cd_profile_get_id (profile_tmp)); 196 | goto try_harder; 197 | } 198 | gtk_widget_destroy (dialog); 199 | return EXIT_FAILURE; 200 | } 201 | 202 | /* get correct title */ 203 | switch (cd_icc_get_kind (icc)) { 204 | case CD_PROFILE_KIND_DISPLAY_DEVICE: 205 | /* TRANSLATORS: the profile type */ 206 | title = _("Import display color profile?"); 207 | break; 208 | case CD_PROFILE_KIND_OUTPUT_DEVICE: 209 | /* TRANSLATORS: the profile type */ 210 | title = _("Import device color profile?"); 211 | break; 212 | case CD_PROFILE_KIND_NAMED_COLOR: 213 | /* TRANSLATORS: the profile type */ 214 | title = _("Import named color profile?"); 215 | break; 216 | default: 217 | /* TRANSLATORS: the profile type */ 218 | title = _("Import color profile?"); 219 | break; 220 | } 221 | 222 | /* ask confirmation */ 223 | dialog = gtk_message_dialog_new (NULL, 224 | 0, 225 | GTK_MESSAGE_INFO, 226 | GTK_BUTTONS_CANCEL, 227 | "%s", 228 | title); 229 | gtk_window_set_icon_name (GTK_WINDOW (dialog), GCM_STOCK_ICON); 230 | gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", string->str); 231 | /* TRANSLATORS: button text */ 232 | gtk_dialog_add_button (GTK_DIALOG (dialog), _("Import"), GTK_RESPONSE_OK); 233 | gtk_dialog_add_button (GTK_DIALOG (dialog), _("Show Details"), GTK_RESPONSE_HELP); 234 | try_harder: 235 | response = gtk_dialog_run (GTK_DIALOG (dialog)); 236 | if (response == GTK_RESPONSE_HELP) { 237 | gcm_import_show_details (GTK_WINDOW (dialog), FALSE, files[0]); 238 | goto try_harder; 239 | } 240 | gtk_widget_destroy (dialog); 241 | 242 | /* not the correct response */ 243 | if (response != GTK_RESPONSE_OK) 244 | return EXIT_FAILURE; 245 | 246 | /* copy icc file to users profile path */ 247 | profile_tmp = cd_client_import_profile_sync (client, 248 | file, 249 | NULL, 250 | &error); 251 | if (profile_tmp == NULL) { 252 | dialog = gtk_message_dialog_new (NULL, 253 | 0, 254 | GTK_MESSAGE_ERROR, 255 | GTK_BUTTONS_CLOSE, 256 | /* TRANSLATORS: could not read file */ 257 | _("Failed to import file")); 258 | gtk_window_set_icon_name (GTK_WINDOW (dialog), GCM_STOCK_ICON); 259 | gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", error->message); 260 | gtk_dialog_run (GTK_DIALOG (dialog)); 261 | gtk_widget_destroy (dialog); 262 | return EXIT_FAILURE; 263 | } 264 | return EXIT_SUCCESS; 265 | } 266 | 267 | -------------------------------------------------------------------------------- /src/gcm-trc-widget.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2006-2010 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "gcm-trc-widget.h" 16 | 17 | G_DEFINE_TYPE (GcmTrcWidget, gcm_trc_widget, GTK_TYPE_DRAWING_AREA); 18 | #define GCM_TRC_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GCM_TYPE_TRC_WIDGET, GcmTrcWidgetPrivate)) 19 | #define GCM_TRC_WIDGET_FONT "Sans 8" 20 | 21 | struct GcmTrcWidgetPrivate 22 | { 23 | gboolean use_grid; 24 | GPtrArray *data; 25 | guint chart_width; 26 | guint chart_height; 27 | PangoLayout *layout; 28 | guint x_offset; 29 | guint y_offset; 30 | }; 31 | 32 | static gboolean gcm_trc_widget_draw (GtkWidget *trc, cairo_t *cr); 33 | static void gcm_trc_widget_finalize (GObject *object); 34 | 35 | enum 36 | { 37 | PROP_0, 38 | PROP_USE_GRID, 39 | PROP_DATA, 40 | PROP_LAST 41 | }; 42 | 43 | static void 44 | gcm_trc_widget_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) 45 | { 46 | GcmTrcWidget *trc = GCM_TRC_WIDGET (object); 47 | switch (prop_id) { 48 | case PROP_USE_GRID: 49 | g_value_set_boolean (value, trc->priv->use_grid); 50 | break; 51 | default: 52 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); 53 | break; 54 | } 55 | } 56 | 57 | static void 58 | gcm_trc_widget_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) 59 | { 60 | GcmTrcWidget *trc = GCM_TRC_WIDGET (object); 61 | 62 | switch (prop_id) { 63 | case PROP_USE_GRID: 64 | trc->priv->use_grid = g_value_get_boolean (value); 65 | break; 66 | case PROP_DATA: 67 | if (trc->priv->data != NULL) 68 | g_ptr_array_unref (trc->priv->data); 69 | trc->priv->data = g_ptr_array_ref (g_value_get_boxed (value)); 70 | break; 71 | default: 72 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); 73 | break; 74 | } 75 | 76 | /* refresh widget */ 77 | gtk_widget_hide (GTK_WIDGET (trc)); 78 | gtk_widget_show (GTK_WIDGET (trc)); 79 | } 80 | 81 | static void 82 | gcm_trc_widget_class_init (GcmTrcWidgetClass *class) 83 | { 84 | GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); 85 | GObjectClass *object_class = G_OBJECT_CLASS (class); 86 | 87 | widget_class->draw = gcm_trc_widget_draw; 88 | object_class->get_property = gcm_trc_widget_get_property; 89 | object_class->set_property = gcm_trc_widget_set_property; 90 | object_class->finalize = gcm_trc_widget_finalize; 91 | 92 | g_type_class_add_private (class, sizeof (GcmTrcWidgetPrivate)); 93 | 94 | /* properties */ 95 | g_object_class_install_property (object_class, 96 | PROP_USE_GRID, 97 | g_param_spec_boolean ("use-grid", NULL, NULL, 98 | TRUE, 99 | G_PARAM_READWRITE)); 100 | g_object_class_install_property (object_class, 101 | PROP_DATA, 102 | g_param_spec_boxed ("data", NULL, NULL, 103 | G_TYPE_PTR_ARRAY, 104 | G_PARAM_WRITABLE)); 105 | } 106 | 107 | static void 108 | gcm_trc_widget_init (GcmTrcWidget *trc) 109 | { 110 | PangoContext *context; 111 | PangoFontDescription *desc; 112 | 113 | trc->priv = GCM_TRC_WIDGET_GET_PRIVATE (trc); 114 | trc->priv->use_grid = TRUE; 115 | trc->priv->data = NULL; 116 | 117 | /* do pango stuff */ 118 | context = gtk_widget_get_pango_context (GTK_WIDGET (trc)); 119 | pango_context_set_base_gravity (context, PANGO_GRAVITY_AUTO); 120 | 121 | trc->priv->layout = pango_layout_new (context); 122 | desc = pango_font_description_from_string (GCM_TRC_WIDGET_FONT); 123 | pango_layout_set_font_description (trc->priv->layout, desc); 124 | pango_font_description_free (desc); 125 | } 126 | 127 | static void 128 | gcm_trc_widget_finalize (GObject *object) 129 | { 130 | GcmTrcWidget *trc = (GcmTrcWidget*) object; 131 | 132 | g_object_unref (trc->priv->layout); 133 | if (trc->priv->data != NULL) 134 | g_ptr_array_unref (trc->priv->data); 135 | G_OBJECT_CLASS (gcm_trc_widget_parent_class)->finalize (object); 136 | } 137 | 138 | static void 139 | gcm_trc_widget_draw_grid (GcmTrcWidget *trc, cairo_t *cr) 140 | { 141 | guint i; 142 | gdouble b; 143 | gdouble dotted[] = {1., 2.}; 144 | gdouble divwidth = (gdouble)trc->priv->chart_width / 10.0f; 145 | gdouble divheight = (gdouble)trc->priv->chart_height / 10.0f; 146 | 147 | cairo_save (cr); 148 | cairo_set_line_width (cr, 1); 149 | cairo_set_dash (cr, dotted, 2, 0.0); 150 | 151 | /* do vertical lines */ 152 | cairo_set_source_rgb (cr, 0.1, 0.1, 0.1); 153 | for (i=1; i<10; i++) { 154 | b = ((gdouble) i * divwidth); 155 | cairo_move_to (cr, (gint)b + 0.5f, 0); 156 | cairo_line_to (cr, (gint)b + 0.5f, trc->priv->chart_height); 157 | cairo_stroke (cr); 158 | } 159 | 160 | /* do horizontal lines */ 161 | for (i=1; i<10; i++) { 162 | b = ((gdouble) i * divheight); 163 | cairo_move_to (cr, 0, (gint)b + 0.5f); 164 | cairo_line_to (cr, trc->priv->chart_width, (int)b + 0.5f); 165 | cairo_stroke (cr); 166 | } 167 | 168 | cairo_restore (cr); 169 | } 170 | 171 | static void 172 | gcm_trc_widget_map_to_display (GcmTrcWidget *trc, gdouble x, gdouble y, gdouble *x_retval, gdouble *y_retval) 173 | { 174 | GcmTrcWidgetPrivate *priv = trc->priv; 175 | 176 | *x_retval = (x * (priv->chart_width - 1)) + priv->x_offset; 177 | *y_retval = ((priv->chart_height - 1) - y * (priv->chart_height - 1)) - priv->y_offset; 178 | } 179 | 180 | static void 181 | gcm_trc_widget_draw_line (GcmTrcWidget *trc, cairo_t *cr) 182 | { 183 | gdouble wx, wy; 184 | GcmTrcWidgetPrivate *priv = trc->priv; 185 | CdColorRGB *tmp; 186 | gfloat i; 187 | gfloat value; 188 | gfloat size; 189 | gfloat linewidth; 190 | 191 | /* nothing set yet */ 192 | if (priv->data == NULL) 193 | return; 194 | 195 | /* set according to widget width */ 196 | linewidth = priv->chart_width / 250.0f; 197 | size = priv->data->len; 198 | 199 | cairo_save (cr); 200 | 201 | /* do red */ 202 | cairo_set_line_width (cr, linewidth + 1.0f); 203 | cairo_set_source_rgb (cr, 0.5f, 0.0f, 0.0f); 204 | for (i = 0; i < size; i++) { 205 | tmp = g_ptr_array_index (priv->data, (guint) i); 206 | value = tmp->R; 207 | gcm_trc_widget_map_to_display (trc, i/(size-1), value, &wx, &wy); 208 | if (i == 0) 209 | cairo_move_to (cr, wx, wy+1); 210 | else 211 | cairo_line_to (cr, wx, wy+1); 212 | } 213 | cairo_stroke_preserve (cr); 214 | cairo_set_line_width (cr, linewidth); 215 | cairo_set_source_rgb (cr, 1.0f, 0.0f, 0.0f); 216 | cairo_stroke (cr); 217 | 218 | /* do green */ 219 | cairo_set_line_width (cr, linewidth + 1.0f); 220 | cairo_set_source_rgb (cr, 0.0f, 0.5f, 0.0f); 221 | for (i = 0; i < size; i++) { 222 | tmp = g_ptr_array_index (priv->data, (guint) i); 223 | value = tmp->G; 224 | gcm_trc_widget_map_to_display (trc, i/(size-1), value, &wx, &wy); 225 | if (i == 0) 226 | cairo_move_to (cr, wx, wy-1); 227 | else 228 | cairo_line_to (cr, wx, wy-1); 229 | } 230 | cairo_stroke_preserve (cr); 231 | cairo_set_line_width (cr, linewidth); 232 | cairo_set_source_rgb (cr, 0.0f, 1.0f, 0.0f); 233 | cairo_stroke (cr); 234 | 235 | /* do blue */ 236 | cairo_set_line_width (cr, linewidth + 1.0f); 237 | cairo_set_source_rgb (cr, 0.0f, 0.0f, 0.5f); 238 | for (i = 0; i < size; i++) { 239 | tmp = g_ptr_array_index (priv->data, (guint) i); 240 | value = tmp->B; 241 | gcm_trc_widget_map_to_display (trc, i/(size-1), value, &wx, &wy); 242 | if (i == 0) 243 | cairo_move_to (cr, wx, wy); 244 | else 245 | cairo_line_to (cr, wx, wy); 246 | } 247 | cairo_stroke_preserve (cr); 248 | cairo_set_line_width (cr, linewidth); 249 | cairo_set_source_rgb (cr, 0.0f, 0.0f, 1.0f); 250 | cairo_stroke (cr); 251 | 252 | cairo_restore (cr); 253 | } 254 | 255 | static void 256 | gcm_trc_widget_draw_bounding_box (cairo_t *cr, gint x, gint y, gint width, gint height) 257 | { 258 | /* background */ 259 | cairo_rectangle (cr, x, y, width, height); 260 | cairo_set_source_rgb (cr, 1, 1, 1); 261 | cairo_fill (cr); 262 | 263 | /* solid outline box */ 264 | cairo_rectangle (cr, x + 0.5f, y + 0.5f, width - 1, height - 1); 265 | cairo_set_source_rgb (cr, 0.1, 0.1, 0.1); 266 | cairo_set_line_width (cr, 1); 267 | cairo_stroke (cr); 268 | } 269 | 270 | static void 271 | gcm_trc_widget_draw_trc (GtkWidget *trc_widget, cairo_t *cr) 272 | { 273 | GtkAllocation allocation; 274 | 275 | GcmTrcWidget *trc = (GcmTrcWidget*) trc_widget; 276 | g_return_if_fail (trc != NULL); 277 | g_return_if_fail (GCM_IS_TRC_WIDGET (trc)); 278 | 279 | cairo_save (cr); 280 | 281 | /* make size adjustment */ 282 | gtk_widget_get_allocation (trc_widget, &allocation); 283 | trc->priv->chart_height = allocation.height; 284 | trc->priv->chart_width = allocation.width; 285 | trc->priv->x_offset = 1; 286 | trc->priv->y_offset = 1; 287 | 288 | /* trc background */ 289 | gcm_trc_widget_draw_bounding_box (cr, 0, 0, trc->priv->chart_width, trc->priv->chart_height); 290 | if (trc->priv->use_grid) 291 | gcm_trc_widget_draw_grid (trc, cr); 292 | 293 | gcm_trc_widget_draw_line (trc, cr); 294 | 295 | cairo_restore (cr); 296 | } 297 | 298 | static gboolean 299 | gcm_trc_widget_draw (GtkWidget *trc, cairo_t *cr) 300 | { 301 | gcm_trc_widget_draw_trc (trc, cr); 302 | return FALSE; 303 | } 304 | 305 | GtkWidget * 306 | gcm_trc_widget_new (void) 307 | { 308 | return g_object_new (GCM_TYPE_TRC_WIDGET, NULL); 309 | } 310 | 311 | -------------------------------------------------------------------------------- /help/zh_CN/zh_CN.po: -------------------------------------------------------------------------------- 1 | # Chinese (China) translation for gnome-color-manager. 2 | # Copyright (C) 2012 gnome-color-manager's authors and contributors. 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # Michael Lin , 2012. 5 | # Wylmer Wang , 2012. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: gnome-color-manager master\n" 10 | "POT-Creation-Date: 2012-07-31 13:52+0000\n" 11 | "PO-Revision-Date: 2012-08-05 10:46+0800\n" 12 | "Last-Translator: Wylmer Wang \n" 13 | "Language-Team: Chinese (China) \n" 14 | "Language: zh_CN\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | 19 | #: C/legal.xml:3(p/link) 20 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 21 | msgstr "署名-相同方式共享 3.0 Unported 许可协议" 22 | 23 | #: C/legal.xml:3(license/p) 24 | msgid "This work is licensed under a <_:link-1/>." 25 | msgstr "此作品以 <_:link-1/> 许可协议发布。" 26 | 27 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 28 | msgctxt "_" 29 | msgid "translator-credits" 30 | msgstr "" 31 | "Michael Lin , 2012\n" 32 | "Wylmer Wang , 2012" 33 | 34 | #: C/color-import-linux.page:9(info/desc) 35 | msgid "How to import an existing ICC profile using a Linux system." 36 | msgstr "如何在 Linux 系统上导入已有的 ICC 色彩配置文件。" 37 | 38 | #: C/color-import-linux.page:11(credit/name) 39 | #: C/color-import-windows.page:11(credit/name) 40 | #: C/color-import-osx.page:11(credit/name) 41 | msgid "Richard Hughes" 42 | msgstr "Richard Hughes" 43 | 44 | #: C/color-import-linux.page:17(page/title) 45 | msgid "Installing an ICC profile on Linux" 46 | msgstr "在 Linux 上安装 ICC 色彩配置文件" 47 | 48 | #: C/color-import-linux.page:18(page/p) 49 | msgid "" 50 | "If you have gnome-color-manager or colord-kde " 51 | "installed then just double click the .icc profile and click " 52 | "Import. You can then assign the new profile to an existing device " 53 | "using the System SettingsColor panel." 54 | msgstr "" 55 | "如果您已经安装了 gnome-color-manager 或者 colord-kde," 56 | "请直接双击 .icc 色彩配置文件并点击导入。您可以用 " 57 | "系统设置色彩面板将一个新配置分配到现有" 58 | "的设备上。" 59 | 60 | #: C/color-import-linux.page:25(page/p) 61 | msgid "" 62 | "Profile calibration curves are automatically loaded at login, or can be " 63 | "loaded for all users at startup if the Set for all users button " 64 | "is clicked." 65 | msgstr "" 66 | "配置文件校准曲线是在登录时自动加载的。如果点击了 为所有用户设置 按" 67 | "钮,在开机时将为所有用户加载。" 68 | 69 | #: C/color-import-windows.page:9(info/desc) 70 | msgid "How to import an existing ICC profile using a Windows system." 71 | msgstr "如何用 Windows 系统导入已有的 ICC 色彩配置文件。" 72 | 73 | #: C/color-import-windows.page:17(page/title) 74 | msgid "Installing an ICC profile on Microsoft Windows" 75 | msgstr "在 Microsoft Windows 系统上安装 ICC 配置文件" 76 | 77 | #: C/color-import-windows.page:18(page/p) 78 | msgid "" 79 | "The method for assigning the profile to a device and also using the embedded " 80 | "calibration curves is different for each version of Microsoft Windows." 81 | msgstr "" 82 | "向设备分配色彩配置文件和使用校准曲线的方法随 Microsoft Windows 的版本而不同。" 83 | 84 | #: C/color-import-windows.page:24(section/title) 85 | msgid "Windows XP" 86 | msgstr "Windows XP" 87 | 88 | #: C/color-import-windows.page:25(section/p) 89 | msgid "" 90 | "Right click on the profile in Windows Explorer and click Install " 91 | "profile. This copies the profile to the correct directory " 92 | "automatically." 93 | msgstr "" 94 | "在 Windows 资源管理器中右击配置文件并点击 安装配置文件。配置文件会" 95 | "被自动复制到正确的目录。" 96 | 97 | #: C/color-import-windows.page:29(section/p) 98 | msgid "" 99 | "Then open Control CenterColor and add " 100 | "the profile to the device." 101 | msgstr "" 102 | "然后打开 控制面板颜色并将这个配置文件" 103 | "添加给设备。" 104 | 105 | #: C/color-import-windows.page:34(note/p) 106 | msgid "" 107 | "If you are replacing an existing profile in Windows XP, the above shortcut " 108 | "does not work. The profiles must be manually copied to C:\\Windows" 109 | "\\system32\\spool\\drivers\\color for the original profile to be " 110 | "replaced." 111 | msgstr "" 112 | "如果您希望在 Windows XP 中替换一个配置文件,上述简便方法不可行。配置文件必须" 113 | "被手动复制到 C:\\Windows\\system32\\spool\\drivers\\color来替换" 114 | "掉原始配置文件。" 115 | 116 | #: C/color-import-windows.page:42(section/p) 117 | msgid "" 118 | "Windows XP requires a program to be run at startup to copy the profile " 119 | "calibration curves into the video card. This can be done using Adobe " 120 | "Gamma, LUT Loader or by using the free " 122 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 123 | "Color item to the control panel and allows the calibration curves " 124 | "from default profile to be easily set at each startup." 125 | msgstr "" 126 | "Windows XP 需要一个程序在开机时将配置文件检准曲线复制到显卡中。这可以用" 127 | "Adobe GammaLUT Loader 或免费的Microsoft Color Control Panel Applet 实现。用后者会给控制面" 130 | "板添加一个新的颜色项并可以方便的让默认配置文件的校准曲线在每次开机" 131 | "时设置。" 132 | 133 | #: C/color-import-windows.page:55(section/title) 134 | msgid "Windows Vista" 135 | msgstr "Windows Vista" 136 | 137 | #: C/color-import-windows.page:56(section/p) 138 | msgid "" 139 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 140 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 141 | "you may have to manually reload the ICC profile calibration curves. If you " 142 | "are using profiles with embedded calibration curves you have to be very " 143 | "careful the calibration state has not been cleared." 144 | msgstr "" 145 | "Microsoft Windows Vista 在登录后、挂起后或 UAC 屏幕出现时会错误地从显卡中删除" 146 | "校准曲线。这意味着您可能要手动重新加载 ICC 配置文件校准曲线。如果您正在使用嵌" 147 | "入了校准曲线的配置文件,必须小心留意校准状态是否被清除。" 148 | 149 | #: C/color-import-windows.page:68(section/title) 150 | msgid "Windows 7" 151 | msgstr "Windows 7" 152 | 153 | #: C/color-import-windows.page:69(section/p) 154 | msgid "" 155 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 156 | "installed system-wide or specific to the user. They are however stored in " 157 | "the same place. Right click on the profile in Windows Explorer and click " 158 | "Install profile or copy the .icc profile to C:\\Windows" 159 | "\\system32\\spool\\drivers\\color." 160 | msgstr "" 161 | "Windows 7 支持与 Linux 相似的方案,即配置文件可以安装到全系统或者特定用户。然" 162 | "而它们存储在同一个位置。在 Windows 资源管理器中右击配置文件并单击安装配" 163 | "置文件或者将 .icc 配置文件复制到 C:\\Windows\\system32\\spool" 164 | "\\drivers\\color。" 165 | 166 | #: C/color-import-windows.page:76(section/p) 167 | msgid "" 168 | "Open Control CenterColor Management " 169 | "and then add the profile to the system by clicking the Add " 170 | "button. Click on the Advanced tab and look for Display " 171 | "Calibration. Calibration curve loading is enabled by the Use " 172 | "Windows display calibration checkbox but it is not sensitive. This can " 173 | "be enabled by clicking on Change system defaults and then " 174 | "returning to the Advanced tab and then clicking the checkbox." 175 | msgstr "" 176 | "打开 控制面板颜色管理 并且通过点击 " 177 | "添加 按钮向系统添加配置文件。点击 高级选项卡并且寻找" 178 | "显示器校准。勾选使用 Windows 显示器校准复选框启用校准曲" 179 | "线,但复选框是不可用的。可通过点击 更改系统默认值 启用它并返回 " 180 | "高级 选项卡点击复选框。" 181 | 182 | #: C/color-import-windows.page:87(section/p) 183 | msgid "" 184 | "Close the dialog and click Reload current calibrations to set the " 185 | "gamma ramps. The profile calibration curves should now be set for every boot." 186 | msgstr "" 187 | "关闭对话窗口并点击 重新加载当前校准以设置 gamma 通道。这些配置文件" 188 | "校准曲线应该会在每次开机时设置。" 189 | 190 | #: C/color-import-osx.page:9(info/desc) 191 | msgid "How to import an existing ICC profile using an OS X system." 192 | msgstr "如何在 OS X 系统中导入存在的 ICC 配置文件。" 193 | 194 | #: C/color-import-osx.page:17(page/title) 195 | msgid "Installing an ICC profile on Apple OS X" 196 | msgstr "在 Apple OS X 上安装 ICC 配置文件" 197 | 198 | #: C/color-import-osx.page:18(page/p) 199 | msgid "" 200 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 201 | "installed system-wide or specific to the user. System wide profiles are " 202 | "stored in /Library/ColorSync/Profiles and user-specific " 203 | "profiles are stored in ~/Library/ColorSync/Profiles." 204 | msgstr "" 205 | "Apple OS X 支持与 Linux 相似的方案,配置文件可以安装到整个系统或特定用户。整" 206 | "个系统的配置文件存放在 /Library/ColorSync/Profiles 而用户的配置" 207 | "文件存放在 ~/Library/ColorSync/Profiles。" 208 | 209 | #: C/color-import-osx.page:24(page/p) 210 | msgid "" 211 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 213 | "device." 214 | msgstr "" 215 | "使用系统首选项显示色彩" 216 | "工具去导入文件并且将配置文件分配给正确的设备。" 217 | -------------------------------------------------------------------------------- /data/appdata/org.gnome.ColorProfileViewer.metainfo.xml.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | org.gnome.ColorProfileViewer 5 | CC0-1.0 6 | GPL-2.0+ 7 | GNOME Color Manager 8 | The GNOME Project 9 | 10 | The GNOME Project 11 | 12 | Inspect and compare installed color profiles 13 | 14 |

15 | GNOME Color Profile Viewer shows installed color profiles on your system 16 | and allows you to calibrate displays, printers and cameras using a 17 | wizard. 18 |

19 |

20 | This functionality is typically used by GNOME Control Center from the color 21 | panel although can be used on its own. 22 |

23 |
24 | 25 | 26 | https://git.gnome.org/browse/gnome-color-manager/plain/data/appdata/ss-info.png 27 | 28 | 29 | https://git.gnome.org/browse/gnome-color-manager/plain/data/appdata/ss-cie1931.png 30 | 31 | 32 | https://git.gnome.org/browse/gnome-color-manager/plain/data/appdata/ss-calibrate.png 33 | 34 | 35 | https://git.gnome.org/browse/gnome-color-manager/plain/data/appdata/ss-picker.png 36 | 37 | 38 | 39 | 42 | 43 | 44 | 45 |

No notable changes

46 |
47 |
48 | 49 | 50 |

This release includes the following changes:

51 |
    52 |
  • Remove forgotten libcanberra include
  • 53 |
  • Set prgname to application ID
  • 54 |
  • Update appdata
  • 55 |
  • Update translations.
  • 56 |
57 |
58 |
59 | 60 | 61 |

62 | This is the first stable release for GNOME 3.36. 63 |

64 |
65 |
66 | 67 | 68 |

69 | This is a test release for GNOME 3.32 which updates several 70 | translations and fixes some build issues. 71 |

72 |

73 | The calibration wizard has been removed as the ArgyllCMS integration 74 | has been broken for a long time. 75 |

76 |
77 |
78 | 79 | 80 |

81 | This is the first stable release for GNOME 3.32 which updates several 82 | translations and fixes some build issues. 83 |

84 |
85 |
86 | 87 | 88 |

89 | This is the first stable release for GNOME 3.30 and updates several 90 | translations and fixes the build system to be more standard conformant. 91 |

92 |
93 |
94 | 95 | 96 |

97 | This is the first stable release for GNOME 3.28 and updates several 98 | translations and fixes the build system to be more standard conformant. 99 |

100 |
101 |
102 | 103 | 104 |

105 | This is the first stable release for GNOME 3.26 and updates several 106 | translations. 107 |

108 |
109 |
110 | 111 | 112 |

113 | This unstable release switches to the meson build-system and updates 114 | several translations. 115 |

116 |
117 |
118 | 119 | 120 |

This is the first stable release for GNOME 3.24.

121 |
122 |
123 | 124 | 125 |

This unstable release updates several translations.

126 |
127 |
128 | 129 | 130 |

131 | This release updates translations. 132 |

133 |
134 |
135 | 136 | 137 |

138 | This release updates translations. 139 |

140 |
141 |
142 | 143 | 144 |

145 | This is the first stable release for GNOME 3.22 and updates several 146 | translations. 147 |

148 |
149 |
150 | 151 | 152 |

This release fixes several man pages and updates translations.

153 |
154 |
155 | 156 | 157 |

This release only updates translations.

158 |
159 |
160 | 161 | 162 |

This release fixes the following bugs:

163 |
    164 |
  • Update the UI files to adhere to the GNOME 3 UI guidelines
  • 165 |
  • Use the new-style app-ids for flatpak support
  • 166 |
167 |
168 |
169 | 170 | 171 |

This is the first stable release for GNOME 3.20

172 |
173 |
174 | 175 | 176 |

177 | This unstable release fixes some software center metadata, one profile 178 | viewer crash and updates seven translations. 179 |

180 |
181 |
182 | 183 | 184 |

This is the first stable release for GNOME 3.18

185 |
186 |
187 | 188 | 189 |

This release only updates translations.

190 |
191 |
192 | 193 | 194 |

This stable release marks the release of GNOME 3.16!

195 |
196 |
197 | 198 | 199 |

200 | This release changes the profile viewer to only show in the menu under 201 | non-GNOME environments and also updates translations. 202 |

203 |
204 |
205 | 206 | 207 |

This release only updates translations.

208 |
209 |
210 | 211 | 212 |

213 | This release switches the profile viewer application to use a headerbar 214 | to match other GNOME3 applications. 215 |

216 |
217 |
218 | 219 | 220 |

This release fixes the following bug:

221 |
    222 |
  • Make the color profile viewer visible in the software center
  • 223 |
224 |
225 |
226 |
227 | 228 | HiDpiIcon 229 | ModernToolkit 230 | UserDocs 231 | 232 | 233 | gcm-viewer.desktop 234 | 235 | https://gitlab.gnome.org/GNOME/gnome-color-manager 236 | https://gitlab.gnome.org/GNOME/gnome-color-manager/issues/ 237 | https://www.gnome.org/donate/ 238 | https://help.gnome.org/users/gnome-color-manager/stable/ 239 | https://l10n.gnome.org/module/gnome-color-manager/ 240 | https://gitlab.gnome.org/GNOME/gnome-color-manager 241 | richard_at_hughsie.com 242 | GNOME 243 | 244 | gnome-color-manager 245 | org.gnome.ColorProfileViewer.desktop 246 |
247 | -------------------------------------------------------------------------------- /help/ko/ko.po: -------------------------------------------------------------------------------- 1 | # Korean translation for gnome-color-manager. 2 | # This file is distributed under the same license as the gnome-color-manager package. 3 | # Seong-ho Cho , 2016. 4 | # Changwoo Ryu , 2016. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: gnome-color-manager master\n" 9 | "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-color-manager&keywords=I18N+L10N\n" 10 | "POT-Creation-Date: 2016-03-03 08:16+0000\n" 11 | "PO-Revision-Date: 2016-03-05 21:07+0900\n" 12 | "Last-Translator: Changwoo Ryu \n" 13 | "Language-Team: GNOME Korea \n" 14 | "Language: ko\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | 20 | #. (itstool) path: p/link 21 | #: C/legal.xml:3 22 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 23 | msgstr "크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 Unported 라이선스" 24 | 25 | #. (itstool) path: license/p 26 | #: C/legal.xml:3 27 | msgid "This work is licensed under a <_:link-1/>." 28 | msgstr "이 문서는 <_:link-1/>에 따른 활용을 허가합니다." 29 | 30 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 31 | msgctxt "_" 32 | msgid "translator-credits" 33 | msgstr "조성호 , 2016." 34 | 35 | #. (itstool) path: info/desc 36 | #: C/color-import-linux.page:9 37 | msgid "How to import an existing ICC profile using a Linux system." 38 | msgstr "리눅스 시스템에서 기존의 ICC 프로파일을 가져오는 방법입니다." 39 | 40 | #. (itstool) path: credit/name 41 | #: C/color-import-linux.page:11 C/color-import-windows.page:11 42 | #: C/color-import-osx.page:11 43 | msgid "Richard Hughes" 44 | msgstr "Richard Hughes" 45 | 46 | #. (itstool) path: page/title 47 | #: C/color-import-linux.page:17 48 | msgid "Installing an ICC profile on Linux" 49 | msgstr "리눅스에 ICC 프로파일 설치하기" 50 | 51 | #. (itstool) path: page/p 52 | #: C/color-import-linux.page:18 53 | msgid "" 54 | "If you have gnome-color-manager or colord-kde " 55 | "installed then just double click the .icc profile and click " 56 | "Import. You can then assign the new profile to an existing device " 57 | "using the System SettingsColor panel." 58 | msgstr "gnome-color-manager 또는 colord-kde를 설치했다면 그냥 .icc 프로파일을 두번 누르신 후 가져오기를 누르십시오. 시스템 설정 창을 활용하여 기존 장치에 새 프로파일을 할당할 수 있습니다." 59 | 60 | #. (itstool) path: page/p 61 | #: C/color-import-linux.page:25 62 | msgid "" 63 | "Profile calibration curves are automatically loaded at login, or can be " 64 | "loaded for all users at startup if the Set for all users button " 65 | "is clicked." 66 | msgstr "프로파일 보정 커브는 로그인할 때 자동으로 불러옵니다. 모든 사용자에 대해 설정 단추를 누르면 시스템을 시작할 때 모든 사용자가 값을 불러올 수 있습니다." 67 | 68 | #. (itstool) path: info/desc 69 | #: C/color-import-windows.page:9 70 | msgid "How to import an existing ICC profile using a Windows system." 71 | msgstr "윈도우 시스템에서 기존의 ICC 프로파일을 가져오는 방법입니다." 72 | 73 | #. (itstool) path: page/title 74 | #: C/color-import-windows.page:17 75 | msgid "Installing an ICC profile on Microsoft Windows" 76 | msgstr "마이크로소프트 윈도우에 ICC 프로파일 설치하기" 77 | 78 | #. (itstool) path: page/p 79 | #: C/color-import-windows.page:18 80 | msgid "" 81 | "The method for assigning the profile to a device and also using the embedded " 82 | "calibration curves is different for each version of Microsoft Windows." 83 | msgstr "" 84 | "내장 보정 커브를 활용하여 프로파일을 장치에 할당하는 방법은 마이크로소프트 윈" 85 | "도우의 각 버전마다 다릅니다." 86 | 87 | #. (itstool) path: section/title 88 | #: C/color-import-windows.page:24 89 | msgid "Windows XP" 90 | msgstr "윈도우 XP" 91 | 92 | #. (itstool) path: section/p 93 | #: C/color-import-windows.page:25 94 | msgid "" 95 | "Right click on the profile in Windows Explorer and click Install " 96 | "profile. This copies the profile to the correct directory " 97 | "automatically." 98 | msgstr "" 99 | "윈도우 탐색기에서 마우스 오른쪽 단추를 누른 후 프로파일 설치를 누" 100 | "르십시오. 프로파일을 적절한 디렉터리에 자동으로 복사합니다." 101 | 102 | # 주의: 윈도우에서는 "색 관리" 103 | #. (itstool) path: section/p 104 | #: C/color-import-windows.page:29 105 | msgid "" 106 | "Then open Control CenterColor and add " 107 | "the profile to the device." 108 | msgstr "그 다음 제어 센터색 관리를 여시고 장치에 프로파일을 추가하십시오." 109 | 110 | #. (itstool) path: note/p 111 | #: C/color-import-windows.page:34 112 | msgid "" 113 | "If you are replacing an existing profile in Windows XP, the above shortcut " 114 | "does not work. The profiles must be manually copied to C:\\Windows" 115 | "\\system32\\spool\\drivers\\color for the original profile to be " 116 | "replaced." 117 | msgstr "" 118 | "윈도우 XP의 기존 프로파일을 바꾼다면 위 바로 가기가 동작하지 않을지도 모릅니" 119 | "다. 기존 프로파일을 바꾸려면 프로파일을 C:\\Windows\\system32\\spool" 120 | "\\drivers\\color에 직접 복사해야 합니다." 121 | 122 | #. (itstool) path: section/p 123 | #: C/color-import-windows.page:42 124 | msgid "" 125 | "Windows XP requires a program to be run at startup to copy the profile " 126 | "calibration curves into the video card. This can be done using Adobe " 127 | "Gamma, LUT Loader or by using the free " 129 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 130 | "Color item to the control panel and allows the calibration curves " 131 | "from default profile to be easily set at each startup." 132 | msgstr "윈도우 XP에서는 비디오 카드에 프로파일 보정 커브를 복사할 프로그램을 시작프로그램에 넣고 실행해야합니다. 어도비 감마, LUT 로더, 무료 마이크로소프트 색상 제어판 애플릿을 활용하실 수 있습니다. 마지막에 언급한 프로그램을 활용하시면 색 관리 항목을 제어판에 추가하여 윈도우를 매번 시작할 때마다 기본 프로파일 보정 커브를 쉽게 설정할 수 있습니다." 133 | 134 | #. (itstool) path: section/title 135 | #: C/color-import-windows.page:55 136 | msgid "Windows Vista" 137 | msgstr "윈도우 비스타" 138 | 139 | #. (itstool) path: section/p 140 | #: C/color-import-windows.page:56 141 | msgid "" 142 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 143 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 144 | "you may have to manually reload the ICC profile calibration curves. If you " 145 | "are using profiles with embedded calibration curves you have to be very " 146 | "careful the calibration state has not been cleared." 147 | msgstr "" 148 | "마이크로소프트 윈도우 비스타는 실수로 보정 커브 기능을 로그인 한 다음, 대기 " 149 | "모드에 진입한 후, UAC 화면이 뜰 때 나타나는 비디오 LUT에서 뺐습니다. ICC 프로" 150 | "파일 보정 커브를 매번 직접 다시 불러와야 한다는 의미입니다. 내장 보정 커브 프" 151 | "로파일을 활용한다면 보정 상태가 완전하지 않으므로 조심스럽게 다루어야합니다." 152 | 153 | #. (itstool) path: section/title 154 | #: C/color-import-windows.page:68 155 | msgid "Windows 7" 156 | msgstr "윈도우 7" 157 | 158 | #. (itstool) path: section/p 159 | #: C/color-import-windows.page:69 160 | msgid "" 161 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 162 | "installed system-wide or specific to the user. They are however stored in " 163 | "the same place. Right click on the profile in Windows Explorer and click " 164 | "Install profile or copy the .icc profile to C:\\Windows" 165 | "\\system32\\spool\\drivers\\color." 166 | msgstr "" 167 | "윈도우 7에서는 리눅스와 비슷한 형태를 제공하며, 시스템 전체 또는 사용자별로 " 168 | "프로파일을 설치할 수 있습니다. 하지만 이 프로파일은 같은 곳에 있습니다. 윈도" 169 | "우 탐색기에서 마우스 오른쪽 단추를 누른 다음 프로파일 설치를 누르" 170 | "거나 C:\\Windows\\system32\\spool\\drivers\\color에 .icc 프로파" 171 | "일을 복사하십시오." 172 | 173 | #. (itstool) path: section/p 174 | #: C/color-import-windows.page:76 175 | msgid "" 176 | "Open Control CenterColor Management " 177 | "and then add the profile to the system by clicking the Add " 178 | "button. Click on the Advanced tab and look for Display " 179 | "Calibration. Calibration curve loading is enabled by the Use " 180 | "Windows display calibration checkbox but it is not sensitive. This can " 181 | "be enabled by clicking on Change system defaults and then " 182 | "returning to the Advanced tab and then clicking the checkbox." 183 | msgstr "" 184 | "제어 센터색 관리를 여시고 추가 단추를 눌러 시스템에 프로파일을 추가하십시오. 고급 탭을 누른 " 186 | "후 디스플레이 보정을 찾아보십시오. 보정 커브는 윈도우 디스플" 187 | "레이 보정 사용 확인 상자로 활성화하여 불러올 수 있지만 동작이 세밀하지 " 188 | "않습니다. 시스템 기본값으로 변경를 누르신 후 고급 탭으" 189 | "로 돌아와서 확인 상자를 눌러 해결할 수 있습니다." 190 | 191 | #. (itstool) path: section/p 192 | #: C/color-import-windows.page:87 193 | msgid "" 194 | "Close the dialog and click Reload current calibrations to set the " 195 | "gamma ramps. The profile calibration curves should now be set for every boot." 196 | msgstr "" 197 | "대화 상자를 닫으신 후 현재 보정 다시 불러오기를 눌러 감마 경사 곡" 198 | "선을 설정하십시오. 이렇게 하면 매번 부팅할 때마다 프로파일 보정 커브를 설정합" 199 | "니다." 200 | 201 | #. (itstool) path: info/desc 202 | #: C/color-import-osx.page:9 203 | msgid "How to import an existing ICC profile using an OS X system." 204 | msgstr "OS X 시스템에서 기존의 ICC 프로파일을 가져오는 방법입니다." 205 | 206 | #. (itstool) path: page/title 207 | #: C/color-import-osx.page:17 208 | msgid "Installing an ICC profile on Apple OS X" 209 | msgstr "애플 OS X에 ICC 프로파일 설치하기" 210 | 211 | #. (itstool) path: page/p 212 | #: C/color-import-osx.page:18 213 | msgid "" 214 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 215 | "installed system-wide or specific to the user. System wide profiles are " 216 | "stored in /Library/ColorSync/Profiles and user-specific " 217 | "profiles are stored in ~/Library/ColorSync/Profiles." 218 | msgstr "" 219 | "애플 OS X에서는 리눅스와 비슷한 형대를 제공하며, 시스템 전체 또는 사용자별로 " 220 | "프로파일을 설치할 수 있습니다. 시스템 전체 프로파일은 /Library/" 221 | "ColorSync/Profiles에 있으며 사용자별 프로파일은 ~/Library/" 222 | "ColorSync/Profiles에 있습니다." 223 | 224 | # 주의: OS X 에서는 "색상" 225 | #. (itstool) path: page/p 226 | #: C/color-import-osx.page:24 227 | msgid "" 228 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 230 | "device." 231 | msgstr "" 232 | "시스템 설정디스플레이색상 " 233 | "도구를 활용하여 파일을 가져온 후 프로파일을 올바른 장치에 할당하십시오." 234 | -------------------------------------------------------------------------------- /src/gcm-inspect.c: -------------------------------------------------------------------------------- 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 | * 3 | * Copyright (C) 2009-2015 Richard Hughes 4 | * 5 | * SPDX-License-Identifier: GPL-2.0+ 6 | */ 7 | 8 | #include "config.h" 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include "gcm-utils.h" 16 | #include "gcm-debug.h" 17 | 18 | static gboolean 19 | gcm_inspect_print_data_info (const gchar *title, const guint8 *data, gsize length) 20 | { 21 | gboolean ret; 22 | g_autoptr(CdIcc) icc = NULL; 23 | g_autoptr(GError) error = NULL; 24 | 25 | /* parse the data */ 26 | icc = cd_icc_new (); 27 | ret = cd_icc_load_data (icc, data, length, 28 | CD_ICC_LOAD_FLAGS_NONE, 29 | &error); 30 | if (!ret) { 31 | g_warning ("failed to parse data: %s", error->message); 32 | return FALSE; 33 | } 34 | 35 | /* print title */ 36 | g_print ("%s\n", title); 37 | 38 | /* TRANSLATORS: this is the ICC profile description stored in an atom in the XServer */ 39 | g_print (" - %s %s\n", _("Description:"), cd_icc_get_description (icc, NULL, NULL)); 40 | 41 | /* TRANSLATORS: this is the ICC profile copyright */ 42 | g_print (" - %s %s\n", _("Copyright:"), cd_icc_get_copyright (icc, NULL, NULL)); 43 | return TRUE; 44 | } 45 | 46 | static gboolean 47 | gcm_inspect_get_screen_protocol_version (GdkWindow *gdk_window, 48 | guint *major, 49 | guint *minor, 50 | GError **error) 51 | { 52 | gboolean ret; 53 | gint length; 54 | gint rc; 55 | g_autofree guchar *data_tmp = NULL; 56 | 57 | /* get the value */ 58 | gdk_error_trap_push (); 59 | ret = gdk_property_get (gdk_window, 60 | gdk_atom_intern_static_string ("_ICC_PROFILE_IN_X_VERSION"), 61 | gdk_atom_intern_static_string ("CARDINAL"), 62 | 0, 63 | G_MAXLONG, 64 | FALSE, 65 | NULL, 66 | NULL, 67 | &length, 68 | &data_tmp); 69 | if (!ret) { 70 | g_set_error_literal (error, 1, 0, "failed to get property"); 71 | return FALSE; 72 | } 73 | rc = gdk_error_trap_pop (); 74 | if (rc != 0) { 75 | g_set_error (error, 1, 0, "failed to get atom: %i", rc); 76 | return FALSE; 77 | } 78 | 79 | /* was nothing found */ 80 | if (length == 0) { 81 | g_set_error (error, 1, 0, "icc profile atom has not been set"); 82 | return FALSE; 83 | } 84 | 85 | /* set total */ 86 | *major = (guint) data_tmp[0] / 100; 87 | *minor = (guint) data_tmp[0] % 100; 88 | 89 | /* success */ 90 | return TRUE; 91 | } 92 | 93 | static gboolean 94 | gcm_inspect_get_screen_profile_data (GdkWindow *gdk_window, 95 | guint8 **data, 96 | gsize *length, 97 | GError **error) 98 | { 99 | gboolean ret; 100 | gint rc; 101 | gint length_tmp; 102 | 103 | /* get the value */ 104 | gdk_error_trap_push (); 105 | ret = gdk_property_get (gdk_window, 106 | gdk_atom_intern_static_string ("_ICC_PROFILE"), 107 | gdk_atom_intern_static_string ("CARDINAL"), 108 | 0, 109 | G_MAXLONG, 110 | FALSE, 111 | NULL, 112 | NULL, 113 | &length_tmp, 114 | (guchar **) data); 115 | if (!ret) { 116 | g_set_error_literal (error, 1, 0, "failed to get property"); 117 | goto out; 118 | } 119 | rc = gdk_error_trap_pop (); 120 | if (rc != 0) { 121 | ret = FALSE; 122 | g_set_error (error, 1, 0, "failed to get icc profile atom: %i", rc); 123 | goto out; 124 | } 125 | 126 | /* was nothing found */ 127 | if (length_tmp == 0) { 128 | ret = FALSE; 129 | g_set_error (error, 1, 0, "icc profile atom has not been set"); 130 | goto out; 131 | } 132 | 133 | /* proxy size */ 134 | *length = length_tmp; 135 | 136 | /* success */ 137 | ret = TRUE; 138 | out: 139 | return ret; 140 | } 141 | 142 | static gboolean 143 | gcm_inspect_show_x11_atoms (void) 144 | { 145 | gboolean ret; 146 | gsize length = 0; 147 | g_autoptr(GError) error = NULL; 148 | guint major = -1; 149 | guint minor = -1; 150 | GdkWindow *gdk_window; 151 | g_autofree guint8 *data = NULL; 152 | 153 | /* setup object to access X */ 154 | gdk_window = gdk_screen_get_root_window (gdk_screen_get_default ()); 155 | 156 | /* get profile from XServer */ 157 | ret = gcm_inspect_get_screen_profile_data (gdk_window, &data, &length, &error); 158 | if (!ret) { 159 | g_warning ("failed to get XServer profile data: %s", error->message); 160 | /* non-fatal */ 161 | error = NULL; 162 | } else { 163 | /* TRANSLATORS: the root window of all the screens */ 164 | gcm_inspect_print_data_info (_("Root window profile:"), data, length); 165 | } 166 | 167 | /* get profile from XServer */ 168 | ret = gcm_inspect_get_screen_protocol_version (gdk_window, &major, &minor, &error); 169 | if (!ret) { 170 | g_warning ("failed to get XServer protocol version: %s", error->message); 171 | /* non-fatal */ 172 | error = NULL; 173 | } else { 174 | /* TRANSLATORS: the root window of all the screens */ 175 | g_print ("%s %u.%u\n", _("Root window protocol version:"), major, minor); 176 | } 177 | return ret; 178 | } 179 | 180 | static gboolean 181 | gcm_inspect_show_profiles_for_file (const gchar *filename) 182 | { 183 | gboolean ret = FALSE; 184 | const gchar *description; 185 | guint i = 0; 186 | GDBusConnection *connection; 187 | g_autoptr(GError) error = NULL; 188 | GVariant *args = NULL; 189 | GVariant *response = NULL; 190 | GVariantIter *iter = NULL; 191 | 192 | /* get a session bus connection */ 193 | connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); 194 | if (connection == NULL) { 195 | /* TRANSLATORS: no DBus session bus */ 196 | g_print ("%s %s\n", _("Failed to connect to session bus:"), error->message); 197 | goto out; 198 | } 199 | 200 | /* execute sync method */ 201 | args = g_variant_new ("(ss)", filename, ""), 202 | response = g_dbus_connection_call_sync (connection, 203 | GCM_DBUS_SERVICE, 204 | GCM_DBUS_PATH, 205 | GCM_DBUS_INTERFACE, 206 | "GetProfilesForFile", 207 | args, 208 | G_VARIANT_TYPE ("(a(ss))"), 209 | G_DBUS_CALL_FLAGS_NONE, 210 | -1, NULL, &error); 211 | if (response == NULL) { 212 | /* TRANSLATORS: the DBus method failed */ 213 | g_print ("%s %s\n", _("The request failed:"), error->message); 214 | goto out; 215 | } 216 | 217 | /* unpack the array */ 218 | g_variant_get (response, "(a(ss))", &iter); 219 | if (g_variant_iter_n_children (iter) == 0) { 220 | /* TRANSLATORS: no profile has been asigned to this device */ 221 | g_print ("%s\n", _("There are no ICC profiles assigned to this file")); 222 | goto out; 223 | } 224 | 225 | /* TRANSLATORS: this is a list of profiles suitable for the device */ 226 | g_print ("%s %s\n", _("Suitable profiles for:"), filename); 227 | 228 | /* for each entry in the array */ 229 | while (g_variant_iter_loop (iter, "(ss)", &filename, &description)) 230 | g_print ("%u.\t%s\n\t%s\n", ++i, description, filename); 231 | 232 | /* success */ 233 | ret = TRUE; 234 | out: 235 | if (iter != NULL) 236 | g_variant_iter_free (iter); 237 | if (args != NULL) 238 | g_variant_unref (args); 239 | if (response != NULL) 240 | g_variant_unref (response); 241 | return ret; 242 | } 243 | 244 | static gboolean 245 | gcm_inspect_show_profile_for_window (guint xid) 246 | { 247 | GDBusConnection *connection; 248 | const gchar *profile; 249 | GVariant *response_child = NULL; 250 | g_autoptr(GError) error = NULL; 251 | g_autoptr(GVariant) args = NULL; 252 | g_autoptr(GVariantIter) iter = NULL; 253 | g_autoptr(GVariant) response = NULL; 254 | 255 | /* get a session bus connection */ 256 | connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); 257 | if (connection == NULL) { 258 | /* TRANSLATORS: no DBus session bus */ 259 | g_print ("%s %s\n", _("Failed to connect to session bus:"), error->message); 260 | return FALSE; 261 | } 262 | 263 | /* execute sync method */ 264 | args = g_variant_new ("(u)", xid), 265 | response = g_dbus_connection_call_sync (connection, 266 | GCM_DBUS_SERVICE, 267 | GCM_DBUS_PATH, 268 | GCM_DBUS_INTERFACE, 269 | "GetProfileForWindow", 270 | args, 271 | G_VARIANT_TYPE ("(s)"), 272 | G_DBUS_CALL_FLAGS_NONE, 273 | -1, NULL, &error); 274 | if (response == NULL) { 275 | /* TRANSLATORS: the DBus method failed */ 276 | g_print ("%s %s\n", _("The request failed:"), error->message); 277 | return FALSE; 278 | } 279 | 280 | /* print each device */ 281 | response_child = g_variant_get_child_value (response, 0); 282 | profile = g_variant_get_string (response_child, NULL); 283 | 284 | /* no data */ 285 | if (profile == NULL) { 286 | /* TRANSLATORS: no profile has been asigned to this window */ 287 | g_print ("%s\n", _("There are no ICC profiles for this window")); 288 | return FALSE; 289 | } 290 | 291 | /* TRANSLATORS: this is a list of profiles suitable for the device */ 292 | g_print ("%s %u\n", _("Suitable profiles for:"), xid); 293 | g_print ("1.\t%s\n\t%s\n", "this is a title", profile); 294 | 295 | /* success */ 296 | return TRUE; 297 | } 298 | 299 | int 300 | main (int argc, char **argv) 301 | { 302 | gboolean x11 = FALSE; 303 | gboolean dump = FALSE; 304 | guint xid = 0; 305 | guint retval = 0; 306 | GOptionContext *context; 307 | g_autofree gchar *filename = NULL; 308 | 309 | const GOptionEntry options[] = { 310 | { "xserver", 'x', 0, G_OPTION_ARG_NONE, &x11, 311 | /* TRANSLATORS: command line option */ 312 | _("Show xserver properties"), NULL }, 313 | { "file", '\0', 0, G_OPTION_ARG_STRING, &filename, 314 | /* TRANSLATORS: command line option */ 315 | _("Get the profiles for a specific file"), NULL }, 316 | { "xid", '\0', 0, G_OPTION_ARG_INT, &xid, 317 | /* TRANSLATORS: command line option */ 318 | _("Get the profile for a specific window"), NULL }, 319 | { "dump", 'd', 0, G_OPTION_ARG_NONE, &dump, 320 | /* TRANSLATORS: command line option */ 321 | _("Dump all details about this system"), NULL }, 322 | { NULL} 323 | }; 324 | 325 | setlocale (LC_ALL, ""); 326 | 327 | bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 328 | bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 329 | textdomain (GETTEXT_PACKAGE); 330 | 331 | gtk_init (&argc, &argv); 332 | 333 | /* TRANSLATORS: just dumps the EDID to disk */ 334 | context = g_option_context_new (_("EDID inspect program")); 335 | g_option_context_add_main_entries (context, options, NULL); 336 | g_option_context_add_group (context, gcm_debug_get_option_group ()); 337 | g_option_context_add_group (context, gtk_get_option_group (TRUE)); 338 | g_option_context_parse (context, &argc, &argv, NULL); 339 | g_option_context_free (context); 340 | 341 | if (x11 || dump) 342 | gcm_inspect_show_x11_atoms (); 343 | if (filename != NULL) 344 | gcm_inspect_show_profiles_for_file (filename); 345 | if (xid != 0) 346 | gcm_inspect_show_profile_for_window (xid); 347 | 348 | return retval; 349 | } 350 | 351 | -------------------------------------------------------------------------------- /help/bg/bg.po: -------------------------------------------------------------------------------- 1 | # Bulgarian translation for gnome-color-manager. 2 | # Copyright (C) 2024 gnome-color-manager's COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # twlvnn kraftwerk , 2024. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: gnome-color-manager master\n" 9 | "POT-Creation-Date: 2024-07-19 15:18+0000\n" 10 | "PO-Revision-Date: 2024-08-31 20:27+0200\n" 11 | "Last-Translator: twlvnn kraftwerk \n" 12 | "Language-Team: Bulgarian \n" 13 | "Language: bg\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=(n != 1)\n" 18 | "X-Generator: Gtranslator 46.1\n" 19 | 20 | #. (itstool) path: p/link 21 | #: C/legal.xml:3 22 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 23 | msgstr "Признание-Споделяне на споделеното 3.0 Нелокализиран" 24 | 25 | #. (itstool) path: license/p 26 | #: C/legal.xml:3 27 | msgid "This work is licensed under a <_:link-1/>." 28 | msgstr "Тази работа е лицензирана под <_:link-1/>." 29 | 30 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 31 | msgctxt "_" 32 | msgid "translator-credits" 33 | msgstr "twlvnn kraftwerk " 34 | 35 | #. (itstool) path: info/desc 36 | #: C/color-import-linux.page:9 37 | msgid "How to import an existing ICC profile using a Linux system." 38 | msgstr "Как да внасяте съществуващ цветови профил като използвате Linux." 39 | 40 | #. (itstool) path: credit/name 41 | #: C/color-import-linux.page:11 C/color-import-windows.page:11 42 | #: C/color-import-osx.page:11 43 | msgid "Richard Hughes" 44 | msgstr "Richard Hughes" 45 | 46 | #. (itstool) path: page/title 47 | #: C/color-import-linux.page:17 48 | msgid "Installing an ICC profile on Linux" 49 | msgstr "Инсталиране на цветови профил на Linux" 50 | 51 | #. (itstool) path: page/p 52 | #: C/color-import-linux.page:18 53 | msgid "" 54 | "If you have gnome-color-manager or colord-kde " 55 | "installed then just double click the .icc profile and click " 56 | "Import. You can then assign the new profile to an existing device " 57 | "using the System SettingsColor panel." 58 | msgstr "" 59 | "Ако сте инсталирали gnome-color-manager или colord-kde, просто натиснете два пъти върху профила .icc и натиснете " 61 | "върху Внасяне. След това може да зададете новия профил на " 62 | "съществуващо устройство, като използвате панела Системни " 63 | "настройкиЦвят." 64 | 65 | #. (itstool) path: page/p 66 | #: C/color-import-linux.page:25 67 | msgid "" 68 | "Profile calibration curves are automatically loaded at login, or can be " 69 | "loaded for all users at startup if the Set for all users button " 70 | "is clicked." 71 | msgstr "" 72 | "Кривите за калибриране на профили се зареждат автоматично при влизане в " 73 | "системата или може да бъдат заредени за всички потребители при стартиране, " 74 | "ако е натиснат бутонът Задаване за всички потребители." 75 | 76 | #. (itstool) path: info/desc 77 | #: C/color-import-windows.page:9 78 | msgid "How to import an existing ICC profile using a Windows system." 79 | msgstr "Как да внасяте съществуващ цветови профил като използвате Windows." 80 | 81 | #. (itstool) path: page/title 82 | #: C/color-import-windows.page:17 83 | msgid "Installing an ICC profile on Microsoft Windows" 84 | msgstr "Инсталиране на цветови профил на Windows" 85 | 86 | #. (itstool) path: page/p 87 | #: C/color-import-windows.page:18 88 | msgid "" 89 | "The method for assigning the profile to a device and also using the embedded " 90 | "calibration curves is different for each version of Microsoft Windows." 91 | msgstr "" 92 | "Методът за задаване на профил към устройство, както и за използване на " 93 | "вградените криви за калибриране, е различен за всяка версия на Microsoft " 94 | "Windows." 95 | 96 | #. (itstool) path: section/title 97 | #: C/color-import-windows.page:24 98 | msgid "Windows XP" 99 | msgstr "Windows XP" 100 | 101 | #. (itstool) path: section/p 102 | #: C/color-import-windows.page:25 103 | msgid "" 104 | "Right click on the profile in Windows Explorer and click Install " 105 | "profile. This copies the profile to the correct directory " 106 | "automatically." 107 | msgstr "" 108 | "Натиснете с десния бутон на мишката върху профила в Windows файловия " 109 | "мениджър и натиснете върху Инсталиране на профил. Това " 110 | "автоматично копира профила в правилната папка." 111 | 112 | #. (itstool) path: section/p 113 | #: C/color-import-windows.page:29 114 | msgid "" 115 | "Then open Control CenterColor and add " 116 | "the profile to the device." 117 | msgstr "" 118 | "След това отворете Контролен панелЦвят и добавете профила към устройството." 120 | 121 | #. (itstool) path: note/p 122 | #: C/color-import-windows.page:34 123 | msgid "" 124 | "If you are replacing an existing profile in Windows XP, the above shortcut " 125 | "does not work. The profiles must be manually copied to C:" 126 | "\\Windows\\system32\\spool\\drivers\\color for the original profile " 127 | "to be replaced." 128 | msgstr "" 129 | "Ако заменяте съществуващ профил в Windows XP, горният пряк път не работи. " 130 | "Профилите трябва да бъдат копирани в <файл>C:" 131 | "\\Windows\\system32\\spool\\drivers\\color, за да бъде заменен " 132 | "оригиналният профил." 133 | 134 | #. (itstool) path: section/p 135 | #: C/color-import-windows.page:42 136 | msgid "" 137 | "Windows XP requires a program to be run at startup to copy the profile " 138 | "calibration curves into the video card. This can be done using Adobe " 139 | "Gamma, LUT Loader or by using the free " 141 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 142 | "Color item to the control panel and allows the calibration curves " 143 | "from default profile to be easily set at each startup." 144 | msgstr "" 145 | "Windows XP изисква при стартиране да се пусне програма, която да копира " 146 | "кривите за калибриране на профила във видеокартата. Това може да стане с " 147 | "Adobe Gamma, LUT Loader или с безплатната програма " 148 | " Microsoft Color Control Panel Applet. " 150 | "Най-последната програма добавя нов елемент Цвят в контролния " 151 | "панел и позволява лесно задаване на кривите от профила по подразбиране при " 152 | "всяко стартиране." 153 | 154 | #. (itstool) path: section/title 155 | #: C/color-import-windows.page:55 156 | msgid "Windows Vista" 157 | msgstr "Windows Vista" 158 | 159 | #. (itstool) path: section/p 160 | #: C/color-import-windows.page:56 161 | msgid "" 162 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 163 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 164 | "you may have to manually reload the ICC profile calibration curves. If you " 165 | "are using profiles with embedded calibration curves you have to be very " 166 | "careful the calibration state has not been cleared." 167 | msgstr "" 168 | "Microsoft Windows Vista погрешно премахва кривите за калибриране от LUT " 169 | "видео таблиците след влизане в системата, след приспиване и когато се появи " 170 | "екранът UAC. Това означава, че може да се наложи ръчно да презаредите " 171 | "кривите за калибриране на ICC профила. Ако използвате профили с вградени " 172 | "криви за калибриране, трябва много да внимавате състоянието на калибриране " 173 | "да не е изтрито." 174 | 175 | #. (itstool) path: section/title 176 | #: C/color-import-windows.page:68 177 | msgid "Windows 7" 178 | msgstr "Windows 7" 179 | 180 | #. (itstool) path: section/p 181 | #: C/color-import-windows.page:69 182 | msgid "" 183 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 184 | "installed system-wide or specific to the user. They are however stored in " 185 | "the same place. Right click on the profile in Windows Explorer and click " 186 | "Install profile or copy the .icc profile to C:" 187 | "\\Windows\\system32\\spool\\drivers\\color." 188 | msgstr "" 189 | "Работата с цветови профили на Windows 7 е подобна на тази в Linux, тъй като " 190 | "те могат да бъдат инсталирани като част от системата или конкретно за " 191 | "потребителя. Те обаче се съхраняват на едно и също място. Натиснете с десния " 192 | "бутон на мишката върху профила в Windows файловия мениджър и натиснете върху " 193 | "Инсталиране на профил или копирайте .icc профила в " 194 | "C\\Windows\\system32\\spool\\drivers\\color." 195 | 196 | #. (itstool) path: section/p 197 | #: C/color-import-windows.page:76 198 | msgid "" 199 | "Open Control CenterColor Management " 200 | "and then add the profile to the system by clicking the Add " 201 | "button. Click on the Advanced tab and look for Display " 202 | "Calibration. Calibration curve loading is enabled by the Use " 203 | "Windows display calibration checkbox but it is not sensitive. This can " 204 | "be enabled by clicking on Change system defaults and then " 205 | "returning to the Advanced tab and then clicking the checkbox." 206 | msgstr "" 207 | 208 | #. (itstool) path: section/p 209 | #: C/color-import-windows.page:87 210 | msgid "" 211 | "Close the dialog and click Reload current calibrations to set the " 212 | "gamma ramps. The profile calibration curves should now be set for every boot." 213 | msgstr "" 214 | 215 | #. (itstool) path: info/desc 216 | #: C/color-import-osx.page:9 217 | msgid "How to import an existing ICC profile using an OS X system." 218 | msgstr "Как да внасяте съществуващ цветови профил като използвате OS X." 219 | 220 | #. (itstool) path: page/title 221 | #: C/color-import-osx.page:17 222 | msgid "Installing an ICC profile on Apple OS X" 223 | msgstr "Инсталиране на цветови профил на Apple OS X" 224 | 225 | #. (itstool) path: page/p 226 | #: C/color-import-osx.page:18 227 | msgid "" 228 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 229 | "installed system-wide or specific to the user. System wide profiles are " 230 | "stored in /Library/ColorSync/Profiles and user-specific " 231 | "profiles are stored in ~/Library/ColorSync/Profiles." 232 | msgstr "" 233 | "Работата с цветови профили на Apple OS X е подобна на тази в Linux, тъй като " 234 | "те могат да бъдат инсталирани като част от системата или конкретно за " 235 | "потребителя. Системните профили се съхраняват в /Library/ColorSync/" 236 | "Profiles, а за потребителя се съхраняват в ~/Library/ColorSync/" 237 | "Profiles." 238 | 239 | #. (itstool) path: page/p 240 | #: C/color-import-osx.page:24 241 | msgid "" 242 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 244 | "device." 245 | msgstr "" 246 | -------------------------------------------------------------------------------- /help/cs/cs.po: -------------------------------------------------------------------------------- 1 | # Czech translation for gnome-color-manager. 2 | # Copyright (C) 2013 gnome-color-manager's COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # 5 | # Milan Knížek , 2013. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: gnome-color-manager master\n" 10 | "POT-Creation-Date: 2013-02-25 17:01+0000\n" 11 | "PO-Revision-Date: 2013-02-26 21:48+0100\n" 12 | "Last-Translator: Milan Knížek \n" 13 | "Language-Team: Czech \n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: cs\n" 18 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 19 | "X-Generator: Poedit 1.5.4\n" 20 | 21 | #: C/legal.xml:3(p/link) 22 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 23 | msgstr "Creative Commons Attribution-ShareAlike 3.0 Unported License" 24 | 25 | #: C/legal.xml:3(license/p) 26 | msgid "This work is licensed under a <_:link-1/>." 27 | msgstr "Toto dílo je licencováno pod <_:link-1/>." 28 | 29 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 30 | msgctxt "_" 31 | msgid "translator-credits" 32 | msgstr "Milan Knížek , 2013" 33 | 34 | #: C/color-import-linux.page:9(info/desc) 35 | msgid "How to import an existing ICC profile using a Linux system." 36 | msgstr "Jak naimportovat existující profil ICC v linuxovém systému." 37 | 38 | #: C/color-import-linux.page:11(credit/name) 39 | #: C/color-import-windows.page:11(credit/name) 40 | #: C/color-import-osx.page:11(credit/name) 41 | msgid "Richard Hughes" 42 | msgstr "Richard Hughes" 43 | 44 | #: C/color-import-linux.page:17(page/title) 45 | msgid "Installing an ICC profile on Linux" 46 | msgstr "Instalace profilu ICC v Linuxu" 47 | 48 | #: C/color-import-linux.page:18(page/p) 49 | msgid "" 50 | "If you have gnome-color-manager or colord-kde " 51 | "installed then just double click the .icc profile and click " 52 | "Import. You can then assign the new profile to an existing device " 53 | "using the System SettingsColor panel." 54 | msgstr "" 55 | "Pokud máte nainstalován gnome-color-manager nebo colord-kde, stačí dvojitě kliknout na soubor profilu .icc a zvolit " 57 | "Import. Nový profil můžete přiřadit k existujícímu zařízení " 58 | "pomocí panelu Nastavení systémuBarvy." 59 | 60 | #: C/color-import-linux.page:25(page/p) 61 | msgid "" 62 | "Profile calibration curves are automatically loaded at login, or can be " 63 | "loaded for all users at startup if the Set for all users button " 64 | "is clicked." 65 | msgstr "" 66 | "Kalibrační křivky z profilu jsou automaticky načteny po přihlášení se do " 67 | "počítače nebo, pokud je kliknuto na Nastavit pro všechny uživatele, mohou být načteny pro všechny uživatele již po spuštění počítače." 69 | 70 | #: C/color-import-windows.page:9(info/desc) 71 | msgid "How to import an existing ICC profile using a Windows system." 72 | msgstr "Jak naimportovat existující profil ICC ve Windows." 73 | 74 | #: C/color-import-windows.page:17(page/title) 75 | msgid "Installing an ICC profile on Microsoft Windows" 76 | msgstr "Instalace profilu ICC v Microsoft Windows" 77 | 78 | #: C/color-import-windows.page:18(page/p) 79 | msgid "" 80 | "The method for assigning the profile to a device and also using the embedded " 81 | "calibration curves is different for each version of Microsoft Windows." 82 | msgstr "" 83 | "Metoda přiřazení profilu k zařízení a též načtení kalibračních křivek " 84 | "vložených v profilu se liší pro každou verzi Microsoft Windows." 85 | 86 | #: C/color-import-windows.page:24(section/title) 87 | msgid "Windows XP" 88 | msgstr "Windows XP" 89 | 90 | #: C/color-import-windows.page:25(section/p) 91 | msgid "" 92 | "Right click on the profile in Windows Explorer and click Install " 93 | "profile. This copies the profile to the correct directory " 94 | "automatically." 95 | msgstr "" 96 | "Klikněte pravým tlačítkem na soubor profilu v Průzkumníku a zvolte " 97 | "Instalovat profil. Tím se profil zkopíruje automaticky do správné " 98 | "složky." 99 | 100 | #: C/color-import-windows.page:29(section/p) 101 | msgid "" 102 | "Then open Control CenterColor and add " 103 | "the profile to the device." 104 | msgstr "" 105 | "Poté otevřete Ovládací panelyBarvy a " 106 | "přidejte profil k zařízení." 107 | 108 | #: C/color-import-windows.page:34(note/p) 109 | msgid "" 110 | "If you are replacing an existing profile in Windows XP, the above shortcut " 111 | "does not work. The profiles must be manually copied to C:\\Windows" 112 | "\\system32\\spool\\drivers\\color for the original profile to be " 113 | "replaced." 114 | msgstr "" 115 | "Pokud chcete ve Windows XP nahradit existující profil, výše uvedený odkaz " 116 | "nefunguje. Místo toho je nutné profily ručně zkopírovat do C:\\Windows" 117 | "\\system32\\spool\\drivers\\color a teprve poté je nastavit." 118 | 119 | #: C/color-import-windows.page:42(section/p) 120 | msgid "" 121 | "Windows XP requires a program to be run at startup to copy the profile " 122 | "calibration curves into the video card. This can be done using Adobe " 123 | "Gamma, LUT Loader or by using the free " 125 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 126 | "Color item to the control panel and allows the calibration curves " 127 | "from default profile to be easily set at each startup." 128 | msgstr "" 129 | "Windows XP vyžaduje program, který po spuštění počítače zkopíruje kalibrační " 130 | "křivky z profilu do grafické karty. Umí to např. Adobe Gamma, " 131 | "LUT Loader nebo lze udělat zdarma pomocí Microsoft Color Control Panel Applet. Poslední jmenovaný " 134 | "program přidá do Ovládacích panelů novou položku Barvy a zajistí " 135 | "načtení kalibračních křivek z výchozího profilu po každém spuštění počítače." 136 | 137 | #: C/color-import-windows.page:55(section/title) 138 | msgid "Windows Vista" 139 | msgstr "Windows Vista" 140 | 141 | #: C/color-import-windows.page:56(section/p) 142 | msgid "" 143 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 144 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 145 | "you may have to manually reload the ICC profile calibration curves. If you " 146 | "are using profiles with embedded calibration curves you have to be very " 147 | "careful the calibration state has not been cleared." 148 | msgstr "" 149 | "Následkem chyby v Microsoft Windows Vista dojde k odstranění kalibračních " 150 | "křivek z LUT grafické karty po přihlášení se, po uspání a při zobrazení " 151 | "dialogového okna UAC (kontrola přístupu uživatele). Tzn., že po těchto " 152 | "událostech musíte kalibrační křivky profilu ICC znovu načíst ručně. Pokud " 153 | "tedy používáte profily s vloženými kalibračními křivkami, mějte na paměti, " 154 | "že snadno může dojít k jejich vymazání z grafické karty." 155 | 156 | #: C/color-import-windows.page:68(section/title) 157 | msgid "Windows 7" 158 | msgstr "Windows 7" 159 | 160 | #: C/color-import-windows.page:69(section/p) 161 | msgid "" 162 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 163 | "installed system-wide or specific to the user. They are however stored in " 164 | "the same place. Right click on the profile in Windows Explorer and click " 165 | "Install profile or copy the .icc profile to C:\\Windows" 166 | "\\system32\\spool\\drivers\\color." 167 | msgstr "" 168 | "Obdobně jako v Linuxu lze i ve Windows 7 instalovat profily pro všechny " 169 | "uživatele (systémové) nebo jen pro jednoho (uživatelské). V každém případě " 170 | "jsou však uloženy na jednom místě. Klikněte pravým tlačítkem na soubor " 171 | "profilu v Průzkumníku a zvolte Instalovat profil nebo zkopírujte " 172 | "soubor profilu .icc do C:\\Windows\\system32\\spool\\drivers\\color." 174 | 175 | #: C/color-import-windows.page:76(section/p) 176 | msgid "" 177 | "Open Control CenterColor Management " 178 | "and then add the profile to the system by clicking the Add " 179 | "button. Click on the Advanced tab and look for Display " 180 | "Calibration. Calibration curve loading is enabled by the Use " 181 | "Windows display calibration checkbox but it is not sensitive. This can " 182 | "be enabled by clicking on Change system defaults and then " 183 | "returning to the Advanced tab and then clicking the checkbox." 184 | msgstr "" 185 | "Otevřete Ovládací panelySpráva barev " 186 | "a přidejte profil do systému pomocí kliknutí na tlačítko Přidat. " 187 | "Klikněte na záložku Upřesnit a hledejte Kalibrace displeje. Načítání kalibračních křivek se zapne přepínačem Použít kalibraci " 189 | "displeje systému Windows, který je však zatím neaktivní. Přepínač se " 190 | "aktivuje kliknutím na Změnit výchozí předvolby a poté již lze " 191 | "přepínač na záložce Upřesnit zapnout." 192 | 193 | #: C/color-import-windows.page:87(section/p) 194 | msgid "" 195 | "Close the dialog and click Reload current calibrations to set the " 196 | "gamma ramps. The profile calibration curves should now be set for every boot." 197 | msgstr "" 198 | "Pro nastavení gamy displeje uzavřete dialogové okno a klikněte na Znovu " 199 | "načíst stávající kalibraci. Kalibrační křivky by nyní měly být " 200 | "nastaveny automaticky při spuštění počítače." 201 | 202 | #: C/color-import-osx.page:9(info/desc) 203 | msgid "How to import an existing ICC profile using an OS X system." 204 | msgstr "Jak naimportovat existujicí profil ICC v systému OS X." 205 | 206 | #: C/color-import-osx.page:17(page/title) 207 | msgid "Installing an ICC profile on Apple OS X" 208 | msgstr "Instalace profilu ICC v Apple OS X" 209 | 210 | #: C/color-import-osx.page:18(page/p) 211 | msgid "" 212 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 213 | "installed system-wide or specific to the user. System wide profiles are " 214 | "stored in /Library/ColorSync/Profiles and user-specific " 215 | "profiles are stored in ~/Library/ColorSync/Profiles." 216 | msgstr "" 217 | "Obdobně jako Linuxu lze i v Apple OS X instalovat profily pro všechny " 218 | "uživatele (systémové) či jen pro jednoho (uživatelské). Systémové profily " 219 | "jsou uloženy v /Library/ColorSync/Profiles a uživatelské profily " 220 | "jsou uloženy v ~/Library/ColorSync/Profiles." 221 | 222 | #: C/color-import-osx.page:24(page/p) 223 | msgid "" 224 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 226 | "device." 227 | msgstr "" 228 | "Pro import souboru a jeho přiřazení správnému zařízení použijte nástroj " 229 | "Systémové volbyDisplejeBarvy." 231 | -------------------------------------------------------------------------------- /help/pt_BR/pt_BR.po: -------------------------------------------------------------------------------- 1 | # Brazilian Portuguese translation for gnome-color-manager. 2 | # Copyright (C) 2013 gnome-color-manager's COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # Enrico Nicoletto , 2013. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: gnome-color-manager master\n" 9 | "POT-Creation-Date: 2013-01-21 10:22+0000\n" 10 | "PO-Revision-Date: 2013-02-07 11:54-0300\n" 11 | "Last-Translator: Enrico Nicoletto \n" 12 | "Language-Team: Brazilian Portuguese \n" 13 | "Language: pt_BR\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 18 | 19 | #: C/legal.xml:3(p/link) 20 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 21 | msgstr "Licença Creative Commons Atribuição-Compartilhada Igual 3.0" 22 | 23 | #: C/legal.xml:3(license/p) 24 | msgid "This work is licensed under a <_:link-1/>." 25 | msgstr "Esta obra está licenciada sobre uma <_:link-1/>." 26 | 27 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 28 | msgctxt "_" 29 | msgid "translator-credits" 30 | msgstr "Enrico Nicoletto , 2013" 31 | 32 | #: C/color-import-linux.page:9(info/desc) 33 | msgid "How to import an existing ICC profile using a Linux system." 34 | msgstr "Como importar um perfil ICC já existente utilizando um sistema Linux." 35 | 36 | #: C/color-import-linux.page:11(credit/name) 37 | #: C/color-import-windows.page:11(credit/name) 38 | #: C/color-import-osx.page:11(credit/name) 39 | msgid "Richard Hughes" 40 | msgstr "Richard Hughes" 41 | 42 | #: C/color-import-linux.page:17(page/title) 43 | msgid "Installing an ICC profile on Linux" 44 | msgstr "Instalando um perfil ICC no Linux" 45 | 46 | #: C/color-import-linux.page:18(page/p) 47 | msgid "If you have gnome-color-manager or colord-kde installed then just double click the .icc profile and click Import. You can then assign the new profile to an existing device using the System SettingsColor panel." 48 | msgstr "Se você possui o gnome-color-manager ou o colord-kde instalados, então apenas dê um duplo clique no perfil .icc e clique em Importar. Desta forma você poderá atribuir o novo perfil para um dispositivo já existente utilizando o painel Configurações do sistemaCor." 49 | 50 | #: C/color-import-linux.page:25(page/p) 51 | msgid "Profile calibration curves are automatically loaded at login, or can be loaded for all users at startup if the Set for all users button is clicked." 52 | msgstr "As curvas de perfil de calibração são automaticamente carregadas no ínicio da sessão, ou podem ser carregadas para todos os usuários na inicialização ao clicar no botão Definir para todos os usuários." 53 | 54 | #: C/color-import-windows.page:9(info/desc) 55 | msgid "How to import an existing ICC profile using a Windows system." 56 | msgstr "Como importar um perfil ICC já existente utilizando um sistema Windows." 57 | 58 | #: C/color-import-windows.page:17(page/title) 59 | msgid "Installing an ICC profile on Microsoft Windows" 60 | msgstr "Instalando um perfil ICC no Microsoft Windows" 61 | 62 | #: C/color-import-windows.page:18(page/p) 63 | msgid "The method for assigning the profile to a device and also using the embedded calibration curves is different for each version of Microsoft Windows." 64 | msgstr "O método para atribuir o perfil a um dispositivo e ainda utilizar curvas de calibração incorporadas é diferente para cada versão do Microsoft Windows." 65 | 66 | #: C/color-import-windows.page:24(section/title) 67 | msgid "Windows XP" 68 | msgstr "Windows XP" 69 | 70 | # Por se tratar de Windows, directory foi traduzido como pasta e não como diretório (termo para Unix) 71 | #: C/color-import-windows.page:25(section/p) 72 | msgid "Right click on the profile in Windows Explorer and click Install profile. This copies the profile to the correct directory automatically." 73 | msgstr "Dê um clique com o botão direito do mouse no perfil no Windows Explorer e clique em Instalar perfil. Isto faz com que o perfil seja copiado automaticamente para a pasta correta." 74 | 75 | #: C/color-import-windows.page:29(section/p) 76 | msgid "Then open Control CenterColor and add the profile to the device." 77 | msgstr "Então abra o Centro de controleCor e adicione o perfil ao dispositivo." 78 | 79 | #: C/color-import-windows.page:34(note/p) 80 | msgid "If you are replacing an existing profile in Windows XP, the above shortcut does not work. The profiles must be manually copied to C:\\Windows\\system32\\spool\\drivers\\color for the original profile to be replaced." 81 | msgstr "Se você está substituindo um perfil já existente no Windows XP, o atalho acima não irá funcionar. Os perfis precisam ser copiados manualmente para C:\\Windows\\system32\\spool\\drivers\\color, para que o perfil original seja substituído. (Nota do tradutor: Caso sua instalação do Windows não esteja na unidade C:\\, substitua pela letra correta da sua unidade de sistema, ex: D:\\, E:\\, etc...)" 82 | 83 | # Neste contexto, startup refere-se ao termo Inicialização de Programas, onde um conjunto de programas e serviços iniciam junto ao sistema operacional proprietário. 84 | #: C/color-import-windows.page:42(section/p) 85 | msgid "Windows XP requires a program to be run at startup to copy the profile calibration curves into the video card. This can be done using Adobe Gamma, LUT Loader or by using the free Microsoft Color Control Panel Applet. Using the latter adds a new Color item to the control panel and allows the calibration curves from default profile to be easily set at each startup." 86 | msgstr "O Windows XP precisa de um programa a ser executado na inicialização de programas para copiar o perfil de curvas de calibração para a placa de vídeo. Isto pode ser feito usando o aplicativo Adobe Gamma, LUT Loader ou usando o Miniaplicativo \"Cores\" do Painel de Controle, gratuito da Microsoft. Ao utilizar o último, adiciona-se um novo ítem Cores ao painel de controle e permite que as curvas de calibração do perfil padrão sejam facilmente definidas a cada inicialização." 87 | 88 | #: C/color-import-windows.page:55(section/title) 89 | msgid "Windows Vista" 90 | msgstr "Windows Vista" 91 | 92 | #: C/color-import-windows.page:56(section/p) 93 | msgid "Microsoft Windows Vista mistakenly removes calibration curves from the video LUT after logon, after suspend, and when the UAC screen appears. This means you may have to manually reload the ICC profile calibration curves. If you are using profiles with embedded calibration curves you have to be very careful the calibration state has not been cleared." 94 | msgstr "Por engano, o Microsoft Windows Vista remove as curvas de calibração de vídeo do LUT após fazer logon, suspender e quando a tela de UAC aparece. Isto significa que você precisa recarregar manualmente o perfil ICC de curvas de calibração. Se você está usando perfis com curvas de calibração incorporadas, você precisa ser bem cuidadoso para que o estado de calibração não seja apagado." 95 | 96 | #: C/color-import-windows.page:68(section/title) 97 | msgid "Windows 7" 98 | msgstr "Windows 7" 99 | 100 | #: C/color-import-windows.page:69(section/p) 101 | msgid "Windows 7 supports a similar scheme to Linux, in that profiles can be installed system-wide or specific to the user. They are however stored in the same place. Right click on the profile in Windows Explorer and click Install profile or copy the .icc profile to C:\\Windows\\system32\\spool\\drivers\\color." 102 | msgstr "O WIndows 7 suporta um esquema parecido com o Linux, estes perfis podem ser instalados em todo o sistema ou especificamente para o usuário. Contudo, eles são armazenados no mesmo local. Clique com o botão direito sob o perfil no Windows Explorer e clique em Instalar perfil ou copie o perfil .icc para C:\\Windows\\system32\\spool\\drivers\\color. Nota do tradutor: Caso seu Windows não esteja em C:\\, basta substituir pela letra correta de sua unidade de sistema." 103 | 104 | #: C/color-import-windows.page:76(section/p) 105 | msgid "Open Control CenterColor Management and then add the profile to the system by clicking the Add button. Click on the Advanced tab and look for Display Calibration. Calibration curve loading is enabled by the Use Windows display calibration checkbox but it is not sensitive. This can be enabled by clicking on Change system defaults and then returning to the Advanced tab and then clicking the checkbox." 106 | msgstr "Abra o Centro de controleGerenciamento de cores e então adicione o perfil ao sistema, clicando no botão Adicionar. Clique na aba Avançado e procure por Calibragem de vídeo. O carregamento da curva de calibração é ativado pela caixa de seleção Usar a calibragem de vídeo do Windows, porém ela não é sensível. Ela pode ser ativada ao clicar em Alterar configurações do sistema e então retornar a aba Avançado e por fim clicar na caixa de seleção." 107 | 108 | #: C/color-import-windows.page:87(section/p) 109 | msgid "Close the dialog and click Reload current calibrations to set the gamma ramps. The profile calibration curves should now be set for every boot." 110 | msgstr "Feche a janela de diálogo e clique em Recarregar calibragens atuais para definir as curvas de gama. Agora, as curvas de calibração do perfil foram ajustadas para cada inicialização." 111 | 112 | #: C/color-import-osx.page:9(info/desc) 113 | msgid "How to import an existing ICC profile using an OS X system." 114 | msgstr "Como importar um perfil ICC já existente utilizando um sistema OS X." 115 | 116 | #: C/color-import-osx.page:17(page/title) 117 | msgid "Installing an ICC profile on Apple OS X" 118 | msgstr "Instalando um perfil ICC no Apple OS X" 119 | 120 | #: C/color-import-osx.page:18(page/p) 121 | msgid "Apple OS X supports a similar scheme to Linux, in that profiles can be installed system-wide or specific to the user. System wide profiles are stored in /Library/ColorSync/Profiles and user-specific profiles are stored in ~/Library/ColorSync/Profiles." 122 | msgstr "Apple OS X suporta um esquema parecido com o Linux, estes perfis podem ser instalados em todo o sistema ou especificamente para o usuário. Os perfis gerais do sistema são armazenados em /Library/ColorSync/Profiles e os perfis específicos de usuários são armazenados em ~/Library/ColorSync/Profiles." 123 | 124 | #: C/color-import-osx.page:24(page/p) 125 | msgid "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct device." 126 | msgstr "Utilize a ferramenta através de Preferências do sistemaVídeosCor para importar o arquivo e atribuir o perfil ao dispositivo correto." 127 | 128 | -------------------------------------------------------------------------------- /help/eu/eu.po: -------------------------------------------------------------------------------- 1 | # Basque translation for gnome-color-manager. 2 | # Copyright (C) 2021 gnome-color-manager's COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the gnome-color-manager package. 4 | # Asier Sarasua Garmendia , 2021, 2023. 5 | # 6 | msgid "" 7 | msgstr "Project-Id-Version: gnome-color-manager master\n" 8 | "POT-Creation-Date: 2023-01-25 18:33+0000\n" 9 | "PO-Revision-Date: 2023-11-05 20:06+0000\n" 10 | "Last-Translator: Asier Sarasua Garmendia \n" 11 | "Language-Team: Basque \n" 12 | "Language: eu\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | 17 | #. (itstool) path: p/link 18 | #: C/legal.xml:3 19 | msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" 20 | msgstr "Creative Commons Attribution-ShareAlike 3.0 Unported lizentzia" 21 | 22 | #. (itstool) path: license/p 23 | #: C/legal.xml:3 24 | msgid "This work is licensed under a <_:link-1/>." 25 | msgstr "Lan honen lizentzia <_:link-1/> da." 26 | 27 | #. Put one translator per line, in the form NAME , YEAR1, YEAR2 28 | msgctxt "_" 29 | msgid "translator-credits" 30 | msgstr "Asier Sarasua Garmendia , 2021, 2023" 31 | 32 | #. (itstool) path: info/desc 33 | #: C/color-import-linux.page:9 34 | msgid "How to import an existing ICC profile using a Linux system." 35 | msgstr "Nola inportatu ICC profil bat Linux sistema bat erabilita." 36 | 37 | #. (itstool) path: credit/name 38 | #: C/color-import-linux.page:11 C/color-import-windows.page:11 39 | #: C/color-import-osx.page:11 40 | msgid "Richard Hughes" 41 | msgstr "Richard Hughes" 42 | 43 | #. (itstool) path: page/title 44 | #: C/color-import-linux.page:17 45 | msgid "Installing an ICC profile on Linux" 46 | msgstr "ICC profil bat Linuxen instalatzea" 47 | 48 | #. (itstool) path: page/p 49 | #: C/color-import-linux.page:18 50 | msgid "" 51 | "If you have gnome-color-manager or colord-kde " 52 | "installed then just double click the .icc profile and click " 53 | "Import. You can then assign the new profile to an existing device " 54 | "using the System SettingsColor panel." 55 | msgstr "gnome-color-manager edo colord-kde instalatuta badago sisteman, egin klik bikoitza .icc profilean eta egin klik Inportatu aukeran. Ondoren, profil berria existitzen den gailu bati esleitu dakioke Sistemaren ezarpenakKolorea panela erabilita." 56 | 57 | #. (itstool) path: page/p 58 | #: C/color-import-linux.page:25 59 | msgid "" 60 | "Profile calibration curves are automatically loaded at login, or can be " 61 | "loaded for all users at startup if the Set for all users button " 62 | "is clicked." 63 | msgstr "Profilaren kalibrazio-kurbak automatikoki kargatzen dira saioa hastean, edo erabiltzaile guztietarako kargatu daiteke abioan Ezarri erabiltzaile guztietarako botoia sakatuta badago." 64 | 65 | #. (itstool) path: info/desc 66 | #: C/color-import-windows.page:9 67 | msgid "How to import an existing ICC profile using a Windows system." 68 | msgstr "Nola inportatu ICC profil bat Windows sistema bat erabilita." 69 | 70 | #. (itstool) path: page/title 71 | #: C/color-import-windows.page:17 72 | msgid "Installing an ICC profile on Microsoft Windows" 73 | msgstr "ICC profil bat Microsoft Windowsen instalatzea" 74 | 75 | #. (itstool) path: page/p 76 | #: C/color-import-windows.page:18 77 | msgid "" 78 | "The method for assigning the profile to a device and also using the embedded " 79 | "calibration curves is different for each version of Microsoft Windows." 80 | msgstr "Profila gailu bati esleitzeko metodoa eta kapsulatutako kalibrazio-kurbatk erabiltzeko modua desberdina da Microsoft Windows bertsio bakoitzean." 81 | 82 | #. (itstool) path: section/title 83 | #: C/color-import-windows.page:24 84 | msgid "Windows XP" 85 | msgstr "Windows XP" 86 | 87 | #. (itstool) path: section/p 88 | #: C/color-import-windows.page:25 89 | msgid "" 90 | "Right click on the profile in Windows Explorer and click Install " 91 | "profile. This copies the profile to the correct directory " 92 | "automatically." 93 | msgstr "Egin eskuineko klik profilean, Windows Explorer aplikazioan, eta egin klik Instalatu profila aukeran. Profila kokaleku zuzenean kopiatuko da automatikoki." 94 | 95 | #. (itstool) path: section/p 96 | #: C/color-import-windows.page:29 97 | msgid "" 98 | "Then open Control CenterColor and add " 99 | "the profile to the device." 100 | msgstr "Ondoren, ireki Kontrol-zentroaKolorea eta gehitu profila gailuari." 101 | 102 | #. (itstool) path: note/p 103 | #: C/color-import-windows.page:34 104 | msgid "" 105 | "If you are replacing an existing profile in Windows XP, the above shortcut " 106 | "does not work. The profiles must be manually copied to C:\\Windows" 107 | "\\system32\\spool\\drivers\\color for the original profile to be " 108 | "replaced." 109 | msgstr "Windows XP sisteman lehendik dagoen profil bat ordezten ari bazara, goiko lasterbideak ez du funtzionatzen. Profilak eskuz kopiatu behar dira C:\\Windows\\system32\\spool\\drivers\\color karpetara, jatorrizko profila ordeztua izan dadin." 110 | 111 | #. (itstool) path: section/p 112 | #: C/color-import-windows.page:42 113 | msgid "" 114 | "Windows XP requires a program to be run at startup to copy the profile " 115 | "calibration curves into the video card. This can be done using Adobe " 116 | "Gamma, LUT Loader or by using the free " 118 | "Microsoft Color Control Panel Applet. Using the latter adds a new " 119 | "Color item to the control panel and allows the calibration curves " 120 | "from default profile to be easily set at each startup." 121 | msgstr "Windows XP sistemak programa bat abioan exekutatu dadin behar du profilaren kalibrazio-kurbak bideo-txartelean kopiatu daitezen. Hori egiteko, Adobe Gamma, LUT Loader edo Microsoft Color Control Panel Applet doakoa erabili daiteke. Azken hori erabiltzen bada, Kolorea elementu berria gehituko zaio kontrol-panelari,. profil lehenetsiaren kalibrazio-kurbak errazago ezarri ahal izateko abio bakoitzean." 122 | 123 | #. (itstool) path: section/title 124 | #: C/color-import-windows.page:55 125 | msgid "Windows Vista" 126 | msgstr "Windows Vista" 127 | 128 | #. (itstool) path: section/p 129 | #: C/color-import-windows.page:56 130 | msgid "" 131 | "Microsoft Windows Vista mistakenly removes calibration curves from the video " 132 | "LUT after logon, after suspend, and when the UAC screen appears. This means " 133 | "you may have to manually reload the ICC profile calibration curves. If you " 134 | "are using profiles with embedded calibration curves you have to be very " 135 | "careful the calibration state has not been cleared." 136 | msgstr "Microsoft Windows Vista sistemak kalibrazio-kurbak kentzen ditu nahi gabe bideo LUTetik saioa hasi ondoren, eseki ondoren eta UAC pantaila agertzen denean. Horrek esan nahi du eskuz birkargatu behar direla ICC profilen kalibrazio-kurbak. Kalibrazio-kurbak kapsulatuta dituzten profilak erabiltzen ari bazara, kontuz ibili eta begiratu ea kalibrazio-egoera garbitu den." 137 | 138 | #. (itstool) path: section/title 139 | #: C/color-import-windows.page:68 140 | msgid "Windows 7" 141 | msgstr "Windows 7" 142 | 143 | #. (itstool) path: section/p 144 | #: C/color-import-windows.page:69 145 | msgid "" 146 | "Windows 7 supports a similar scheme to Linux, in that profiles can be " 147 | "installed system-wide or specific to the user. They are however stored in " 148 | "the same place. Right click on the profile in Windows Explorer and click " 149 | "Install profile or copy the .icc profile to C:\\Windows" 150 | "\\system32\\spool\\drivers\\color." 151 | msgstr "Windows 7 sistemek Linuxek duen eskemaren antzekoa du: profilak sistema osorako edo erabiltzaile jakin baterako instalatu daitezke. Bata zein bestea izan, toki berean gordetzen dira. Egin eskuineko klik profilean, Windows Explorer barruan, eta egin klik Instalatu profila edo kopiatu .icc profila C:\\Windows\\system32\\spool\\drivers\\color kokalekuan." 152 | 153 | #. (itstool) path: section/p 154 | #: C/color-import-windows.page:76 155 | msgid "" 156 | "Open Control CenterColor Management " 157 | "and then add the profile to the system by clicking the Add " 158 | "button. Click on the Advanced tab and look for Display " 159 | "Calibration. Calibration curve loading is enabled by the Use " 160 | "Windows display calibration checkbox but it is not sensitive. This can " 161 | "be enabled by clicking on Change system defaults and then " 162 | "returning to the Advanced tab and then clicking the checkbox." 163 | msgstr "Ireki Kontrol-zentroaKolore-kudeaketa eta gehitu profila sistemari Gehitu botoiaren bidez. Egin klik Aurreratua fitxan eta bilatu Monitore-kalibrazioa. Kalibrazio-kurben kargatzea Erabili Windowsen monitore-kalibrazioa kontrol-laukiaren bidez gaitzean da, baina ez ditu maiuskulak/minuskulak kontuan hartzen. Hori gaitzeko, egin klik Aldatu sistemaren lehenespenak aukeran eta buletatu Aurreratua fitxara eta, ondoren, egin klik kontrol-laukian." 164 | 165 | #. (itstool) path: section/p 166 | #: C/color-import-windows.page:87 167 | msgid "" 168 | "Close the dialog and click Reload current calibrations to set the " 169 | "gamma ramps. The profile calibration curves should now be set for every boot." 170 | msgstr "Itxi elkarrizketa-koadroa eta egin klik Birkargatu uneko kalibrazioak aukeran gamma maldak ezartzeko. Horrela, profilen kalibrazio-kurbak abio guztietarako ezarriko dira." 171 | 172 | #. (itstool) path: info/desc 173 | #: C/color-import-osx.page:9 174 | msgid "How to import an existing ICC profile using an OS X system." 175 | msgstr "Nola inportatu ICC profil bat OS X sistema bat erabilita." 176 | 177 | #. (itstool) path: page/title 178 | #: C/color-import-osx.page:17 179 | msgid "Installing an ICC profile on Apple OS X" 180 | msgstr "ICC profil bat Apple OS X sisteman instalatzea" 181 | 182 | #. (itstool) path: page/p 183 | #: C/color-import-osx.page:18 184 | msgid "" 185 | "Apple OS X supports a similar scheme to Linux, in that profiles can be " 186 | "installed system-wide or specific to the user. System wide profiles are " 187 | "stored in /Library/ColorSync/Profiles and user-specific " 188 | "profiles are stored in ~/Library/ColorSync/Profiles." 189 | msgstr "Aplee OS X sistemek Linuxek duen eskemaren antzekoa du: profilak sistema osorako edo erabiltzaile jakin baterako instalatu daitezke. Sistema osorako profilak /Library/ColorSync/Profiles kokalekuan gordetzen dira eta erabiltzailearenak ~/Library/ColorSync/Profiles kokalekuan." 190 | 191 | #. (itstool) path: page/p 192 | #: C/color-import-osx.page:24 193 | msgid "" 194 | "Use the System PreferencesDisplaysColor tool to import the file and assign the profile to the correct " 196 | "device." 197 | msgstr "Erabili Sistema-hobespenakMonitoreakKolorea tresna fitxategia inportatzeko eta profila gailu egokiari esleitzeko." 198 | --------------------------------------------------------------------------------