Example #1
0
        public OpdrachtViewModel(Groep groep)
        {
            Groep              = groep;
            NrHuidigeOpdracht  = groep.Pad.GetProgressie()[0];
            NrTotaalOpdrachten = groep.Pad.GetProgressie()[1];

            if (groep.Pad.GetCurrentOpdracht().IsOpgelost)
            {
                PercentageVoltooid = (int)(((double)(NrHuidigeOpdracht) / (double)NrTotaalOpdrachten) * 100);
            }
            else
            {
                PercentageVoltooid = (int)(((double)(NrHuidigeOpdracht - 1) / (double)NrTotaalOpdrachten) * 100);
            }

            Opdracht           = groep.Pad.GetCurrentOpdracht();
            IsTijdsOpdracht    = Opdracht.OpdrachtBepaler is EnumOpdrachtBepaler.TIJD;
            FoutePogingen      = Opdracht.FoutePogingen;
            OpdrachtIsOpgelost = groep.Pad.GetCurrentOpdracht().IsOpgelost;
            Groepsantwoord     = Opdracht.BerekenCorrectAntwoord();

            try
            {
                VolgendeOpdrachtIsToegankelijk = groep.Pad.GetNextOpdracht().IsToegankelijk;
                ToegangscodeVolgendeOpdracht   = groep.Pad.GetNextOpdracht().Toegangscode.Code;
                ActieVolgendeOpdracht          = groep.Pad.GetNextOpdracht().Actie.Omschrijving;
            }
            catch (ArgumentOutOfRangeException) // laatste oefening
            {
                IsLaatsteOefening = true;
            }
        }
        public async Task <ActionResult <Opdracht> > PostOpdracht(Opdracht opdracht)
        {
            _context.Opdrachten.Add(opdracht);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetOpdracht", new { id = opdracht.Id }, opdracht));
        }
        public async Task <IActionResult> PutOpdracht(long id, Opdracht opdracht)
        {
            if (id != opdracht.Id)
            {
                return(BadRequest());
            }

            _context.Entry(opdracht).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!OpdrachtExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
 public PadOpdracht(Pad pad, Opdracht opdracht, int order)
 {
     Opdracht   = opdracht;
     Pad        = pad;
     PadId      = pad.PadId;
     OpdrachtId = opdracht.VolgNr;
     Order      = order;
 }
Example #5
0
        public async Task <ActionResult> RenderImage(int id)
        {
            Opdracht opdracht = await db.Opdrachten.FindAsync(id);

            byte[] imageBytes = opdracht.Image;

            return(File(imageBytes, $"{ImageExtension.GetMimeTypeFromImageByteArray(imageBytes)}"));
        }
Example #6
0
        public ActionResult DeleteConfirmed(int id)
        {
            Opdracht opdracht = db.Opdracht.Find(id);

            db.Opdracht.Remove(opdracht);
            db.SaveChanges();
            return(RedirectToAction("Index", "Admin"));
        }
Example #7
0
 public void CreateJob(Opdracht opdracht)
 {
     using (FestispecContext context = new FestispecContext())
     {
         context.Opdracht.Add(opdracht);
         context.SaveChanges();
     }
 }
Example #8
0
 public void UpdateJob(Opdracht opdracht)
 {
     using (FestispecContext context = new FestispecContext())
     {
         Opdracht toUpdate = context.Opdracht.Where(c => c.OpdrachtID == opdracht.OpdrachtID).FirstOrDefault();
         context.Entry(toUpdate).CurrentValues.SetValues(opdracht);
         context.SaveChanges();
     }
 }
 public void UpdateJobStatus(int jobId, string status)
 {
     using (FestispecContext context = new FestispecContext())
     {
         Opdracht toUpdate = context.Opdracht.FirstOrDefault(j => j.OpdrachtID == jobId);
         toUpdate.Status = context.Status.First(s => s.Betekenis == status).Betekenis;
         context.SaveChanges();
     }
 }
 public void CreateQuotation(Offerte quotation)
 {
     using (FestispecContext context = new FestispecContext())
     {
         Opdracht job = context.Opdracht.FirstOrDefault(j => j.OpdrachtID == quotation.OpdrachtID);
         job.Offerte.Add(quotation);
         context.SaveChanges();
     }
 }
Example #11
0
 public ActionResult Edit([Bind(Include = "Id,Naam,Context,OnderwerpId")] Opdracht opdracht)
 {
     if (ModelState.IsValid)
     {
         db.Entry(opdracht).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index", "Admin"));
     }
     ViewBag.OnderwerpId = new SelectList(db.Onderwerp, "Id", "Naam", opdracht.OnderwerpId);
     return(View(opdracht));
 }
Example #12
0
        public ActionResult Create([Bind(Include = "Id,Naam,Context,OnderwerpId")] Opdracht opdracht)
        {
            if (ModelState.IsValid)
            {
                db.Opdracht.Add(opdracht);
                db.SaveChanges();
                return(RedirectToAction("Create", "Vraag", new { id = opdracht.Id }));
            }

            ViewBag.OnderwerpId = new SelectList(db.Onderwerp, "Id", "Naam", opdracht.OnderwerpId);
            return(View(opdracht));
        }
        public Opdracht GetOpdracht(int jobID)
        {
            Opdracht opdracht = null;

            using (FestispecContext context = new FestispecContext())
            {
                opdracht = context.Opdracht
                           .Include(o => o.Inspectieformulier.Select(i => i.Vraag.Select(v => v.Antwoorden)))
                           .Where(o => o.OpdrachtID == jobID)
                           .FirstOrDefault();
            }

            return(opdracht);
        }
Example #14
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Opdracht opdracht = db.Opdracht.Find(id);

            if (opdracht == null)
            {
                return(HttpNotFound());
            }
            return(View(opdracht));
        }
