commit 74fda96a1c64295d54c4c9035daf5c25d5b30fd2 Author: sebvtl Date: Mon Nov 25 23:08:08 2024 +0000 Téléverser les fichiers vers "Font perdu" diff --git a/Font perdu/FondPerduScript_LockedGuides_v3.1.jsx b/Font perdu/FondPerduScript_LockedGuides_v3.1.jsx new file mode 100644 index 0000000..f4a0f78 --- /dev/null +++ b/Font perdu/FondPerduScript_LockedGuides_v3.1.jsx @@ -0,0 +1,149 @@ +// Script JSX pour Photoshop : Création de fonds perdus avec repères verrouillés +// Copyright © 2024 Sébastien VTL +#target photoshop + +// Fonction principale +function createBleed() { + try { + // Vérifier si les unités du document sont en millimètres ou centimètres + if (app.preferences.rulerUnits !== Units.MM && app.preferences.rulerUnits !== Units.CM) { + throw new Error("La configuration du document doit être en millimètres ou centimètres. Veuillez changer les unités avant d'exécuter ce script."); + } + + // Créer une fenêtre de dialogue pour la sélection des dimensions et des options + var settings = showSettingsDialog(); + if (!settings) return; // Si annulé, sortir + + // Obtenir la résolution du document actuel + if (app.documents.length === 0) { + throw new Error("Aucun document ouvert. Veuillez ouvrir un document pour exécuter ce script."); + } + + var doc = app.activeDocument; + var dpi = doc.resolution; // Résolution du document en DPI (pixels par pouce) + var mmToPixels = function(mm) { return (mm / 25.4) * dpi; }; // Conversion mm -> pixels + var cmToPixels = function(cm) { return (cm * 10) / 25.4 * dpi; }; // Conversion cm -> pixels + + // Calculer les dimensions en pixels en fonction des unités + var bleedPixels, safeZonePixels; + if (app.preferences.rulerUnits === Units.MM) { + bleedPixels = mmToPixels(settings.bleedSize); + safeZonePixels = mmToPixels(settings.safeZoneSize); + } else if (app.preferences.rulerUnits === Units.CM) { + bleedPixels = cmToPixels(settings.bleedSize / 10); + safeZonePixels = cmToPixels(settings.safeZoneSize / 10); + } + + // Ajuster le plan de travail + resizeCanvasWithBleed(doc, bleedPixels); + + // Ajouter et verrouiller les repères + addGuidesAndLock(doc, bleedPixels, safeZonePixels, doc.width, doc.height, settings.addCenterGuides); + + alert("Plan de travail ajusté et repères verrouillés avec les dimensions suivantes :\n" + + "- Fond perdu : " + (settings.bleedSize * 10) + " mm\n" + + "- Zone de protection : " + (settings.safeZoneSize * 10) + " mm\n" + + (settings.addCenterGuides ? "- Repères centraux ajoutés\n" : "") + + "\nVersion 3.0" + + "\nScript Créé par Sébastien VTL."); + } catch (e) { + alert("Erreur : " + e.message); + } +} + +// Fonction pour afficher le menu de sélection avec option pour les repères centraux +function showSettingsDialog() { + var dialog = new Window("dialog", "Paramètres de réglages"); + dialog.orientation = "column"; + + // Section pour le fond perdu + var bleedGroup = dialog.add("group"); + bleedGroup.add("statictext", undefined, "Fond perdu (en mm) :"); + var bleedDropdown = bleedGroup.add("dropdownlist", undefined, ["3", "4", "5"]); + bleedDropdown.selection = 0; + + // Section pour la zone de protection + var safeZoneGroup = dialog.add("group"); + safeZoneGroup.add("statictext", undefined, "Zone de protection (en mm) :"); + var safeZoneDropdown = safeZoneGroup.add("dropdownlist", undefined, ["3", "4", "5"]); + safeZoneDropdown.selection = 0; + + // Option pour ajouter des repères centraux + var centerGuideGroup = dialog.add("group"); + centerGuideGroup.add("checkbox", undefined, "Option repère centre document"); + var centerGuideCheckbox = centerGuideGroup.children[0]; + centerGuideCheckbox.value = false; // Désactivé par défaut + + // Boutons OK et Annuler + var buttonGroup = dialog.add("group"); + buttonGroup.alignment = "center"; + var okButton = buttonGroup.add("button", undefined, "OK"); + var cancelButton = buttonGroup.add("button", undefined, "Annuler"); + + cancelButton.onClick = function () { dialog.close(0); }; + okButton.onClick = function () { dialog.close(1); }; + + if (dialog.show() !== 1) return null; + + return { + bleedSize: parseFloat(bleedDropdown.selection.text) / 10, // Convertir 3, 4, 5 en 0.3, 0.4, 0.5 + safeZoneSize: parseFloat(safeZoneDropdown.selection.text) / 10, + addCenterGuides: centerGuideCheckbox.value + }; +} + +// Fonction pour ajuster le plan de travail +function resizeCanvasWithBleed(doc, bleedPixels) { + var originalWidth = doc.width; + var originalHeight = doc.height; + doc.resizeCanvas(originalWidth + 2 * bleedPixels, originalHeight + 2 * bleedPixels, AnchorPosition.MIDDLECENTER); +} + +// Fonction pour ajouter et verrouiller les repères +function addGuidesAndLock(doc, bleedPixels, safeZonePixels, width, height, addCenterGuides) { + // Ajouter les repères + var guides = []; + + // Repères du fond perdu + guides.push(addGuide(doc, 0, "V")); + guides.push(addGuide(doc, width, "V")); + guides.push(addGuide(doc, 0, "H")); + guides.push(addGuide(doc, height, "H")); + + // Repères des dimensions de base + guides.push(addGuide(doc, bleedPixels, "V")); + guides.push(addGuide(doc, width - bleedPixels, "V")); + guides.push(addGuide(doc, bleedPixels, "H")); + guides.push(addGuide(doc, height - bleedPixels, "H")); + + // Repères de la zone de protection + guides.push(addGuide(doc, bleedPixels + safeZonePixels, "V")); + guides.push(addGuide(doc, width - bleedPixels - safeZonePixels, "V")); + guides.push(addGuide(doc, bleedPixels + safeZonePixels, "H")); + guides.push(addGuide(doc, height - bleedPixels - safeZonePixels, "H")); + + + // Ajouter les repères centraux si activé + + // Verrouiller les repères en verrouillant le document + doc.guides.locked = true; + doc.suspendHistory("Verrouillage des repères", function() { + app.runMenuItem(stringIDToTypeID("lockGuides")); + }); + + if (addCenterGuides) { + guides.push(addGuide(doc, width / 2, "V")); + guides.push(addGuide(doc, height / 2, "H")); + } + + // Verrouiller les repères + doc.guides.locked = true; +} + +// Fonction pour ajouter un repère +function addGuide(doc, position, orientation) { + return doc.guides.add(orientation === "H" ? Direction.HORIZONTAL : Direction.VERTICAL, position); +} + +// Exécuter la fonction principale +createBleed();