Esempio n. 1
0
        public void Save(Animazione elem, BinaryWriter bw)
        {
            // Animazione
            bw.Write(elem.GetType().ToString());
            bw.Write(elem.Nome);
            bw.Write(elem.FrameRate);

            // Modello di riferimento
            Modello modello = Documento.getInstance().ModelloRiferimento;

            bw.Write(modello.Size.Width);
            bw.Write(modello.Size.Height);

            // Frames
            bw.Write(elem.Frames.Count);
            byte[] frameAsArray;
            foreach (Frame frame in elem.Frames)
            {
                frameAsArray = frame.ToByteArray();
                bw.Write(frame.Size.Width);
                bw.Write(frameAsArray.Length);
                bw.Write(frameAsArray);
            }

            // Informazione
            IPersister infoPersister = PersisterFactory.GetPersister(elem.InformazioneAssociata.GetType());

            infoPersister.Save(elem.InformazioneAssociata, bw);
        }
Esempio n. 2
0
        public ImmagineFissa Retrieve(BinaryReader br)
        {
            // Immagine
            string nome = br.ReadString();

            // Modello
            Modello modello = Documento.getInstance().ModelloRiferimento;
            int     width   = br.ReadInt32();
            int     height  = br.ReadInt32();

            if (width != modello.Size.Width || height != modello.Size.Height)
            {
                return(null);
            }

            // Frame
            int nCol = br.ReadInt32();
            int len  = br.ReadInt32();

            byte[] frameAsArray = new byte[len];
            br.Read(frameAsArray, 0, len);

            // Informazione
            IPersister    infoPersister = PersisterFactory.GetPersister(br.ReadString());
            TypeAttribute attr          = (TypeAttribute)infoPersister.GetType().GetCustomAttribute(typeof(TypeAttribute));
            IInformazione infoAssociata = (IInformazione)infoPersister.Retrieve(br);

            // Out
            ImmagineFissa result = new ImmagineFissa(new Frame(frameAsArray, nCol, width * height), infoAssociata, nome);

            return(result);
        }
Esempio n. 3
0
        public void Save(Sequenza elem, BinaryWriter bw)
        {
            // Sequenza
            bw.Write(elem.GetType().ToString());
            bw.Write(elem.Nome);

            // Modello di riferimento
            Modello modello = Documento.getInstance().ModelloRiferimento;

            bw.Write(modello.Size.Width);
            bw.Write(modello.Size.Height);

            // Elementi
            bw.Write(elem.Count);
            Elemento   value;
            IPersister persister;

            for (int i = 0; i < elem.Count; i++)
            {
                value = elem[i];
                bw.Write(elem.GetDurataOf(value));
                persister = PersisterFactory.GetPersister(value.GetType());
                persister.Save(value, bw);
            }
        }
Esempio n. 4
0
        public Sequenza Retrieve(BinaryReader br)
        {
            // Sequenza
            string   nome   = br.ReadString();
            Sequenza result = new Sequenza();

            result.Nome = nome;

            // Modello
            Modello modello = Documento.getInstance().ModelloRiferimento;
            int     width   = br.ReadInt32();
            int     height  = br.ReadInt32();

            if (width != modello.Size.Width || height != modello.Size.Height)
            {
                return(null);
            }

            // Elementi
            int        nElementi = br.ReadInt32();
            uint       durata;
            string     type;
            IPersister persister;

            for (int i = 0; i < nElementi; i++)
            {
                durata    = br.ReadUInt32();
                type      = br.ReadString();
                persister = PersisterFactory.GetPersister(type);
                result.AggiungiElemento((Elemento)persister.Retrieve(br), durata);
            }

            // Out
            return(result);
        }
Esempio n. 5
0
        public Animazione Retrieve(BinaryReader br)
        {
            // Animazione
            string     nome      = br.ReadString();
            uint       frameRate = br.ReadUInt32();
            Animazione result    = new Animazione(frameRate);

            result.Nome = nome;

            // Modello
            Modello modello = Documento.getInstance().ModelloRiferimento;
            int     width   = br.ReadInt32();
            int     height  = br.ReadInt32();

            if (width != modello.Size.Width || height != modello.Size.Height)
            {
                return(null);
            }

            // Frames
            byte[] frameAsArray;
            int    nFrames = br.ReadInt32();

            for (int i = 0; i < nFrames; i++)
            {
                int nCol = br.ReadInt32();
                int len  = br.ReadInt32();
                frameAsArray = new byte[len];
                br.Read(frameAsArray, 0, len);
                result.Frames.Add(new Frame(frameAsArray, nCol, width * height));
            }


            // Informazione
            IPersister    infoPersister = PersisterFactory.GetPersister(br.ReadString());
            IInformazione infoAssociata = (IInformazione)infoPersister.Retrieve(br);

            // Out
            result.InformazioneAssociata = infoAssociata;
            return(result);
        }
Esempio n. 6
0
        public void Save(ImmagineFissa elem, BinaryWriter bw)
        {
            // Immagine
            bw.Write(elem.GetType().ToString());
            bw.Write(elem.Nome);

            // Modello di riferimento
            Modello modello = Documento.getInstance().ModelloRiferimento;

            bw.Write(modello.Size.Width);
            bw.Write(modello.Size.Height);

            // Frame
            byte[] frameAsArray = elem.Frame.ToByteArray();
            bw.Write(elem.Frame.Size.Width);
            bw.Write(frameAsArray.Length);
            bw.Write(frameAsArray);

            // Informazione
            IPersister infoPersister = PersisterFactory.GetPersister(elem.InformazioneAssociata.GetType());

            infoPersister.Save(elem.InformazioneAssociata, bw);
        }