30 Replies Latest reply on Dec 7, 2015 2:28 AM by kobugi pawel

    get swatches in dropdown list with color preview...

    dhishok Level 1

      Hi experts,

       

      I am creating one gui for swatches related automation task in CS4 using javascript. Is it possible to get swatches in dropdown list with its color preview? Same like colors in Swatches palette.

       

      Your help will be much appreciated. Thanks in advance.

       

      Thiyagu

        • 1. Re: get swatches in dropdown list with color preview...
          Mi_D Level 3

          Dear Thiyagu

           

          for droplist thy this code

          var w = new Window ("dialog");

          var swatches=app.swatches.everyItem().name;

          var preset_list = w.add ("dropdownlist", undefined, swatches);

          w.orientation = "row";

          w.add ("button", undefined, "OK");

          w.add ("button", undefined, "Cancel");

          w.show ();

           

           

          Mi_D

          • 2. Re: get swatches in dropdown list with color preview...
            Haakenlid Level 3

            I think what you want is possible, but very complicated to achieve.

             

            You can add ScriptIUIImages to the ListItems in the dropdown menu.

            It might be possible to generate ScriptUIImages at run time from the swatches, but I suspect that would be quite complicated to do.

             

            Another possibility is to have the swatch colour as the background of the listItem with ScriptUIBrush.

            You will need find out how to extract the RGB values from the swatches. That is not straightforward.

            • 3. Re: get swatches in dropdown list with color preview...
              dhishok Level 1

              Hi Mi_D,

               

              Thanks for your reply.

               

              I am able to create the dropdownlist with the swatch names.

              But I want the swatches name in the dropdownlist along with its color preview as displayed below.

               

              Picture 2.png

               

               

              Thanks in advance.

               

              Thiyagu

              • 4. Re: get swatches in dropdown list with color preview...
                dhishok Level 1

                Hi,

                 

                Thanks for your comments.

                 

                Is this only possible through plug-ins? Or we can create this type of dropdownlist through script dialog also?

                 

                 

                Thanks in advance

                 

                Thiyagu

                • 5. Re: get swatches in dropdown list with color preview...
                  [Jongware]-9BC6tI Level 4

                  You can create custom images to be shown in a drop-down list, but they have to exist in advance.

                   

                  As far as I know, there is no immediate control to create swatch images automatically. It should be remotely possible to create them on request (using RGB colors provided by InDesign), but unfortunately the image types that are accepted by ScriptUI are all of the complicated type -- PNG, JPEG. I don't know what that 3rd type is: IDRC; perhaps that's a possibility, I dunno.

                   

                  See Peter Kahrel's ScriptUI for Dummies for more information on using images in ScriptUI.

                  • 6. Re: get swatches in dropdown list with color preview...
                    Marc Autret Level 4

                    [Jongware] wrote:

                     

                    You can create custom images to be shown in a drop-down list, but they have to exist in advance.

                     

                     

                    Actually they don't have to. I found that ScriptUI supports string-encoded image files. So you can inject PNG or JPEG images in you widgets w/o having to create real underlying files. Of course, this implies that we generate data on the fly with respect to the image format specification.

                     

                    In the script below, I will use the PNG approach — http://www.w3.org/TR/PNG/

                     

                    So, here is my first attempt to address dhishok's question:

                     

                    // PNG-String Generator (=> 13X13 pixels)
                    //----------------------------------------------------------
                    var pngSwatch = (function()
                    {
                         // Table of CRCs of 8-bit messages
                         var CRC_256 = [0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];
                         
                         // PNG Cyclic Redundancy Code algorithm -- http://www.w3.org/TR/PNG/#D-CRCAppendix
                         var crc32 = function(/*uint[]*/buf)
                              {
                              var c = 0xffffffff >>> 0,
                                   n = buf.length >>> 0,
                                   i;
                              for( i=0 ; i < n ; ++i )
                                   c = CRC_256[( ( c>>>0 ) ^ buf[i]) & 0xff] ^ (c >>> 8);
                         
                              return (c ^ 0xffffffff)>>>0;
                              };
                    
                         var PNG_PROLOG = "\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\r\x00\x00\x00\r\b\x03\x00\x00\x00E5\x14N\x00\x00\x00\x06",
                              PNG_EPILOG = "\x00\x00\x00\x16IDATx\xDAb`D\x06\f\x8C\f\b0\xC8x\xC8\x00 \xC0\x00\x11\xC6\x001{U\x93\xB6\x00\x00\x00\x00IEND\xAEB`\x82";
                    
                         return function(/*uint[3]*/rgb)
                              {
                              var buf = [0x50,0x4C,0x54,0x45, rgb[0], rgb[1], rgb[2], 0, 0, 0],
                                   crc = crc32(buf),
                                   i, r;
                              
                              buf = buf.concat([ (crc>>>24)&0xFF, (crc>>>16)&0xFF, (crc>>>8)&0xFF, (crc>>>0)&0xFF ]);
                              i = buf.length;
                              while( i-- )
                                   buf[i] = String.fromCharCode(buf[i]);
                              
                              r = PNG_PROLOG + buf.join('') + PNG_EPILOG;
                              
                              buf.length = 0;
                              buf = null;
                              return r;
                              };
                    })();
                    
                    // Parse the app|doc Swatches (supports CMYK and RGB)
                    //----------------------------------------------------------
                    var CMYK = ColorSpace.CMYK,
                         RGB = ColorSpace.RGB,
                         LAB = ColorSpace.LAB;
                    
                    var PROCESS = ColorModel.PROCESS;
                    
                    var     target = (app.documents.length&&app.activeDocument)||app,
                         swatches = target.swatches.everyItem().getElements(),
                         n = swatches.length,
                         color, rgbValues,
                         colors = [],
                         i, t;
                    
                    for( i=n-1 ; i>=0 ; i-- )
                         {
                         color = swatches[i];
                         rgbValues = false;
                    
                         if( !(swatches[i] instanceof Color) ) continue;
                         color = color.getElements()[0];
                    
                         switch( color.space )
                              {
                              case CMYK:
                                   if( color.model != PROCESS ) break;
                                   if( 'Black' == color.name )
                                        {
                                        rgbValues = [0,0,0];
                                        break;
                                        }
                                        
                                   // backup cmyk
                                   t = color.colorValue;
                                   // convert cmyk to rvb
                                   color.space = RGB;
                                   rgbValues = color.colorValue;
                                   // revert to cmyk
                                   color.space = CMYK;
                                   color.colorValue = t;
                                   break;
                              case RGB:
                                   rgbValues = color.colorValue;
                                   break;
                              case LAB:
                                   // todo!
                                   break;
                              default:
                                   ;
                              }
                    
                         if( false !== rgbValues )
                              colors.unshift( {name:color.name, png: pngSwatch(rgbValues)} );
                         }
                    
                    // UI
                    //----------------------------------------------------------
                    var w = new Window("dialog", "See Your Swatches!"),
                         ddl = w.add("dropdownlist");
                    n = colors.length;
                    for( i=0 ; i < n ; ++i )
                         (ddl.add('item', "\xa0"+colors[i].name)).image = colors[i].png;
                    ddl.selection = 0;
                    w.show();
                    

                     

                     

                    @+

                    Marc

                    • 7. Re: get swatches in dropdown list with color preview...
                      Marijan Tompa [tomaxxi] Level 4

                      Marc, this is AWESOME!

                      Congrats!

                       

                      --

                      tomaxxi

                      • 8. Re: get swatches in dropdown list with color preview...
                        Marijan Tompa [tomaxxi] Level 4

                        Hey, I just replaced "// todo!" with this:

                         

                        // backup lab
                        t = color.colorValue;
                        // convert lab to rvb
                        color.space = RGB;
                        rgbValues = color.colorValue;
                        // revert to lab
                        color.space = LAB;
                        color.colorValue = t;
                        

                         

                        And it worked!

                         

                        Thanks Marc!

                         

                        --

                        tomaxxi

                        • 9. Re: get swatches in dropdown list with color preview...
                          Harbs. Level 6

                          Marc,

                          This is very, very nice!

                           

                          Amazing work!

                           

                          Harbs

                          • 10. Re: get swatches in dropdown list with color preview...
                            [Jongware]-9BC6tI Level 4

                            Marc, nice info about the live-injecting. That's really useful, since -- if I understand it correctly -- this means you don't have to do the no-file-then-write-it trick. Correct?

                             

                            As for, uh, actually generating a PNG on the fly ... it's one of those things I considered theoretically possible, but it's a while I last checked out the PNG specs and I couldn't remember if it had a non-compressed sub-format. Seems you circumvented that one nicely. Sweet, sweet job, man.

                             

                            .. I take it no-one really knows what that IDRC is?

                            • 11. Re: get swatches in dropdown list with color preview...
                              Harbs. Level 6

                              [Jongware] wrote:

                              .. I take it no-one really knows what that IDRC is?

                              That should be InDesign Resources (the images available to plugins). Whether there are any really available to Script UI is anyone's guess...

                               

                              Marc: are you interested in finding them?

                               

                              Harbs

                              • 12. Re: get swatches in dropdown list with color preview...
                                Marijan Tompa [tomaxxi] Level 4

                                Well, IDRC is PNG

                                Try renaming IDRC to PNG and you will be able to see it

                                You can also use IDRC in ScriptUI!

                                 

                                --

                                tomaxxi

                                • 13. Re: get swatches in dropdown list with color preview...
                                  Marijan Tompa [tomaxxi] Level 4

                                  You can use IDRC directly in ScriptUI, but finding them is little hard job because folder structure is different on Mac and PC platform. Do you maybe have a solution?

                                   

                                  --

                                  tomaxxi

                                  • 14. Re: get swatches in dropdown list with color preview...
                                    Harbs. Level 6

                                    Yes. IDRC files are png files.

                                     

                                    Maybe I'm reading too much into it, but I'm assuming that the third type is not a file, but rather an internal reference. IDRC files are loaded into InDesign, and can be addressed by plugins directly (not necessarily by accessing the files). Maybe there's some way to use the built-in IDRC references (by specifying a valid resource name?)...

                                     

                                    I'll see what I can find out...

                                     

                                    Harbs

                                    • 15. Re: get swatches in dropdown list with color preview...
                                      Harbs. Level 6

                                      I don't need to find out. I already knew this answer once upon a time. Too much stuff falling out of my head...

                                       

                                      Yes. You can use named icons in Script UI, but only if the application defines them. I believe that Photoshop is the only app which defines named icon resources for Script UI.

                                       

                                      It would be nice if InDesign did that for us, but I can think of better uses for the InDesign engineers...

                                       

                                      Harbs

                                      • 16. Re: get swatches in dropdown list with color preview...
                                        [Jongware]-9BC6tI Level 4

                                        Okay, thanks guys. By the way: I *guessed* at what Marc is doing here (hint: save one of the swatches & look at the file's properties) and, well, why stop here? Round swatches & my personal Stamp of Approval!

                                         

                                        Screen shot 2011-01-25 at 10.29.19 PM.png

                                         

                                         

                                         

                                        // PNG-String Generator (=> 13X13 pixels)
                                        //----------------------------------------------------------
                                        var pngSwatch = (function()
                                        {
                                             // Table of CRCs of 8-bit messages
                                             var CRC_256 = [0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];
                                        
                                             // PNG Cyclic Redundancy Code algorithm -- http://www.w3.org/TR/PNG/#D-CRCAppendix
                                             var crc32 = function(/*uint[]*/buf)
                                                  {
                                                  var c = 0xffffffff >>> 0,
                                                       n = buf.length >>> 0,
                                                       i;
                                                  for( i=0 ; i < n ; ++i )
                                                       c = CRC_256[( ( c>>>0 ) ^ buf[i]) & 0xff] ^ (c >>> 8);
                                        
                                                  return (c ^ 0xffffffff)>>>0;
                                                  };
                                        
                                             var PNG_PROLOG = "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52\x00\x00\x00\x0D\x00\x00\x00\x0D\x08\x03\x00\x00\x00\x45\x35\x14\x4E\x00\x00\x00\x09",
                                                  PNG_EPILOG = "\x00\x00\x00\x03\x74\x52\x4E\x53\xFF\xFF\x00\xD7\xCA\x0D\x41\x00\x00\x00\x2C\x49\x44\x41\x54\x78\xDA\x62\x60\x02\x02\x06\x10\x00\x33\x40\x6C\x46\x10\x00\xF1\x19\x98\x20\x6C\x30\x1F\x9D\x87\xE0\x80\x14\x93\xCB\xC3\x67\x03\x9A\x5B\x90\xDD\x09\x10\x60\x00\x3B\x5D\x00\xA6\x23\x15\xD4\x84\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82";
                                        
                                             return function(/*uint[3]*/rgb)
                                                  {
                                                  var buf = [0x50,0x4C,0x54,0x45, 0,0,0, rgb[0], rgb[1], rgb[2], 0xff, 0xff, 0xff],
                                                       crc = crc32(buf),
                                                       i, r;
                                        
                                                  buf = buf.concat([ (crc>>>24)&0xFF, (crc>>>16)&0xFF, (crc>>>8)&0xFF, (crc>>>0)&0xFF ]);
                                                  i = buf.length;
                                                  while( i-- )
                                                       buf[i] = String.fromCharCode(buf[i]);
                                        
                                                  r = PNG_PROLOG + buf.join('') + PNG_EPILOG;
                                        
                                                  buf.length = 0;
                                                  buf = null;
                                                  return r;
                                                  };
                                        })();
                                        
                                        // Parse the app|doc Swatches (supports CMYK and RGB)
                                        //----------------------------------------------------------
                                        var CMYK = ColorSpace.CMYK,
                                             RGB = ColorSpace.RGB,
                                             LAB = ColorSpace.LAB;
                                        
                                        var PROCESS = ColorModel.PROCESS;
                                        
                                        var     target = (app.documents.length&&app.activeDocument)||app,
                                             swatches = target.swatches.everyItem().getElements(),
                                             n = swatches.length,
                                             color, rgbValues,
                                             colors = [],
                                             i, t;
                                        
                                        for( i=n-1 ; i>=0 ; i-- )
                                             {
                                             color = swatches[i];
                                             rgbValues = false;
                                        
                                             if( !(swatches[i] instanceof Color) ) continue;
                                             color = color.getElements()[0];
                                        
                                             switch( color.space )
                                                  {
                                                  case CMYK:
                                                       if( color.model != PROCESS ) break;
                                                       if( 'Black' == color.name )
                                                            {
                                                            rgbValues = [0,0,0];
                                                            break;
                                                            }
                                        
                                                       // backup cmyk
                                                       t = color.colorValue;
                                                       // convert cmyk to rvb
                                                       color.space = RGB;
                                                       rgbValues = color.colorValue;
                                                       // revert to cmyk
                                                       color.space = CMYK;
                                                       color.colorValue = t;
                                                       break;
                                                  case RGB:
                                                       rgbValues = color.colorValue;
                                                       break;
                                                  case LAB:
                                                            // backup lab
                                                            t = color.colorValue;
                                                            // convert lab to rvb
                                                            color.space = RGB;
                                                            rgbValues = color.colorValue;
                                                            // revert to lab
                                                            color.space = LAB;
                                                            color.colorValue = t;
                                                            break;
                                                  default:
                                                       ;
                                                  }
                                        
                                             if( false !== rgbValues )
                                                  colors.unshift( {name:color.name, png: pngSwatch(rgbValues)} );
                                             }
                                        
                                        // UI
                                        //----------------------------------------------------------
                                        var w = new Window("dialog", "See Your Swatches!");
                                        w.orientation = 'row';
                                        i = w.add ('image', undefined),
                                        ddl = w.add("dropdownlist");
                                        i.image = "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A\x00\x00\x00\x0D\x49\x48\x44\x52\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1F\xF3\xFF\x61\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0B\x13\x00\x00\x0B\x13\x01\x00\x9A\x9C\x18\x00\x00\x00\x9B\x49\x44\x41\x54\x38\x11\xA5\x93\xE1\x0E\xC0\x10\x0C\x84\x75\xEF\xED\x8F\x47\xF3\x62\xE6\x6A\x95\x8B\x28\x32\x97\x2C\x5A\xDA\xCF\x69\x32\x29\x55\xE1\x42\xCF\x45\x6F\x6F\x2D\x29\x25\xB8\xD0\x35\xE7\xAC\x31\x72\x7C\x9F\xC3\xBE\x37\xE6\xAD\xA2\x3D\x43\x01\x5C\x80\x18\x62\xD8\x98\x4F\x9F\x50\x1D\xD5\x9E\x33\x4D\x01\x31\x46\xED\x16\x11\x5D\x9B\x89\x10\x2C\x67\xF4\x14\xC0\x05\x5E\x6C\x50\x17\x70\xFA\x0C\x17\xC0\x37\xCF\xAC\xDB\xB9\x0B\xE0\x39\x98\x5D\x6B\xE2\xD5\x05\x70\x11\x62\x83\xC0\x8D\xC5\xD8\x5F\x02\x4E\xE6\xB0\x04\xE0\x86\x9D\x96\x00\xCC\x81\xED\x22\xE6\x5C\xE1\x75\x43\x85\xFF\xE1\x8F\x04\x4D\x3B\x9B\xAB\xF3\x17\xEE\x89\xAB\xE2\xA0\x2A\x38\x8A\x00\x00\x00\x00\x49\x45\x4E\x44\xAE\x42\x60\x82";
                                        n = colors.length;
                                        
                                        for( i=0 ; i < n ; ++i )
                                             (ddl.add('item', "\xa0"+colors[i].name)).image = colors[i].png;
                                        ddl.selection = 0;
                                        
                                        w.show();
                                         
                                        
                                        • 17. Re: get swatches in dropdown list with color preview...
                                          Marc Autret Level 4

                                          Harbs. wrote:

                                           

                                          That should be InDesign Resources (the images available to plugins). Whether there are any really available to Script UI is anyone's guess...

                                           

                                          Marc: are you interested in finding them?

                                           

                                          I think Peter reveals where IDRC are located in the Dummies guide. But, anyway, I already grabbed all ID icons in my own folders ;-)

                                          (And I confirm that IDRC are just PNG.)

                                           

                                          I also noticed that ScriptUIImage's icon property supports "system resource name," such as "SystemWarningIcon", but I couldn't find out an exhaustive list of these special strings... Maybe someone here would have more details on this subject (?)

                                           

                                          @+

                                          Marc

                                          • 19. Re: get swatches in dropdown list with color preview...
                                            Harbs. Level 6

                                            Marc Autret wrote:


                                            I think Peter reveals where IDRC are located in the Dummies guide. But, anyway, I already grabbed all ID icons in my own folders ;-)

                                            (And I confirm that IDRC are just PNG.)

                                             

                                            Yeah. I have a folder of al the icons as well.

                                            I also noticed that ScriptUIImage's icon property supports "system resource name," such as "SystemWarningIcon", but I couldn't find out an exhaustive list of these special strings... Maybe someone here would have more details on this subject (?)

                                             

                                            That's what I was referring to when I was talking about the named icons (I'm pretty tired...). The info I got from someone who should know what he's talking about was that InDesign doesn't define them (but Photoshop does).

                                             

                                            Harbs

                                            • 20. Re: get swatches in dropdown list with color preview...
                                              Marc Autret Level 4

                                              Here is an improved version of my original draft.

                                              This one should support most of the Swatch types including Spot colors (Mixed Inks and Gradients remain in the todo list).

                                              Also, it offers a localisation feature for special color names (None, Paper, Black, Registration).

                                               

                                              SeeYourSwatches.jpg

                                               

                                              /**********************************************************/
                                              /*                                                        */
                                              /*     See Your Swatches in ScriptUI | v.1.1 (beta)       */
                                              /*                                                        */
                                              /**********************************************************/
                                              
                                              // PNG-String Generator (=> 13X13 pixels)
                                              //----------------------------------------------------------
                                              var pngSwatch = (function()
                                              {
                                                   // Table of CRCs of 8-bit messages
                                                   var CRC_256 = [0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];
                                                   
                                                   // PNG Cyclic Redundancy Code algorithm -- http://www.w3.org/TR/PNG/#D-CRCAppendix
                                                   var crc32 = function(/*uint[]*/buf)
                                                        {
                                                        var c = 0xffffffff >>> 0,
                                                             n = buf.length >>> 0,
                                                             i;
                                                        for( i=0 ; i < n ; ++i )
                                                             c = CRC_256[( ( c>>>0 ) ^ buf[i]) & 0xff] ^ (c >>> 8);
                                                   
                                                        return (c ^ 0xffffffff)>>>0;
                                                        };
                                              
                                                   var PNG_PROLOG = "\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\r\x00\x00\x00\r\b\x03\x00\x00\x00E5\x14N\x00\x00\x00\x06",
                                                        PNG_EPILOG = "\x00\x00\x00\x16IDATx\xDAb`D\x06\f\x8C\f\b0\xC8x\xC8\x00 \xC0\x00\x11\xC6\x001{U\x93\xB6\x00\x00\x00\x00IEND\xAEB`\x82";
                                              
                                                   return function(/*uint[3]*/rgb)
                                                        {
                                                        var buf = [0x50,0x4C,0x54,0x45, rgb[0], rgb[1], rgb[2], 0, 0, 0],
                                                             crc = crc32(buf),
                                                             i, r;
                                                        
                                                        buf = buf.concat([ (crc>>>24)&0xFF, (crc>>>16)&0xFF, (crc>>>8)&0xFF, (crc>>>0)&0xFF ]);
                                                        i = buf.length;
                                                        while( i-- )
                                                             buf[i] = String.fromCharCode(buf[i]);
                                                        
                                                        r = PNG_PROLOG + buf.join('') + PNG_EPILOG;
                                                        
                                                        buf.length = 0;
                                                        buf = null;
                                                        return r;
                                                        };
                                              })();
                                              
                                              var PNG_NONE = "\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\r\x00\x00\x00\r\b\x03\x00\x00\x00E5\x14N\x00\x00\x00\fPLTE\xFF\xFF\xFF\x00\x00\x00\xFF\xBC\xBC\xFF\x00\x00 C\x89[\x00\x00\x002IDATx\xDAL\xC7\xC9\x01\x000\b\x020\xD4\xFDwn\xF1\xC2\xFC\x02\xBB`\x18\x1Eg\x1E\xAE\xFD`\xC7\xEC2\xB3J\xAFS\x9B\xE46\x9C\xC2)\xDC\xF5\x04\x18\x00+\xB9\x00z\xA7\xBDj\x1B\x00\x00\x00\x00IEND\xAEB`\x82";
                                              
                                              var localeColor = function(/*str*/name)
                                              {
                                                   return '['+app.translateKeyString('$ID/'+name)+']';
                                              };
                                              
                                              // Parse the app|doc Swatches
                                              //----------------------------------------------------------
                                              var RGB = ColorSpace.RGB,
                                                   SPOT = ColorModel.SPOT,
                                                   REGISTRATION = ColorModel.REGISTRATION,
                                                   MIXEDINK = ColorModel.MIXEDINKMODEL;
                                              
                                              var     target = (app.documents.length&&app.activeDocument)||app,
                                                   swatches = target.swatches.everyItem().getElements(),
                                                   n = swatches.length,
                                                   color, rgbValues,
                                                   colors = [],
                                                   sp, md, nm,
                                                   i, t;
                                              
                                              for( i=n-1 ; i>=0 ; i-- )
                                                   {
                                                   color = swatches[i];
                                              
                                                   if( !(color instanceof Color) ) continue;
                                                   
                                                   color = color.getElements()[0];
                                                   sp = color.space;
                                                   md = color.model;
                                                   nm = color.name;
                                              
                                                   if( MIXEDINK==md ) continue;     // TODO
                                                   
                                              
                                                   switch( -(REGISTRATION==md||"Black" == nm) || +(RGB==sp) )
                                                        {
                                                        case -1:
                                                             rgbValues = [0,0,0];
                                                             nm = localeColor(nm);
                                                             break;
                                                        case 1:
                                                             rgbValues = color.colorValue;
                                                             break;
                                                        default:
                                                             // backup the color value
                                                             t = color.colorValue;
                                                             // convert to rgb
                                                             color.space = RGB;
                                                             rgbValues = color.colorValue;
                                                             // revert to the color space
                                                             color.space = sp;
                                                             color.colorValue = t;
                                                        }
                                              
                                                   if( nm=="Paper" ) nm = localeColor(nm);
                                              
                                                   colors.unshift({
                                                        name:nm,
                                                        png: pngSwatch(rgbValues),
                                                        id:color.id
                                                        });
                                                   }
                                              
                                              colors.unshift({
                                                   name:localeColor("None"),
                                                   png: PNG_NONE,
                                                   id:target.swatches.itemByName('None').id
                                                   });
                                              
                                              // UI
                                              //----------------------------------------------------------
                                              var w = new Window("dialog", "See Your Swatches!"),
                                                   ddl = w.add("dropdownlist");
                                              n = colors.length;
                                              for( i=0 ; i < n ; ++i )
                                                   (ddl.add('item', "\xa0"+colors[i].name)).image = colors[i].png;
                                              ddl.selection = 0;
                                              w.show();
                                              

                                               

                                              Hope this works in other platforms/contexts...

                                               

                                              @+

                                              Marc

                                              • 21. Re: get swatches in dropdown list with color preview...
                                                [Jongware]-9BC6tI Level 4

                                                Marc, this is an awesome find. If you can find Javascript implementations of Freetype and zlib, you can even add font previews to dialogs!

                                                 

                                                Some more fun, using 3 different images -- for CMYK, RGB, and "other":

                                                 

                                                Screen shot 2011-01-26 at 1.38.58 AM.png

                                                 

                                                Now I think I could make that Space Invaders script I was dreamin' about ...

                                                • 22. Re: get swatches in dropdown list with color preview...
                                                  [Jongware]-9BC6tI Level 4

                                                  .. Here is a slightly easier to change PNG class. It adds one parameter to pngSwatch: the size of the new image.

                                                   

                                                   

                                                  var pngSwatch = (function()
                                                  {
                                                       // Table of CRCs of 8-bit messages
                                                       var CRC_256 = [0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];
                                                   
                                                       // PNG Cyclic Redundancy Code algorithm -- http://www.w3.org/TR/PNG/#D-CRCAppendix
                                                       var crc32s = function(/*uint[]*/buf)
                                                            {
                                                            var c = 0xffffffff >>> 0,
                                                                 n = buf.length >>> 0,
                                                                 i;
                                                            for( i=0 ; i < n ; ++i )
                                                                 c = CRC_256[( ( c>>>0 ) ^ buf.charCodeAt(i)) & 0xff] ^ (c >>> 8);
                                                   
                                                            return (c ^ 0xffffffff)>>>0;
                                                            };
                                                  
                                                   var header = function ()
                                                   {
                                                    return "\x89PNG\x0D\x0A\x1A\x0A";
                                                   };
                                                   var i2s = function (/*int32*/i)
                                                   {
                                                    return String.fromCharCode(i>>>24) + String.fromCharCode(i>>>16) + String.fromCharCode(i>>>8) + String.fromCharCode(i);
                                                   }
                                                   var chunk = function (/*4 Char PNG code*/chunkType, /*data*/data)
                                                   {
                                                    var buf = String.fromCharCode((data.length >>> 24) & 0xff) + String.fromCharCode((data.length >>> 16) & 0xff) + String.fromCharCode((data.length >>> 8) & 0xff) + String.fromCharCode(data.length & 0xff)
                                                     + chunkType + data;
                                                    var crc = crc32s(buf);
                                                    buf += i2s (crc);
                                                    return buf;
                                                   };
                                                   
                                                   var adler32 = function (/*string*/buf)
                                                   {
                                                    var i,a = 0, b = buf.length, c = b;
                                                    for (i=0; i<c; i++)
                                                    {
                                                     a += buf.charCodeAt(i);
                                                     b += (c-i)*buf.charCodeAt(i);
                                                    }
                                                    return ((b % 65521)<<16)+(a % 65521);
                                                   }
                                                   return function(/*uint[3]*/rgb, /*int*/ size)
                                                   {
                                                    var t, u,v, bits = '';
                                                    for (u=0; u<size; u++)
                                                    {
                                                     bits += "\x00\x00";
                                                     for (v=2; v<size; v++)
                                                      bits += (u==0 || u==size-1) ? "\x00" : "\x01";
                                                     bits += "\x00";
                                                    }
                                                    t = bits.length;
                                                    bits += i2s (adler32(bits));
                                                    var r = header() + chunk ('IHDR', i2s (size)+i2s(size)+"\x08\x03\x00\x00\x00");
                                                    r += chunk ('PLTE', '\x00\x00\x00'+String.fromCharCode(rgb[0])+String.fromCharCode(rgb[1])+String.fromCharCode(rgb[2]));
                                                    r += chunk ('IDAT', "\x78\x9c\x01"+ String.fromCharCode (t & 0xff)+String.fromCharCode(t>>>8)+String.fromCharCode ((~t) & 0xff)+String.fromCharCode((~(t>>>8)) & 0xff)+bits) + 'IEND';
                                                    return r;
                                                   };
                                                  })();
                                                  
                                                  1 person found this helpful
                                                  • 23. Re: get swatches in dropdown list with color preview...
                                                    dhishok Level 1

                                                    Hi Marc,

                                                     

                                                    Thanks for your great help. Its awesome.

                                                    • 24. Re: get swatches in dropdown list with color preview...
                                                      dhishok Level 1

                                                      Hi Jongware, Harbs & Tomaxii

                                                       

                                                      Thanks to everyone who are all supported for this task.

                                                       

                                                      Great support.

                                                      • 25. Re: get swatches in dropdown list with color preview...
                                                        Peter Kahrel Adobe Community Professional & MVP

                                                        > I think Peter reveals where IDRC are located in the Dummies guide.

                                                         

                                                        Correct, but I forgot to give a link to an icon catalogue. It's here: http://www.kahrel.plus.com/indesign/icon_catalogue.pdf

                                                         

                                                        Peter

                                                        • 26. Re: get swatches in dropdown list with color preview...
                                                          [Jongware]-9BC6tI Level 4

                                                          Are these icons actually used in CS5? If I don't like them and chance one, does that reflect in the program?

                                                           

                                                          Hah hah -- if so, what if I write a PNG editor script to change them from within a running InDesign?

                                                          • 27. Re: get swatches in dropdown list with color preview...
                                                            Harbs. Level 6

                                                            Theun,

                                                             

                                                            Trying to make InDesign blow up on you, eh?

                                                             

                                                            Harbs

                                                            • 28. Re: get swatches in dropdown list with color preview...
                                                              creativejoan0425 Level 1

                                                              Can make a dropdown list conditional text colors?

                                                              • 29. Re: get swatches in dropdown list with color preview...
                                                                Colin Flashman Adobe Community Professional

                                                                Love the way this works. Please excuse my ignorance, but if I want to apply the value selected from the dropdown field to a task at hand (e.g. changing the color of a QR code), how do I call this value in?

                                                                 

                                                                A typical QR code line looks like this:

                                                                 

                                                                myPageItem.createHyperlinkQRCode("http://www.adobe.com", "Magenta");


                                                                I've swapped out the web address for a variable I'm calling in, but I can't seem to get the syntax right to replace the color:


                                                                myPageItem.createHyperlinkQRCode(myURL, ddl.selection);


                                                                Can anyone please let me know where my syntax is going wrong? Thank you.

                                                                • 30. Re: get swatches in dropdown list with color preview...
                                                                  kobugi pawel Level 1

                                                                  Hi Jongware,

                                                                  How is it possible? two icons in DropDownList?

                                                                  Did you join two png strings?


                                                                  best

                                                                  Pawel