Example #15
0
        // GET: Opdracht/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Opdracht opdracht = db.Opdrachten.Find(id);

            //OpdrachtViewModel opdrachtViewModel = new OpdrachtViewModel(opdracht);
            if (opdracht == null)
            {
                return(HttpNotFound());
            }
            return(View(opdracht));
        }
Example #16
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Opdracht opdracht = db.Opdracht.Find(id);

            if (opdracht == null)
            {
                return(HttpNotFound());
            }

            ViewBag.OnderwerpId = new SelectList(db.Onderwerp, "Id", "Naam", opdracht.OnderwerpId);
            return(View(opdracht));
        }
        public ActionResult Create(int id)
        {
            Opdracht opdracht = db.Opdracht.Find(id);

            if (opdracht == null)
            {
                return(HttpNotFound());
            }
            if (Session["Datalist"] == null)
            {
                DataList.Add(cl.CreateListVraag(1));
                DataList.Add(cl.CreateListVraag(2));
                Session["DataList"] = DataList;
            }

            return(View(Session["DataList"]));
        }
Example #18
0
        private async void Aanmelden(Opdracht opdracht)
        {
            string dateTime = DateTime.Now.ToString();
            bool   answer   = await DisplayAlert("Aanmelden", $"Tijd van aanmelden: {dateTime}", "Aanmelden", "Cancel");

            if (answer == true)
            {
                opdracht.aangemeld         = dateTime;
                opdrachtCompleet.aangemeld = dateTime;

                OpdrachtPost postOpdracht = new OpdrachtPost(opdracht);
                Opdracht     newOpdracht  = ds.createOpdracht(postOpdracht);
                await ds.SaveDbOpdrachten();

                AanAfmelden.Text  = "Afmelden";
                AanAfmelden2.Text = "Afmelden";
            }
        }
