//////////////////////////////////////////////////////////////////////////// // ADOBE SYSTEMS INCORPORATED // Copyright 2007 Adobe Systems Incorporated // All Rights Reserved // // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the // terms of the Adobe license agreement accompanying it. If you have received this file from a // source other than Adobe, then your use, modification, or distribution of it requires the prior // written permission of Adobe. ///////////////////////////////////////////////////////////////////////////// /* Echantillon 10*15 automate Sélectionne un échantillon 10*15cm pour un format de tirage donné. true */ //////////////////////////////////////////////////////////////////////////// ///// Script de création de calques de texte ///// ///// Auteur : Bruno Gallet ///// Date :14 juillet 2013 ///// ///////////////////////////////////////////////////////////////////////////// #target photoshop // Script dédié à Photoshop app.bringToFront(); // On place Photoshop au premier plan displayDialogs = DialogModes.NO; // Désactivation des boîtes de dialogue // Sauvegarde des unités de mesure en cours, et passage en pixels par défaut var oRulerUnits = preferences.rulerUnits; var oTypeUnits = preferences.typeUnits; preferences.rulerUnits = Units.PIXELS; preferences.typeUnits = TypeUnits.PIXELS; try { var DocActif = activeDocument; // Document actif (image ouverte au premier plan) var leFormat = new Array() var laValeur = "A0,840,1186,A1,594,840,A2,420,594,A3+,329,483,A3,297,420,A4,210,297,Autre,600,900," //~ var DocActif = activeDocument; // Document actif (image ouverte au premier plan) var HauteurExtrait, LargeurExtrait, LargeurTirage, laResolution, laMarge = Number(); function GetResolution() { LargeurTirage = ((leFormat[2]-laMarge)/25.4) ; // Détermine la résolution nécessaire en DPI laResolution = DocActif.width/LargeurTirage; } function GetFormat(MonFormat) { leFormat[0] = MonFormat; var lePointeurDeb = laValeur.indexOf(MonFormat+","); lePointeurDeb = laValeur.indexOf(",",lePointeurDeb+1,); var lePointeurFin = laValeur.indexOf(",",lePointeurDeb+1,); leFormat[1] = laValeur.substring(lePointeurDeb+1,lePointeurFin); lePointeurDeb = lePointeurFin+1; lePointeurFin = laValeur.indexOf(",",lePointeurDeb+1,); leFormat[2] = laValeur.substring(lePointeurDeb,lePointeurFin); } function SnpCreateSlider () { this.windowRef = null; } /** Create a window, add a slider control and a text label. Define behavior for the slider that updates the text in the label. @return True if the snippet ran as expected, false otherwise. @type Boolean */ SnpCreateSlider.prototype.run = function() { var retval = true; // Create a dialog-type window (a modeless or floating dialog), var win = new Window("dialog", "Préparation d'un échantillon", [150, 150, 600, 400]); this.windowRef = win; // Choix du format de tirage var leTirage=new Array("A0","A1","A2","A3+","A3","A4","Autre"); // Définition d'un format spécifique GetFormat("Autre"); win.pnlSpec = win.add("panel", [220, 10, 440, 100], "Format spécifique"); win.pnlSpec.visible = false; win.pnlSpec.HautSt = win.pnlSpec.add("statictext", [10, 20, 115, 35],"Petit côté en mm :"); win.pnlSpec.HautEt = win.pnlSpec.add("edittext", [120, 20, 180, 40],leFormat[1]); win.pnlSpec.LargeSt = win.pnlSpec.add("statictext", [10, 50, 115, 65],"Grand côté en mm :"); win.pnlSpec.LargeEt = win.pnlSpec.add("edittext", [120, 50, 180, 70],leFormat[2]); var FormatDef = 3 // Choix du format par défaut GetFormat(leTirage[FormatDef]); var MargeDef = 3; // Marge par défaut laMarge = MargeDef; // applique la marge par défaut GetResolution() win.sText = win.add( "statictext", [10,10,175,25], "Format du tirage" ); win.sourceList = win.add( "dropdownlist", [10,30,100,45], leTirage ); win.sourceList.selection = FormatDef; win.sDescText = win.add( "statictext", [120,33,200,48], leFormat[1] + " * " + leFormat[2] + "mm" ); win.resolText = win.add( "statictext", [10,75,275,90], "Résolution du document : " + Math.round(laResolution) + " DPI"); // Add a panel to contain the components win.pnl = win.add("panel", [10, 110, 440, 200], "Définissez la marge du tirage"); // Add some labels that describe the state of the slider win.pnl.minLbl = win.pnl.add("statictext", [30, 47, 40, 60], "0"); win.pnl.curLbl = win.pnl.add("statictext", [152, 47, 170, 60], "25"); win.pnl.maxLbl = win.pnl.add("statictext", [280, 47, 300, 60], "50"); win.pnl.displayTextLbl = win.pnl.add("statictext", [320, 20, 360, 40], "Marge :"); win.pnl.displayUnitLbl = win.pnl.add("statictext", [378, 20, 410, 40], "mm"); win.pnl.displayLbl = win.pnl.add("statictext", [365, 20, 400, 40],laMarge ); // Add a slider control win.pnl.sliderCtrl = win.pnl.add("slider", [20, 20, 300, 45], laMarge, 0, 50); // Add buttons win.resetButton = win.add("button", [25, 210, 125, 240], "Initialiser"); win.doneButton = win.add("button",[320, 210, 420, 240] , "Valider"); // Define behavior for when the dialog value changes win.sourceList.onChange = function() { // Mise à jour du texte sur le format. GetFormat(leTirage[win.sourceList.selection.index]); win.sDescText.text = leFormat[1] + " * " + leFormat[2] + "mm"; GetResolution() win.resolText.text = "Résolution du document : " + Math.round(laResolution) + " DPI"; if (leTirage[win.sourceList.selection.index] == "Autre") { win.pnlSpec.visible = true; } else { win.pnlSpec.visible = false;} }; win.pnl.sliderCtrl.onChanging = function() { var val = Math.round(win.pnl.sliderCtrl.value); // Update the label text with the current slider value. win.pnl.displayLbl.text = val; laMarge= win.pnl.sliderCtrl.value; GetResolution() win.resolText.text = "Résolution du document : " + Math.round(laResolution) + " DPI"; }; win.pnlSpec.HautEt.onChange = function() { leFormat[1] = win.pnlSpec.HautEt.text; leFormat[2] = win.pnlSpec.LargeEt.text; win.sDescText.text = leFormat[1] + " * " + leFormat[2] + "mm"; GetResolution() win.resolText.text = "Résolution du document : " + Math.round(laResolution) + " DPI"; }; win.pnlSpec.LargeEt.onChange = function() { leFormat[1] = win.pnlSpec.HautEt.text; leFormat[2] = win.pnlSpec.LargeEt.text; win.sDescText.text = leFormat[1] + " * " + leFormat[2] + "mm"; GetResolution() win.resolText.text = "Résolution du document : " + Math.round(laResolution) + " DPI"; }; // Define behavior for the "Exit" button win.doneButton.onClick = function () { win.close(); }; // Define behavior for the "Reset" button win.resetButton.onClick = function() { win.pnl.sliderCtrl.value = MargeDef; win.pnl.displayLbl.text= MargeDef; win.sourceList.selection = FormatDef; } // Display the window win.center() win.show(); return retval; } //===============================================// // PROGRAMME PRINCIPAL // // Affiche la boîte de dialogue // // Calcule la taille de la zone 10*15 // // La place au centre de l'image // //===============================================// if(typeof(SnpCreateSlider_unitTest) == "undefined") { new SnpCreateSlider().run(); } // Détermine la résolution nécessaire en DPI laResolution = DocActif.width/LargeurTirage; // Applique cette résolution à l'image DocActif.resizeImage(undefined, undefined, laResolution, ResampleMethod.NONE); // Calcule les dimensions en pixels de l'échantillon en fonction de la résolution if ( DocActif.height > DocActif.width ) { // vérifie si le document est plus haut que large LargeurExtrait = (95.6*laResolution/25.4); HauteurExtrait = (143.4*laResolution/25.4); } else { HauteurExtrait = (95.6*laResolution/25.4); LargeurExtrait = (143.4*laResolution/25.4); } // Sélectionne l'échantillon au centre de l'image var selRegion = Array( // On va dessiner une aire de 4 points Array((DocActif.width-LargeurExtrait)/2,(DocActif.height-HauteurExtrait)/2 ), Array(((DocActif.width-LargeurExtrait)/2)+LargeurExtrait,(DocActif.height-HauteurExtrait)/2), Array(((DocActif.width-LargeurExtrait)/2)+LargeurExtrait, (DocActif.height-HauteurExtrait)/2+HauteurExtrait), Array((DocActif.width-LargeurExtrait)/2, (DocActif.height-HauteurExtrait)/2+HauteurExtrait)); DocActif.selection.select(selRegion,SelectionType.REPLACE) alert ("Déplacer la zone avec l'outil Sélection\npuis couper avec la commande\nMenu-Image-Recadrer","Echantillon 95,6*14,34mm prêt") //===============================================// // Le programme est accompli. // // L'utilisateur va pouvoir // // sélectionner la zone de l'échantillon, // // la découper et l'imprimer // //===============================================// } catch(oErreur) { //Une erreur est survenue... alert(oErreur.description) } // Remise en place des unités de mesure initiales preferences.rulerUnits = oRulerUnits; preferences.typeUnits = oTypeUnits; ////////// FIN DU SCRIPT ///////////////////////////////////////////////////