Scrittura dei comandi

Negli articoli precedenti abbiamo analizzato le classi di Ezechiele che permettono l’interfacciamento con i servizi di Colibrì residenti sul server

Ad un livello superiore, tutte le comunicazioni consistono in  sequenze di comandi e parametri.

Un comando consiste da una sequenza di parole chiave che compongono una frase;

Alcuni esempi:

“open project” è il comando usato per aprire un progetto sul server

“get colorway list”  è il comando che richiede la lista dei nomi delle varianti colore di un progetto

“select colorway”  indica al server di selezionare una variante attiva

Table of Contents

Struttura di un comando

Tipi di parametri

Al comando seguono un insieme di parametri, se richiesto dal contesto. Il tipo di parametri possibili è stato già descritto nell’gli articoli precedenti, ed è formato da uno dei tipi  riportati a destra.

Quasi tutti i comandi utilizzano, per i/o dati con Colibrì parametri string e/o json_io. string è esattamente la classe string di c#, mentre json_io è usata per scambiare dati in formato Json.

Tutti comandi in genere sono utilizzati per comporre le funzioni nella classe Session: ad esempio:

Tipi di parametri 

  • string
  • int
  • float
  • double
  • void *
  • Json_io 
				
						 public bool open_image(string path_file)
        {
            return send_cmd(_s("open image"), _s(path_file));
        }
				
			

La funzione di Session open_image contiene il comando send_cmd che anda al server il comando “open image” passando come parametro il nome del file che contiene l’immagine.

La funzione _s(..) usata nella funzione deve essere usata per formattare le stringhe mandate a send_cmd.

Nell’esempio che segue è mostrato come è scritta la funzione di Session che richiede un Json contenente informazioni sul progetto aperto

				
					        public bool get_image_info(Json_io info)
        {
            return send_cmd_json_get("get image info", info);
        }

				
			

La funzione riceve come argomento un’istanza Json_io e,  mediante la  send_cmd_json_get genera il comando “get image info” assegnadogli il parametro Json_io info.

Di seguito si riporta il codice usato in un programma per utilizzare la funzione:

				
					
conn = new Session();