Example #19
0
        private async void Afmelden(Opdracht opdracht)
        {
            string dateTime = DateTime.Now.ToString();
            bool   answer   = await DisplayAlert("Afmelden", $"Tijd van afmelden: {dateTime}", "Afmelden", "Cancel");

            if (answer == true)
            {
                opdracht.afgemeld         = dateTime;
                opdrachtCompleet.afgemeld = dateTime;

                OpdrachtPost postOpdracht = new OpdrachtPost(opdracht);
                Opdracht     newOpdracht  = ds.createOpdracht(postOpdracht);
                await ds.SaveDbOpdrachten();

                opdrachtCompleet.afgemeld = dateTime;

                Application.Current.MainPage = new NavigationPage(new Homepage());
            }
        }
Example #20
0
        public ActionResult Create([Bind(Include = "OpdrachtNummer,WerkInstructie,DatumUitvoering,KabelLeverancier,Waarnemingen,Image,Bedrijfsuren,AflegRedenen")] Opdracht opdracht, HttpPostedFileBase file)
        {
            if (file != null && file.ContentLength > 0)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        string path = Path.Combine(Server.MapPath("~/Images"), Path.GetFileName(file.FileName));
                        file.SaveAs(path);
                        opdracht.Image = ImageExtension.ConvertImage(path);

                        db.Opdrachten.Add(opdracht);
                        db.SaveChanges();

                        return(RedirectToAction("Index"));
                    }
                }
                catch (DataException Dex)
                {
                    ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
                    return(View("Error", new HandleErrorInfo(Dex, "Opdracht", "Create")));
                }
                catch (FileNotFoundException FNFex)
                {
                    ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
                    return(View("Error", new HandleErrorInfo(FNFex, "Opdracht", "Create")));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
                    return(View("Error", new HandleErrorInfo(ex, "Opdracht", "Create")));
                }
            }
            else
            {
                ViewBag.FileNotSpecifiedErrorMessage = "You have not specified a file.";
            }

            return(View(opdracht));
        }
