[Musiikki soi] ROB BOWDEN: Hei. Olen Rob ja anna koon tätä ongelmaa. Joten aiomme aloittaa copy.c kuin malli, mutta aiomme olla tekee melko muutamia muutoksia. Nyt näemme olemme välittömästi tehdä muuttaa minne olemme enää tarkistaa meidän RXC ei equal 3, mutta nyt me tarkastamme rc ei equal 4. Koska haluamme myös sisältyä Lisäksi tiedostojen ja ulos tiedostoja argumentteja, F, joka tulee olemaan tämän kerroin, jolla olemme skaalaus. Joten kun olemme varmoja, että haluamme käyttää s scan f muuntaa merkkijonon argv1 kelluvaan. Ja aiomme säilyttää että tekijä. Tämä ylimääräinen merkki on varmistaa että emme ole oikeastaan ​​syöttämällä jotain 1.4 ABC komentoriviltä. Nyt aiomme luoda joitakin aliaksia koska RV2 ja RV3 eivät ole erittäin hyödyllistä nimiä. Olemme sen sijaan menossa soittaa ne tiedostoon ja ulos tiedosto. Nyt aiomme varmistaa, että Meidän tekijä oli todella pätevä. Joten, jos kerroin on pienempi kuin tai yhtä suuri kuin nolla tai suurempi kuin 100, sitten kohti spec, meidän pitäisi hylätä että tekijä. Kun olemme varmoja se on hyvä, nyt voimme avaa n tiedoston, ja meidän on tehtävä varma, että se on onnistuneesti avattu. Jos se ei ole, että palaa null. Aiomme avata ulos tiedoston. Ja vielä, haluamme tarkista että se on onnistuneesti avattu. Ja jos se ei onnistunut avaamaan, niin meidän on myös muista sulkea n tiedosto, joka alun perin onnistuneesti avattu, tai muuten meillä on muisti vuotaa. Joten nyt aiomme lukea bittikartta tiedoston otsikko ja bitmap tiedot Pusku n tiedosto. Aiomme varmistaa, että n tiedosto oli voimassa bittikartta. OK. Joten nyt aiomme aloittaa tehdään joitakin muutoksia. Niin, koska aiomme olla muuttumassa asioita, haluamme ensin muistaa vanha leveys n tiedoston. Haluamme muistaa vanha täytteestä n tiedosto käyttämällä samaa laskentatapaa alkaen copy.c. Ja nyt me aiomme muuttaa bittikartta info otsikkoa. Ja niin me kertomalla sekä leveys ja korkeutta tekijä, koska sitähän me skaalaus. Aiomme selvittää uusi pehmuste tiedoston käyttämällä uutta leveys. Ja aiomme selvittää uuden koko kuvan käyttämällä useita tavut yhden rivin, joka on menossa olla määrä pikseleitä tuolla rivillä kertaa koko pikselin plus tavujen pehmuste lopussa Kyseisen rivin, ja kertomalla, että useissa rivien, että meillä on. Niin, että tavujen meillä on kuvadatan. Bf.Bfsize nyt tulee olemaan numero tavujen meidän kuva beta plus koko meidän otsikot. Joten plus koko bittikarttatiedostoa header ja koko bitmap info otsikon. OK. Niin, että se meidän otsikot. Voimme kirjoittaa tiedoston pään ja info header meidän ulos tiedostoon, ja olemme hyviä. Nyt on aika aloittaa itse kirjallisesti pikselin dataa ulos tiedoston. Aiomme julistaa puskurin koosta vanha leveys RGB kolminkertaistuu, ja olemme menossa julistaa muuttuja nimeltä rivi tunnoton, joka on aiomme alun perin yhtä negatiivinen 1. Saa nähdä, että aiomme käyttää että voidakseen seurata, mitä rivi Meillä on tällä hetkellä ladattu tähän puskuriin. OK. Joten nyt toisin kuin standard edition, sijaan iteroimalla haltuunsa vuonna tiedosto, aiomme kerrata kullakin rivi ulos tiedosto ja selvittää joka rivi tiedoston haluamme paikka tässä rivin pois tiedoston. Joten iteroimalla yli kaikki rivit ulos tiedoston uusi korkeus, olemme ensin menossa määrittää rivin vanhassa tiedostoon aiomme käyttää, jotka olemme aikoo tehdä ottamalla tämä nykyinen rivi jaettuna kertoimella. Niin että menee antaa meille rivi vanhan tiedoston, jota haluamme. Joten nyt jos rivi tunnoton ei ole sama vanha y, aiomme pitää lukea rivi että haluamme meidän nyk. rivi puskuriin. Niin miten me sen teemme? Ensin aiomme selvittää asema, joka alkaa joka rivillä alkuperäisen tiedoston. Siten, että asento tulee olemaan ohi meidän ylä-ja nyt viimeisen vanha y riviä. Ja niin kuinka monta tavua ovat yhden rivin? Jälleen koko RGB triple kertaa vanha leveys plus vanha pehmuste, niin se on tavujen yhden rivin. Ja haluamme ohittaa ne vanhat y riviä. Joten aiomme f etsimään ja olemme käyttäen pyritään asettaa aloittaa tiedoston alkuun. Aiomme f pyrkiä tähän asentoon tiedoston, laittoi meidät rivin alkuun haluamme lukea meidän puskuriin. Aiomme asettaa rivi tunnoton yhtä vanha y. Joten nyt jos me silmukka takaisin ja haluamme käyttää samalla rivillä meidän ulos tiedoston, niin emme aio lukea se uudelleen tarpeettomasti. Siis todella, rivi tunnoton on vain optimointia. Lopuksi, aiomme lukea osaksi nykyinen rivi vanhoja leveys RGB kolminkertaistaa että haluamme alkuperäisen tiedoston. Joten nyt nyk. rivi sisältää pikseleitä alkuperäisen tiedoston että haluamme kirjoittaa osaksi pois tiedoston. Joten nyt, aivan kuten edellä, sen sijaan että iteroimalla yli vanhan tiedoston, tarvitsemme se kerrata yli uusia tiedostoja rivit. Hyvin täällä, sen sijaan, että iteroimalla yli kaiken vanhan pikseliä että nyk. peräkkäin, haluamme kerrata hoitaakseen kaikki pikseliä meidän uusi tiedosto tähän Erityisesti rivi. Miksi haluamme tehdä niin? Koska näemme tässä, että emme ole itse välttämättä käytä kaikkia pikseleitä alkuperäisen tiedoston. Koska jos me kutistuu, saatamme todella haluavat ohittaa pikseliä. Ja me näemme, että tämä - x jaettuna kertoimella - muistuttavassa tänne jos sanomme y jaettuna kertoimella selvittää, että vanha y: nnen rivin vastaa y: nnen rivin tässä uudessa tiedostoon. Nyt aiomme kirjoittaa kaikki pikseleistä vanhasta rivi meidän uusi rivi. Kun olemme tehneet sen, meidän täytyy vain laita täyte lopussa meidän rivi Ja me silmukka takaisin ja jatkaa kaikki rivit meidän uusi tiedosto. Lopussa, meidän täytyy sulkea vanhoja tiedostoon, sulkea uuden tiedoston, ja paluu nolla, koska kaikki sujui hyvin. Nimeni on Rob ja tämä oli välitunti. [Musiikki soi]