if (conn.open_connection())
{
..
		{
				Json_io js = new Json_io();
				if (conn.get_image_info( js))
				{
			             string j_txt = js.input();
...
...
				
			

Come si può osservare, tutto il codice relativo alla comunicazione con il server è completamente nascosto nella classe Session. Per estrarre il testo Json in una stringa j_txt basta richiamare la funzione js.input().

La classe Session contiene una funzione particolare, che è usata frequentemente nell’interfacciamento con CLB_Ezechiele: get_object

				
					     public bool get_object(string obj_id, string name, Json_io js)
        {
            string cmd = "get " + obj_id;

            bool ret;
            char* inp = null;

            ret = send_cmd(_s(cmd), _s(file_name), _p(&(inp)));
            if (ret)
                js.input(inp);
            return ret;
        }
				
			

Oggetti remoti

La funzione riceve tre parametri,

  • obj_id, che identifica un tipo di oggetto remoto,
  • name, che identifica un’istanza dell’oggetto,
  • js, che è la rappresentazione Json dell’oggetto richiesto.

Alcuni tipi di oggetto remoto sono riportati sulla destra

La funzione può essere usata o direttamente, o per comporre comandi interni a Session:

				
					        public bool get_color_book(string name, Json_io info)
        {
            return get_object("color_book", name, info);
        }
				
			

Alcuni tipi di oggetti remoti

  • “color_book”
  • “image”
  • “project”
  • “colorway”
  • “list”

Un altro esempio è fornito nella funzionedi Session che rimanda il contenuto di una variante in formato Json:

				
					         public bool get_colorway(string name, Json_io info)
        {
             return  get_object("colorway", name, info);
        }
				
			

Lo stesso risultato poteva ottenersi attraverso il comando :

				
					
conn = new Session();
....
if (conn.open_connection())
{
..
		Json_io info = new Json_io();
		string var_name = "var_1";  // nome variante richiesta
		if (conn.get_object("colorway", var_name, info))
		{
		      string j_txt = js.input();   // contenuto json ricevuto


	
				
			

La stringa  j_txt conterrà quindi  il seguente Json relativo al contenuto della variante richiesta;

				
					{
    "object": "colorwave_info",
    "created": "2021,4,8  15::33::13",
    "colorway": {
        "name": "var_1",
        "project": "export_swy_from_psd",
        "profile": "Epson_7780",
        "calc_model": 0,
        "coverage": 0,
        "num_channels": 5,
        "channels": [
            {
                "name": "Channel_A",
                "gray_mode": true,
                "visible": true,
                "selected": false,
                "num_levels": 101,
                "opacity": 26.540283203125,
                "curve": {
                    "plot": {
                        "name": "Channel_A",
                        "num": 2,
                        "points": [
                            [
                                0.0,
                                0.0
                            ],
                            [
                                100.0,
                                100.0
                            ]
                        ]
                    }
                },
                "RECIPE": {
                    "name": "Rcp_0_g",
                    "num": 2,
                    "formula": [
                        [
                            "Yellow",
                            0.38355758786201479
                        ],
                        [
                            "Cyan",
                            100.0
                        ]
                    ]
                },
                "color": {
                    "name": "Rcp_0_g",
                    "Spectrum": [
                        15.370100975036621,
                        23.422590255737306,
                        29.953996658325197,
                        37.942283630371097,
                        48.78965377807617,
                        56.37799072265625,
                        57.152374267578128,
                        55.9360466003418,
                        52.39760208129883,
                        45.216190338134769,
                        37.936363220214847,
                        28.670886993408204,
                        18.910539627075197,
                        10.811792373657227,
                        5.022641658782959,
                        1.4342137575149537,
                        0.8119819164276123,
                        0.7258106470108032,
                        0.6969957947731018,
                        0.6936452388763428,
                        0.7032386660575867,
                        0.7178488969802856,
                        0.7309024930000305,
                        0.7509914040565491,
                        0.7706788182258606,
                        0.7881043553352356,
                        0.8263927698135376,
                        0.8969957232475281,
                        0.9436262845993042,
                        1.0091913938522339,
                        1.1283670663833619
                    ],
                    "lab": [
                        36.192108154296878,
                        10.524678230285645,
                        -67.51866912841797
                    ],
                    "BGRA": [
                        190,
                        93,
                        0,
                        255
                    ]
                }
            },
            {
                "name": "Channel_B",
                "gray_mode": true,
                "visible": true,
                "selected": false,
                "num_levels": 101,
                "opacity": 100.0,
                "curve": {
                    "plot": {
                        "name": "Channel_B",
                        "num": 2,
                        "points": [
                            [
                                0.0,
                                0.0
                            ],
                            [
                                100.0,
                                100.0
                            ]
                        ]
                    }
                },
                "RECIPE": {
                    "name": "Rcp_0_g",
                    "num": 2,
                    "formula": [
                        [
                            "black",
                            0.6923936605453491
                        ],
                        [
                            "Magenta",
                            98.73052978515625
                        ]
                    ]
                },
                "color": {
                    "name": "Rcp_0_g",
                    "Spectrum": [
                        17.15768051147461,
                        19.98257064819336,
                        20.265695571899415,
                        18.48465919494629,
                        15.156633377075196,
                        10.353891372680664,
                        7.416517734527588,
                        4.686729431152344,
                        2.6415631771087648,
                        1.4826929569244385,
                        0.9973734021186829,
                        0.720327615737915,
                        0.6557047963142395,
                        0.6383085250854492,
                        0.650858461856842,
                        0.7464291453361511,
                        0.9467703104019165,
                        2.7426490783691408,
                        11.64474105834961,
                        28.5883846282959,
                        45.22322463989258,
                        56.3504524230957,
                        62.90924835205078,
                        67.72562408447266,
                        69.99871063232422,
                        71.46752166748047,
                        72.39102935791016,
                        73.41431427001953,
                        74.36046600341797,
                        74.957763671875,
                        75.65513610839844
                    ],
                    "lab": [
                        44.38389205932617,
                        74.18580627441406,
                        11.558382034301758
                    ],
                    "BGRA": [
                        91,
                        0,
                        210,
                        255
                    ]
                }
            },
            {
                "name": "Channel_C",
                "gray_mode": true,
                "visible": true,
                "selected": false,
                "num_levels": 101,
                "opacity": 100.0,
                "curve": {
                    "plot": {
                        "name": "",
                        "num": 2,
                        "points": [
                            [
                                0.0,
                                0.0
                            ],
                            [
                                100.0,
                                100.0
                            ]
                        ]
                    }
                },
                "RECIPE": {
                    "name": "Rcp_0_g",
                    "num": 1,
                    "formula": [
                        [
                            "Yellow",
                            100.0
                        ]
                    ]
                },
                "color": {
                    "name": "Rcp_0_g",
                    "Spectrum": [
                        2.7708332538604738,
                        2.0262327194213869,
                        1.9316667318344117,
                        1.930433988571167,
                        1.9736806154251099,
                        1.9570833444595338,
                        2.089444398880005,
                        2.3210244178771974,
                        2.7197742462158205,
                        8.250035285949707,
                        24.992795944213868,
                        47.65203094482422,
                        64.3984375,
                        72.4394760131836,
                        75.51856231689453,
                        76.67105865478516,
                        76.86817932128906,
                        76.78888702392578,
                        76.60960388183594,
                        76.43910217285156,
                        76.58853912353516,
                        76.8972396850586,
                        77.19425201416016,
                        77.76766967773438,
                        78.46067810058594,
                        78.90008544921875,
                        79.13517761230469,
                        79.77124786376953,
                        80.41317749023438,
                        80.61470794677735,
                        80.99237823486328
                    ],
                    "lab": [
                        85.91248321533203,
                        -11.432645797729493,
                        103.90499114990235
                    ],
                    "BGRA": [
                        0,
                        213,
                        238,
                        255
                    ]
                }
            },
            {
                "name": "Channel_D",
                "gray_mode": true,
                "visible": true,
                "selected": false,
                "num_levels": 101,
                "opacity": 100.0,
                "curve": {
                    "plot": {
                        "name": "",
                        "num": 2,
                        "points": [
                            [
                                0.0,
                                0.0
                            ],
                            [
                                100.0,
                                100.0
                            ]
                        ]
                    }
                },
                "RECIPE": {
                    "name": "Rcp_0_g",
                    "num": 4,
                    "formula": [
                        [
                            "black",
                            93.45245361328125
                        ],
                        [
                            "Magenta",
                            1.3271353244781495
                        ],
                        [
                            "Yellow",
                            2.3091766834259035
                        ],
                        [
                            "Cyan",
                            0.8404242992401123
                        ]
                    ]
                },
                "color": {
                    "name": "Rcp_0_g",
                    "Spectrum": [
                        -0.1488509327173233,
                        -0.08148672431707382,
                        0.11891461908817291,
                        0.3758833110332489,
                        0.48273172974586489,
                        0.47980067133903506,
                        0.49989721179008486,
                        0.5010838508605957,
                        0.5288886427879334,
                        0.5637514591217041,
                        0.6087225675582886,
                        0.7112927436828613,
                        0.7692776918411255,
                        0.7617394924163818,
                        0.7410827875137329,
                        0.6855840086936951,
                        0.6703487038612366,
                        0.6964706778526306,
                        0.6777570843696594,
                        0.6706343293190002,
                        0.6783053278923035,
                        0.6763195395469666,
                        0.6436156034469605,
                        0.5825983881950378,
                        0.5265608429908752,
                        0.4304374158382416,
                        0.3388173580169678,
                        0.2628176808357239,
                        0.1992177963256836,
                        0.16381533443927766,
                        0.20248015224933625
                    ],
                    "lab": [
                        6.123162269592285,
                        -2.7303898334503176,
                        3.3498032093048097
                    ],
                    "BGRA": [
                        22,
                        27,
                        23,
                        255
                    ]
                }
            },
            {
                "name": "Channel_E",
                "gray_mode": true,
                "visible": true,
                "selected": false,
                "num_levels": 101,
                "opacity": 18.009475708007814,
                "curve": {
                    "plot": {
                        "name": "Channel_E",
                        "num": 2,
                        "points": [
                            [
                                0.0,
                                0.0
                            ],
                            [
                                100.0,
                                100.0
                            ]
                        ]
                    }
                },
                "RECIPE": {
                    "name": "Rcp_0_g",
                    "num": 2,
                    "formula": [
                        [
                            "Yellow",
                            60.942989349365237
                        ],
                        [
                            "Cyan",
                            13.228802680969239
                        ]
                    ]
                },
                "color": {
                    "name": "Rcp_0_g",
                    "Spectrum": [
                        4.950418949127197,
                        4.268266201019287,
                        4.156672954559326,
                        4.125658988952637,
                        4.184963703155518,
                        4.406579971313477,
                        4.71592903137207,
                        5.655770778656006,
                        9.270329475402832,
                        27.30539321899414,
                        47.59349822998047,
                        61.51638412475586,
                        66.83704376220703,
                        67.13677215576172,
                        64.9785385131836,
                        59.808284759521487,
                        55.389408111572269,
                        51.703857421875,
                        49.287567138671878,
                        47.651206970214847,
                        46.32572555541992,
                        45.76964569091797,
                        46.08810806274414,
                        47.26789474487305,
                        49.00423049926758,
                        51.07051467895508,
                        52.67268753051758,
                        53.4520149230957,
                        53.19430923461914,
                        52.014984130859378,
                        50.76056671142578
                    ],
                    "lab": [
                        78.03764343261719,
                        -31.11166763305664,
                        73.15077209472656
                    ],
                    "BGRA": [
                        62,
                        203,
                        171,
                        255
                    ]
                }
            }
        ]
    }
}
				
			

Un altro esempio è fornito dalla funzione Session per la ricezione di una lista delle varianti colore del progetto aperto:

				
					        public bool get_colorway_list(Json_io info)
        {
            return get_object("list","colorway", info);
        }

				
			

in questo caso, la funzione  riceverà le stringhe “list” e “colorway” che definiscono un oggetto remoto, una  lista di varianti (il risultato sarà equivalente al comando “get list colorway“, analizzare il codice di get_object sopra riportato..)

Leave a Reply

Skip to toolbar