Example #21
0
        public async Task InitializeData()
        {
            _context.Database.EnsureDeleted();
            if (_context.Database.EnsureCreated())
            {
                // Oefeningen
                var oefening1 = new Oefening("opgave1", 100);
                var oefening2 = new Oefening("opgave2", 200);
                var oefening3 = new Oefening("opgave3", 300);

                // GroepsBewerkingen
                var groepsBewerking1 = new GroepsBewerking("Vermenigvuldig bovenstaande met 3", 3, Operator.vermeningvuldigen);
                var groepsBewerking2 = new GroepsBewerking("Trek hier 4 van af.", 4, Operator.aftrekken);
                var groepsBewerking3 = new GroepsBewerking("Deel door 3", 3, Operator.delen);

                // Opdrachten
                var opdracht1  = new Opdracht("code1", oefening1, groepsBewerking1);
                var opdracht2  = new Opdracht("code2", oefening2, groepsBewerking2);
                var opdracht3  = new Opdracht("code3", oefening3, groepsBewerking3);
                var opdrachten = new List <Opdracht> {
                    opdracht1, opdracht2, opdracht3
                };
                _context.Opdrachten.AddRange(opdrachten);

                // Acties
                var actie1 = new Actie("Ga naar de McDonalds en koop McNuggets");
                var actie2 = new Actie("Ga naar Gebouw B");
                var actie3 = new Actie("Neem de groene ballon");
                var acties = new List <Actie> {
                    actie1, actie2, actie3
                };
                _context.Acties.AddRange(acties);

                // Pad
                var pad = new Pad();
                pad.AddOpdracht(opdracht1, 1);
                pad.AddOpdracht(opdracht2, 2);
                pad.AddOpdracht(opdracht3, 3);
                pad.AddActie(actie1, 1);
                pad.AddActie(actie2, 2);
                pad.AddActie(actie3, 3);
                var pad2 = new Pad();
                pad2.AddOpdracht(opdracht1, 1);
                pad2.AddOpdracht(opdracht2, 3);
                pad2.AddOpdracht(opdracht3, 2);
                pad2.AddActie(actie1, 1);
                pad2.AddActie(actie2, 3);
                pad2.AddActie(actie3, 2);
                var pad3 = new Pad();
                pad3.AddOpdracht(opdracht1, 2);
                pad3.AddOpdracht(opdracht2, 1);
                pad3.AddOpdracht(opdracht3, 3);
                pad3.AddActie(actie1, 2);
                pad3.AddActie(actie2, 1);
                pad3.AddActie(actie3, 3);
                var pad4 = new Pad();
                pad4.AddOpdracht(opdracht1, 3);
                pad4.AddOpdracht(opdracht2, 2);
                pad4.AddOpdracht(opdracht3, 1);
                pad4.AddActie(actie1, 3);
                pad4.AddActie(actie2, 2);
                pad4.AddActie(actie3, 1);
                var paden = new List <Pad> {
                    pad, pad2, pad3, pad4
                };
                foreach (var item in paden)
                {
                    item.PadState = new OpdrachtPadState();
                }
                _context.Paden.AddRange(paden);

                // Klas
                var klas  = new Klas("2A1");
                var klas2 = new Klas("2TILE");


                Leerling[] leerlingen1 =
                {
                    new Leerling("Halpert",  "Jim"),
                    new Leerling("Beesley",  "Pam"),
                    new Leerling("Schrute",  "Dwight"),
                    new Leerling("Howard",   "Ryan"),
                    new Leerling("Drets",    "Michel"),
                    new Leerling("Loosveld", "Franky", "*****@*****.**")
                };

                foreach (var leerling in leerlingen1)
                {
                    klas.Leerlingen.Add(leerling);
                }
                klas2.Leerlingen.Add(new Leerling("LaPlace", "Bucky", "*****@*****.**"));

                // Groep
                var groep = new Groep("Het Eiland")
                {
                    Pad = pad
                };
                var groep2 = new Groep("The Office")
                {
                    Pad = pad2
                };
                var groep3 = new Groep("Plaats 1")
                {
                    Pad = pad3
                };
                var groep4 = new Groep("Plaats 2")
                {
                    Pad = pad4
                };

                for (int i = 0; i < 4; i++)
                {
                    groep2.Leerlingen.Add(leerlingen1[i]);
                }

                for (int i = 4; i < leerlingen1.Length - 1; i++)
                {
                    groep.Leerlingen.Add(leerlingen1[i]);
                }


                Groep[] groepen = { groep, groep2, groep3, groep4 };

                _context.Groepen.AddRange(groepen);
                _context.SaveChanges();


                // Sessie
                var sessie = new Sessie(123, "Hoofdrekenen", "Enkel een pen en papier dienen gebruikt te worden", new List <Groep> {
                    groep, groep2
                }, klas);
                var sessie2 = new Sessie(321, "Brugcursus Wiskunde", "Enkel een pen en papier dienen gebruikt te worden", new List <Groep> {
                    groep3, groep4
                }, klas2)
                {
                    Doelgroep = DoelgroepEnum.Volwassenen
                };
                Sessie[] sessies = { sessie, sessie2 };

                _context.Sessies.AddRange(sessies);
                _context.SaveChanges();

                // Leerkracht + user account
                var leerkracht = new Leerkracht("Protut", "Lydia", "*****@*****.**")
                {
                    Sessies = new List <Sessie> {
                        sessie, sessie2
                    }
                };
                _context.Leerkrachten.Add(leerkracht);
                ApplicationUser user = new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                };
                await _userManager.CreateAsync(user, "P@ssword1");

                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "Leerkracht"));

                // Leerling user account
                user = new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                };
                await _userManager.CreateAsync(user, "P@ssword1");

                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "Leerling"));

                user = new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                };
                await _userManager.CreateAsync(user, "P@ssword1");

                await _userManager.AddClaimAsync(user, new Claim(ClaimTypes.Role, "Leerling"));

                _context.SaveChanges();
            }
            _context.SaveChanges();
        }
