[MUSIQUE JEU] ROB BOWDEN: Salut. Je suis Rob et laisse sa taille de ce problème. Nous allons donc commencer par copy.c comme un modèle, mais nous allons être faire quelques changements. Maintenant, nous voyons que nous immédiatement à faire changer l'endroit où nous ne sommes plus le contrôle pour notre RXC ne correspond pas 3, mais maintenant nous vérifions rc n'est pas égale à 4. Puisque nous voulons aussi inclure, dans Outre les fichiers dans le dossier et sur arguments, f qui va être ce facteur par lequel nous sommes échelle. Donc, une fois que nous sommes sûrs de ce que nous voulons utiliser de balayage f pour convertir la chaîne argv1 à un flotteur. Et nous allons stocker ce facteur dans. Ce caractère supplémentaire est de s'assurer que nous ne sommes pas réellement entrons quelque chose comme 1,4 ABC à la ligne de commande. Maintenant, nous allons créer des alias depuis RV2 et RV3 sont pas noms très utiles. Nous, au contraire, va appeler les dans le fichier et sur dossier. Maintenant, nous allons faire en sorte que notre facteur était en fait valable. Donc, si le facteur est inférieur ou égal à zéro ou supérieur à 100, alors que par la spécification, nous devrions rejeter ce facteur. Lorsque nous sommes sûrs que c'est bon, maintenant nous pouvons ouvrir le fichier n, et nous devons faire vous qu'il a été ouvert avec succès. Si elle n'a pas, qui va retourner null. Nous allons ouvrir le fichier sur. Et encore une fois, nous voulons vérifiez vous qu'il est ouvert avec succès. Et si elle n'a pas ouvert avec succès, nous avons aussi besoin d'être sûr de fermer le fichier n qui à l'origine succès ouvert, ou bien nous avons un fuite de mémoire. Alors maintenant, nous allons lire dans le bitmap tête de fichier et les informations de bitmap header du fichier de n. Nous allons faire en sorte que la fichier n était un bitmap valide. OK. Alors maintenant, nous allons commencer faire quelques changements. Donc, parce que nous allons changer choses, nous voulons d'abord rappeler le vieux largeur du fichier de n. Nous voulons nous souvenir de l'ancien rembourrage le fichier n en utilisant le même calcul de copy.c. Et maintenant, nous allons changer les informations en-tête bitmap. Et si nous multipliant à la fois la largeur et la hauteur de facteur depuis c'est ce que nous sommes par l'extension. Nous allons déterminer la nouveau rembourrage du dossier par en utilisant la nouvelle largeur. Et nous allons déterminer la nouvelle la taille de l'image en utilisant le nombre d' octets en une seule rangée qui va le nombre de pixels de cette ligne fois la taille d'un pixel plus l' nombre d'octets de remplissage à la fin de cette ligne, et en multipliant tout ce qui par le nombre de lignes que nous avons. Donc, c'est le nombre d'octets nous avons dans nos données d'image. Bf.Bfsize maintenant va être le nombre d'octets à notre image bêta plus la taille de nos têtes. Donc, plus la taille de l'entête du fichier bitmap et la taille des informations bitmap tête. OK. Voilà donc pour nos têtes. Nous pouvons écrire la tête de fichier et Info tête à notre savoir fichier, et nous sommes bons. Maintenant il est temps de réellement commencer l'écriture du pixel données dans le fichier de départ. Nous allons déclarer un tampon de taille vieux largeur RVB triple, et nous sommes va déclarer une variable appelée rangée engourdi, qui est que nous allons initialement fixé égal à 1 négative. Nous allons voir que nous allons être en utilisant que, afin de garder une trace de ce consécutive, nous avons actuellement chargé dans ce tampon. OK. Alors maintenant, contrairement à l'édition standard, à la place de l'itération sur le dans fichier, nous allons parcourir chaque ligne dans le fichier sur et comprendre quelle ligne dans le fichier en nous voulons placer dans cette ligne dans le fichier sur. Donc itération sur toutes les lignes de la rupture fichier en utilisant la nouvelle hauteur, nous sommes les premiers va déterminer la ligne de l'ancien déposons nous allons utiliser, qui nous sommes va faire en prenant ce courant rangée divisée par le facteur. Donc, cela va nous donner la ligne dans l'ancien fichier que nous voulons. Alors maintenant, si engourdi ligne n'est pas égal vieux y, nous allons avoir à lire la ligne que nous voulons dans notre buffer d'une ligne de courant. Alors, comment allons-nous faire? Tout d'abord, nous allons comprendre la position qui commence cette ligne dans la fichier original. De sorte que la position va être passé l'ensemble de nos têtes et maintenant passées anciennes lignes y. Et combien d'octets sont sur une seule ligne? Encore une fois, la taille de RVB fois triple vieux largeur, plus vieux rembourrage, de sorte que c'est la nombre d'octets dans une seule ligne. Et nous voulons aller dernières lignes anciennes y. Nous allons donc f chercher et nous sommes aide chercher ensemble à partir de la à partir d'un fichier. Nous allons f cherchent à ce poste dans le fichier, nous mettant à la au début de la ligne que nous voulons à lire dans notre mémoire tampon. Nous allons mettre en ligne engourdi égale à l'ancienne y. Alors maintenant, si on boucle arrière et nous voulons utiliser cette même ligne dans notre dossier sur, alors nous n'allons pas à lire le à nouveau inutilement. Alors, vraiment, rangée engourdi est seulement une optimisation. Enfin, nous allons lire dans le ligne actuelle de la vieille largeur RVB triple que nous voulons partir du fichier original. Alors maintenant, actuelle ligne contient les pixels de le fichier d'origine que nous voulons écrire dans le fichier de sur. Alors maintenant, tout comme ci-dessus, au lieu de itération sur l'ancien fichier, nous devons à itérer sur les nouveaux fichiers rangées. Eh bien ici, au lieu de l'itération sur tous des vieux pixels que la ligne actuelle, nous voulons parcourir la totalité de la pixels dans notre nouveau fichier dans ce notamment rangée. Pourquoi voulons-nous faire? Parce que nous voyons ici que nous ne sommes pas en fait nécessairement utiliser la totalité de la pixels dans le fichier original. Parce que si nous diminue, nous pourrions voulez vraiment aller les pixels. Et nous voyons que cette - x divisé par le facteur - reflète étroitement ici où nous disons y divisé par le facteur de comprendre que l'ancienne ligne y-e correspond à la ligne y-e dans ce nouveau fichier. Maintenant, nous allons écrire tous ces pixels de l'ancienne ligne dans notre nouvelle ligne. Une fois que nous l'avons fait, nous devons juste mettre le rembourrage à la fin de notre ligne et nous allons revenir en arrière pour continuer à toutes les lignes de notre nouveau fichier. A la fin, nous devons fermer notre ancien déposer, fermer notre nouveau fichier, et retour zéro parce que tout s'est bien passé. Mon nom est Rob et c'était Recess. [MUSIQUE JEU]