public void accodaStampaFoto(Fotografia foto, ParamStampaFoto param)
        {
            if (param.nomeStampante == null)
            {
                param.nomeStampante = ricavaStampante(param.formatoCarta);
            }

            CodaDiStampe codaDiStampe = ricavaCodaDiStampa(param);

            // Creo un nuovo lavoro di stampa e lo aggiungo alla coda.
            LavoroDiStampaFoto lavoro = new LavoroDiStampaFoto(foto, param);

            codaDiStampe.EnqueueItem(lavoro);
        }
Exemple #2
0
        /**
         *  Pronto per stampare
         */
        protected override void ProcessItem(LavoroDiStampa lavoroDiStampa)
        {
            //check if the user called Stop
            if (StopRequested)
            {
                _giornale.Info("Stampa stoppata dall'utente");
                _giornale.InfoFormat("Thread di stampa terminato durante il lavoro '{0}'.", lavoroDiStampa.ToString());
                return;
            }

            // Inizio a stampare
            lavoroDiStampa.stato = LavoroDiStampa.Stato.InEsecuzione;


            // Per evitare problemi di multi-thread, le immagini le idrato nello stesso thread con cui le manderò in stampa.
            // Non anticipare questo metodo altrimenti poi non va.
            // Se le immagini non sono idratate, le carico!
            ParamStampa param = null;

            if (lavoroDiStampa is LavoroDiStampaFoto)
            {
                LavoroDiStampaFoto lavoroDiStampaFoto = lavoroDiStampa as LavoroDiStampaFoto;

                //Rinstanzio il stampatore che potrebbe essere di un tipo differente dal mio
                LavoroDiStampaFoto lsp = (LavoroDiStampaFoto)lavoroDiStampa;
                param = lsp.param;
            }
            else if (lavoroDiStampa is LavoroDiStampaProvini)
            {
                LavoroDiStampaProvini lavoroDiStampaProvini = lavoroDiStampa as LavoroDiStampaProvini;

/* li carico dopo in modo diverso
 *                              foreach (Fotografia fot in lavoroDiStampaProvini.fotografie)
 *                              {
 *                                      AiutanteFoto.idrataImmagineDaStampare( fot );
 *                              }
 */

                //Rinstanzio il stampatore che potrebbe essere di un tipo differente dal mio
                LavoroDiStampaProvini lsp = (LavoroDiStampaProvini)lavoroDiStampa;
                param = lsp.param;
            }
            else if (lavoroDiStampa is LavoroDiStampaTessera)
            {
                LavoroDiStampaTessera lavoroDiStampaTessera = lavoroDiStampa as LavoroDiStampaTessera;
                param = lavoroDiStampaTessera.param;
            }

            // Se sono cambiati i parametri istanzio nuovamente lo stampatore.

            if (_stampatore == null || !param.GetType().IsAssignableFrom(_stampatore.tipoParamGestito))
            {
                _stampatore = ImagingFactory.Instance.creaStampatore(param, param.nomeStampante);
            }


            EsitoStampa esito = _stampatore.esegui(lavoroDiStampa);

            lavoroDiStampa.esitostampa = esito;
            lavoroDiStampa.stato       = LavoroDiStampa.Stato.Completato;

            StampatoMsg eventArgs = new StampatoMsg(lavoroDiStampa);

            eventArgs.descrizione = lavoroDiStampa.ToString();
            eventArgs.esito       = lavoroDiStampa.esitostampa == EsitoStampa.Ok ? Esito.Ok : Esito.Errore;

            if (stampaCompletataCallback != null)
            {
                stampaCompletataCallback.Invoke(this, eventArgs);
            }
        }