Example #22
0
 public Task <int> UpdateOpdracht(Opdracht opdracht)
 {
     return(database.UpdateAsync(opdracht));
 }
 public JobViewModel()
 {
     _opdracht = new Opdracht();
 }
 public JobViewModel(Opdracht opdracht)
 {
     _opdracht = opdracht;
 }
        public async Task <ActionResult <Opdracht> > EditOpdracht(long id, OpdrachtTags data)
        {
            Opdracht opdracht = data.opdracht;

            string[] tags = data.tags;

            var opdrachtOld = _context.Opdrachten.Find(opdracht.Id);

            if (opdrachtOld == null)
            {
                return(NotFound());
            }

            opdracht.Id        = opdrachtOld.Id;
            opdracht.BedrijfId = opdrachtOld.BedrijfId;
            opdracht.klaar     = opdrachtOld.klaar;
            opdracht.open      = opdrachtOld.open;

            _context.Entry(opdrachtOld).State = EntityState.Detached;

            _context.Entry(opdracht).State = EntityState.Modified;

            await _context.SaveChangesAsync();

            var opdrachtTagsOld = await _context.OpdrachtTags.Where(x => x.OpdrachtId == opdracht.Id).ToListAsync();

            if (opdrachtTagsOld != null)
            {
                foreach (OpdrachtTag opdrachtTag in opdrachtTagsOld)
                {
                    _context.Remove(opdrachtTag);
                }
            }

            await _context.SaveChangesAsync();

            if (tags != null)
            {
                foreach (string tag in tags)
                {
                    Tag tagObject = await _context.Tags.Where(x => x.Naam.ToLower() == tag.ToLower()).SingleOrDefaultAsync();

                    if (tagObject == null)
                    {
                        tagObject      = new Tag();
                        tagObject.Naam = tag;

                        _context.Tags.Add(tagObject);
                    }

                    var opdrachtTag = await _context.OpdrachtTags.Where(x => (x.TagId == tagObject.Id) && (x.OpdrachtId == opdracht.Id)).SingleOrDefaultAsync();

                    if (opdrachtTag == null)
                    {
                        OpdrachtTag opdrachttag = new OpdrachtTag();
                        opdrachttag.OpdrachtId = opdracht.Id;
                        opdrachttag.TagId      = tagObject.Id;
                        _context.OpdrachtTags.Add(opdrachttag);
                    }
                }
            }

            await _context.SaveChangesAsync();


            return(CreatedAtAction("EditOpdracht", new { id = opdracht.Id }, opdracht));
        }
Example #26
0
 public void SetOpdracht(Opdracht opdracht)
 {
     this.ActieveOpdracht = opdracht;
     cam.SendMessage("StartOpdracht", ActieveOpdracht, SendMessageOptions.DontRequireReceiver);
 }
Example #27
0
        /// <summary>
        /// TODO: een regel tekst verbergen in een afbeelding dmv een kleine aanpassing van pixels
        /// </summary>
        /// <param name="text"></param>
        /// <param name="afbeelding"></param>
        /// <returns></returns>
        public static Bitmap embedText(string text, Bitmap afbeelding)
        {
            Opdracht opdracht      = Opdracht.Verbergen;
            int      letterPositie = 0;
            int      letterWaarde  = 0;
            long     pixelPositie  = 0;
            int      nullen        = 0;
            // één pixel in rgb
            int R = 0, G = 0, B = 0;

            // TODO: De gehele afbeelding afgaan
            for (int i = 0; i < afbeelding.Height; i++)
            {
                for (int j = 0; j < afbeelding.Width; j++)
                {
                    // TODO: De pixel nemen en de kleinste bit beschikbaar maken
                    Color pixel = afbeelding.GetPixel(j, i);

                    R = pixel.R - pixel.R % 2;
                    G = pixel.G - pixel.G % 2;
                    B = pixel.B - pixel.B % 2;

                    // TODO: R, G en B invullen
                    for (int n = 0; n < 3; n++)
                    {
                        if (pixelPositie % 8 == 0) // Elke rgb bestaat uit 8 bits
                        {
                            // TODO: Als de 8 bits klaar zijn
                            if (opdracht == Opdracht.Vullen_met_nullen && nullen == 8)
                            {
                                //TODO: vul de laatste pixel in
                                if ((pixelPositie - 1) % 3 < 2)
                                {
                                    afbeelding.SetPixel(j, i, Color.FromArgb(R, G, B));
                                }
                                return(afbeelding);
                            }

                            // TODO: Verberg eerst de volledige boodschap om vervolgens met nullen te vullen
                            if (letterPositie >= text.Length)
                            {
                                opdracht = Opdracht.Vullen_met_nullen;
                            }
                            else
                            {
                                letterWaarde = text[letterPositie++];
                            }
                        }

                        // TODO: De pixel en rgb waarde waar de data word ingestoken
                        switch (pixelPositie % 3)
                        {
                        // in geval van R
                        case 0:
                        {
                            if (opdracht == Opdracht.Verbergen)
                            {
                                // the rightmost bit in the character will be (charValue % 2)
                                // to put this value instead of the LSB of the pixel element
                                // just add it to it
                                // recall that the LSB of the pixel element had been cleared
                                // before this operation
                                R += letterWaarde % 2;

                                // removes the added rightmost bit of the character
                                // such that next time we can reach the next one
                                letterWaarde /= 2;
                            }
                        } break;

                        // in geval van G
                        case 1:
                        {
                            if (opdracht == Opdracht.Verbergen)
                            {
                                G += letterWaarde % 2;

                                letterWaarde /= 2;
                            }
                        } break;

                        // in geval van B
                        case 2:
                        {
                            if (opdracht == Opdracht.Verbergen)
                            {
                                B += letterWaarde % 2;

                                letterWaarde /= 2;
                            }

                            afbeelding.SetPixel(j, i, Color.FromArgb(R, G, B));
                        } break;
                        }

                        pixelPositie++;

                        if (opdracht == Opdracht.Vullen_met_nullen)
                        {
                            // increment the value of zeros until it is 8
                            nullen++;
                        }
                    }
                }
            }
            return(afbeelding);
        }
Example #28
0
 public OpdrachtTest()
 {
     _opdracht = new Opdracht("xyz", new Oefening("Opgave 1", 50), new GroepsBewerking("Vermeningvuldig met 2", 2, Operator.vermeningvuldigen));
 }
Example #29
0
    public void StartOpdracht(Opdracht opdracht)
    {
        foreach (int size in opdracht.Sizes)
        {
            foreach (Texture brush in opdracht.Brush)
            {
                foreach (Color color in opdracht.Colors)
                {
                    VectorLine tempLine = new VectorLine(size + "," + color.ToString() + "," + brush.name, new List<Vector2>(), brush, size,
                        LineType.Continuous, Joins.Weld);

                    //tempLine.SetCanvas (canvas);
                    tempLine.color = color;
                    tempLine.endPointsUpdate = 1;
                    Lines.Add(tempLine);
                }
            }
        }
        foreach(VectorLine linetest in Lines)
        {

            linetest.Draw();
        }

        activeSize = System.Int32.Parse(Lines [LineNr].name.Split (',') [0]);
        activeBrush = Lines [LineNr].texture.name;
        activeColor = Lines [LineNr].color.ToString();
        line = Lines[LineNr];
        Debug.Log("Current Active Line:" + line.name);
    }
Example #30
0
 /// <summary>
 /// When choosing a task, the right description and title needs to be instatiated.
 /// After the "onclick" from the task-button, the right task will be set active.
 /// </summary>
 /// <param name="task">Task that needs to be activated</param>
 public void setCurrentTask(Opdracht task)
 {
     currentTask = task;
 }
Example #31
0
 public void Add(Opdracht opdracht)
 {
     _opdrachten.Add(opdracht);
 }
        /// <summary>
        /// TODO: een regel tekst verbergen in een afbeelding dmv een kleine aanpassing van pixels
        /// </summary>
        /// <param name="text"></param>
        /// <param name="afbeelding"></param>
        /// <returns></returns>
        public static Bitmap embedText(string text, Bitmap afbeelding)
        {
            Opdracht opdracht = Opdracht.Verbergen;
            int      letterPositie = 0;
            int      letterWaarde = 0;
            long     pixelPositie = 0;
            int      nullen = 0;
            int      R = 0, G = 0, B = 0;

            // Voor de hele afbeelding hoogte
            for (int i = 0; i < afbeelding.Height; i++)
            {
                // Voor de hele afbeelding breedte
                for (int j = 0; j < afbeelding.Width; j++)
                {
                    // De kleur van de pixel van een afbeelding toekennen aan een lokale var "pixel"
                    Color pixel = afbeelding.GetPixel(j, i);

                    // TODO: Uitzoeken hoe dit weer werkt
                    R = pixel.R - pixel.R % 2;
                    G = pixel.G - pixel.G % 2;
                    B = pixel.B - pixel.B % 2;

                    // Elke kleur (RGB) bestaad uit 3 getallen dus deze doorlopen we
                    for (int n = 0; n < 3; n++)
                    {
                        // Bij de 8ste positie
                        if (pixelPositie % 8 == 0)
                        {
                            // als de opdracht is "vullen_met_nullen"
                            // TODO: nullen == 8 ???
                            if (opdracht == Opdracht.Vullen_met_nullen && nullen == 8)
                            {
                                // TODO: Als de rest van (de pixel)/3 kleiner is dan 2 --> 0 1 2 3 4 5 6 (7)
                                if ((pixelPositie - 1) % 3 < 2)
                                {
                                    // verander de kleur van de pixel op positie
                                    afbeelding.SetPixel(j, i, Color.FromArgb(R, G, B));
                                }
                                return(afbeelding);
                            }

                            // Wanneer de letterPositie buiten de text-lengte gaat (er is nog afbeelding "over" maar geen tekst om er in te verbergen
                            if (letterPositie >= text.Length)
                            {
                                // Vul de rest van de afbeelding (pixels kleuren) met nullen
                                opdracht = Opdracht.Vullen_met_nullen;
                            }
                            else
                            {
                                // neem de letterwaarde van de letter op positie
                                letterWaarde = text[letterPositie++];
                            }
                        }

                        // De rest van de pixelpositie -> word opgevangen in een int dus geen kommagetallen
                        switch (pixelPositie % 3)
                        {
                        // in geval van R
                        case 0:
                        {
                            if (opdracht == Opdracht.Verbergen)
                            {
                                // the rightmost bit in the character will be (charValue % 2)
                                // to put this value instead of the LSB of the pixel element
                                // just add it to it
                                // recall that the LSB of the pixel element had been cleared
                                // before this operation
                                R += letterWaarde % 2;

                                // removes the added rightmost bit of the character
                                // such that next time we can reach the next one
                                letterWaarde /= 2;
                            }
                        }
                        break;

                        // in geval van G
                        case 1:
                        {
                            if (opdracht == Opdracht.Verbergen)
                            {
                                G += letterWaarde % 2;

                                letterWaarde /= 2;
                            }
                        }
                        break;

                        // in geval van B
                        case 2:
                        {
                            if (opdracht == Opdracht.Verbergen)
                            {
                                B += letterWaarde % 2;

                                letterWaarde /= 2;
                            }

                            afbeelding.SetPixel(j, i, Color.FromArgb(R, G, B));
                        }
                        break;
                        }

                        pixelPositie++;

                        if (opdracht == Opdracht.Vullen_met_nullen)
                        {
                            // increment the value of zeros until it is 8
                            nullen++;
                        }
                    }
                }
            }
            return(afbeelding);
        }
Example #33
0
 public void Delete(Opdracht opdracht)
 {
     _opdrachten.Remove(opdracht);
 }