1 00:00:00,000 --> 00:00:00,996 2 00:00:00,996 --> 00:00:12,470 >> [เล่นดนตรี] 3 00:00:12,470 --> 00:00:13,210 >> ROB สลิง: สวัสดี 4 00:00:13,210 --> 00:00:16,870 ฉันร็อบและให้ขนาดของ ปัญหานี้ 5 00:00:16,870 --> 00:00:20,990 ดังนั้นเรากำลังจะเริ่มต้นด้วยการเป็น copy.c แม่ แต่เรากำลังจะเป็น 6 00:00:20,990 --> 00:00:23,340 ทำให้ค่อนข้างเปลี่ยนแปลงบางอย่าง 7 00:00:23,340 --> 00:00:27,570 >> ตอนนี้เราเห็นเรากำลังทำทันที การเปลี่ยนแปลงที่เราไม่ได้ตรวจสอบ 8 00:00:27,570 --> 00:00:31,560 เพื่อ rxc ของเราไม่ได้เท่ากับ 3 แต่ตอนนี้ เรากำลังตรวจสอบ RC ไม่เท่ากับ 4 9 00:00:31,560 --> 00:00:34,670 เนื่องจากเรายังต้องการที่จะรวมใน นอกเหนือจากในแฟ้มและออกไฟล์ 10 00:00:34,670 --> 00:00:39,550 ข้อโต้แย้งฉซึ่งเป็นไปได้นี้ ปัจจัยโดยที่เรากำลังปรับ 11 00:00:39,550 --> 00:00:45,430 >> ดังนั้นเมื่อเรากำลังตรวจสอบว่าการที่เราต้องการที่จะ ใช้สแกน s f เพื่อแปลงสตริง 12 00:00:45,430 --> 00:00:49,030 argv1 จะลอย 13 00:00:49,030 --> 00:00:51,330 และเรากำลังจะเก็บ ว่าในปัจจัย 14 00:00:51,330 --> 00:00:55,180 นี้ตัวละครเพิ่มเติมคือการทำให้แน่ใจว่า ว่าเราไม่ได้จริงเข้ามา 15 00:00:55,180 --> 00:00:59,200 1.4 สิ่งที่ต้องการเอบีซี ที่บรรทัดคำสั่ง 16 00:00:59,200 --> 00:01:02,960 >> ตอนนี้เรากำลังจะสร้างชื่อแทนบางส่วน ตั้งแต่ RV2 และ RV3 ไม่ 17 00:01:02,960 --> 00:01:04,310 ชื่อที่เป็นประโยชน์มาก 18 00:01:04,310 --> 00:01:07,660 เราแทนจะเรียก ไว้ในไฟล์และเอาท์แฟ้ม 19 00:01:07,660 --> 00:01:11,580 ตอนนี้เรากำลังจะทำให้แน่ใจว่า ปัจจัยของเราถูกต้องจริง 20 00:01:11,580 --> 00:01:16,330 ดังนั้นถ้าปัจจัยที่มีค่าน้อยกว่าหรือเท่ากับ ศูนย์หรือมากกว่า 100 แล้วตาม 21 00:01:16,330 --> 00:01:19,660 spec ที่เราควรจะปฏิเสธ ปัจจัยที่ 22 00:01:19,660 --> 00:01:23,890 >> เมื่อเรากำลังตรวจสอบว่ามันเป็นเรื่องดีที่ตอนนี้เราสามารถ เปิดไฟล์ n และเราจะต้องทำให้ 23 00:01:23,890 --> 00:01:25,950 แน่ใจว่าจะประสบความสำเร็จในการเปิด 24 00:01:25,950 --> 00:01:28,630 ถ้ามันไม่ได้ที่จะกลับมาเป็นโมฆะ 25 00:01:28,630 --> 00:01:30,390 เรากำลังจะไปเปิดไฟล์ออก 26 00:01:30,390 --> 00:01:33,420 และอีกครั้งที่เราต้องการที่จะตรวจสอบเพื่อให้ แน่ใจว่ามันประสบความสำเร็จในการเปิด 27 00:01:33,420 --> 00:01:37,270 และถ้ามันไม่ได้ประสบความสำเร็จเปิดแล้ว เรายังต้องให้แน่ใจว่าได้ปิด 28 00:01:37,270 --> 00:01:40,870 ไฟล์ n ซึ่ง แต่เดิมที่ประสบความสำเร็จ เปิดหรืออื่น ๆ ที่เรามี 29 00:01:40,870 --> 00:01:42,600 หน่วยความจำรั่ว 30 00:01:42,600 --> 00:01:46,350 >> ดังนั้นตอนนี้เรากำลังจะอ่านในบิตแมป ส่วนหัวของแฟ้มและข้อมูลบิตแมป 31 00:01:46,350 --> 00:01:48,890 ส่วนหัวจากไฟล์ n 32 00:01:48,890 --> 00:01:52,360 เราจะทำให้แน่ใจว่า n เป็นไฟล์บิตแมปที่ถูกต้อง 33 00:01:52,360 --> 00:01:52,640 ตกลง 34 00:01:52,640 --> 00:01:55,100 >> ดังนั้นตอนนี้เรากำลังจะเริ่มต้น การเปลี่ยนแปลงบางอย่าง 35 00:01:55,100 --> 00:01:58,840 ดังนั้นเพราะเรากำลังจะได้รับการเปลี่ยนแปลง สิ่งแรกที่เราอยากจะจดจำ 36 00:01:58,840 --> 00:02:01,510 ความกว้างที่เก่าแก่ของไฟล์ n 37 00:02:01,510 --> 00:02:05,160 เราต้องการที่จะจำได้ว่าช่องว่างภายในที่เก่าแก่ของ n แฟ้มโดยใช้การคำนวณเดียวกัน 38 00:02:05,160 --> 00:02:06,990 จาก copy.c. 39 00:02:06,990 --> 00:02:09,840 >> และตอนนี้เรากำลังจะมีการเปลี่ยนแปลง ส่วนหัวของข้อมูลบิตแมป 40 00:02:09,840 --> 00:02:13,630 และอื่น ๆ เรากำลังคูณทั้งความกว้าง และความสูงโดยปัจจัยตั้งแต่ 41 00:02:13,630 --> 00:02:15,750 นั่นคือสิ่งที่เรากำลังปรับโดย 42 00:02:15,750 --> 00:02:18,420 เรากำลังจะไปตรวจสอบ padding ใหม่ของแฟ้มโดย 43 00:02:18,420 --> 00:02:21,140 โดยใช้ความกว้างใหม่ 44 00:02:21,140 --> 00:02:27,330 และเรากำลังจะไปตรวจสอบใหม่ ขนาดของภาพที่ใช้จำนวน 45 00:02:27,330 --> 00:02:31,610 ไบต์ในแถวเดียวซึ่งเป็นไป เป็นจำนวนพิกเซลในแถวที่ 46 00:02:31,610 --> 00:02:35,960 เท่าของขนาดของพิกเซลบวก จำนวนไบต์ของการขยายที่สิ้นสุด 47 00:02:35,960 --> 00:02:40,310 แถวนั้นและคูณทั้งหมดที่ จากจำนวนของแถวที่เรามี 48 00:02:40,310 --> 00:02:43,800 เพื่อให้เป็นจำนวนไบต์ ที่เรามีในข้อมูลภาพของเรา 49 00:02:43,800 --> 00:02:48,190 >> Bf.Bfsize ตอนนี้เป็นไปได้จำนวน ของไบต์ในรุ่นเบต้าภาพของเราบวก 50 00:02:48,190 --> 00:02:49,350 ขนาดของส่วนหัวของเรา 51 00:02:49,350 --> 00:02:53,910 ดังนั้นขนาดบวกของส่วนหัวของแฟ้มบิตแมป และขนาดของส่วนหัวของข้อมูลบิตแมป 52 00:02:53,910 --> 00:02:54,510 ตกลง 53 00:02:54,510 --> 00:02:56,440 เพื่อให้มันสำหรับส่วนหัวของเรา 54 00:02:56,440 --> 00:02:59,030 เราสามารถเขียนหัวไฟล์และ ส่วนหัวของข้อมูลที่จะออกของเรา 55 00:02:59,030 --> 00:03:01,590 ไฟล์และเรากำลังดี 56 00:03:01,590 --> 00:03:03,800 >> ตอนนี้มันถึงเวลาที่จะเริ่มต้นจริง เขียนพิกเซล 57 00:03:03,800 --> 00:03:05,120 ข้อมูลไปยังแฟ้มออก 58 00:03:05,120 --> 00:03:10,460 เรากำลังจะประกาศบัฟเฟอร์ขนาด เก่ากว้าง RGB อเนกประสงค์และเรา 59 00:03:10,460 --> 00:03:13,790 จะประกาศตัวแปรที่เรียกว่า ชาแถวซึ่งเป็นที่เรากำลังจะ 60 00:03:13,790 --> 00:03:15,640 ชุดแรกเท่ากับลบ 1 61 00:03:15,640 --> 00:03:19,090 เราจะเห็นว่าเรากำลังจะใช้ ว่าในการติดตามสิ่งที่ 62 00:03:19,090 --> 00:03:22,640 แถวขณะนี้เรามีการโหลด ลงในบัฟเฟอร์นี้ 63 00:03:22,640 --> 00:03:23,290 ตกลง 64 00:03:23,290 --> 00:03:28,750 >> ดังนั้นตอนนี้แตกต่างจากรุ่นมาตรฐาน แทน iterating ไปที่ใน 65 00:03:28,750 --> 00:03:32,900 ไฟล์ที่เรากำลังจะย้ำกว่าแต่ละ แถวในแฟ้มออกและคิดออก 66 00:03:32,900 --> 00:03:38,130 ซึ่งแถวในไฟล์ที่เราต้องการ วางในแถวนี้ในแฟ้มออก 67 00:03:38,130 --> 00:03:44,930 ดังนั้น iterating ผ่านแถวทั้งหมดในออก ไฟล์โดยใช้ความสูงใหม่เราครั้งแรก 68 00:03:44,930 --> 00:03:48,890 จะตรวจสอบแถวในเก่า ไฟล์ที่เรากำลังจะใช้ที่เรา 69 00:03:48,890 --> 00:03:53,560 จะทำโดยการปัจจุบันนี้ แถวหารด้วยปัจจัย 70 00:03:53,560 --> 00:03:58,000 เพื่อที่จะให้เราแถว ในไฟล์เก่าที่เราต้องการ 71 00:03:58,000 --> 00:04:03,310 >> ดังนั้นถ้าไม่ชาแถว y เก่าไม่เท่ากัน เราจะต้องอ่านแถว 72 00:04:03,310 --> 00:04:05,940 ที่เราต้องการลงในบัฟเฟอร์แถวปของเรา 73 00:04:05,940 --> 00:04:07,700 ดังนั้นเราจึงมีวิธีการที่จะทำเช่นนั้นได้อย่างไร 74 00:04:07,700 --> 00:04:11,650 ขั้นแรกเราจะคิดออก ตำแหน่งที่เริ่มต้นในแถวที่ 75 00:04:11,650 --> 00:04:13,100 ไฟล์ต้นฉบับ 76 00:04:13,100 --> 00:04:18,630 ดังนั้นตำแหน่งที่เป็นไปได้ ที่ผ่านมาทั้งหมดของส่วนหัวของเราและ 77 00:04:18,630 --> 00:04:21,589 แถว y ตอนนี้ผ่านมาเก่า 78 00:04:21,589 --> 00:04:23,880 >> และอื่น ๆ กี่ไบต์ อยู่ในแถวเดียวได้หรือไม่ 79 00:04:23,880 --> 00:04:28,740 อีกครั้งเก่าขนาดของ RGB สามครั้ง ความกว้างบวก padding เก่าเพื่อให้เป็น 80 00:04:28,740 --> 00:04:30,640 จำนวนไบต์ในแถวเดียว 81 00:04:30,640 --> 00:04:33,680 และเราต้องการที่จะข้ามแถว y อดีตเก่า 82 00:04:33,680 --> 00:04:37,580 ดังนั้นเรากำลังจะฉแสวงหาและเรา ใช้หาชุดที่จะเริ่มต้นจาก 83 00:04:37,580 --> 00:04:39,100 จุดเริ่มต้นของไฟล์ 84 00:04:39,100 --> 00:04:42,740 เราจะพยายามที่จะฉตำแหน่งนี้ ในแฟ้มที่วางเราที่ 85 00:04:42,740 --> 00:04:46,500 จุดเริ่มต้นของแถวที่เราต้องการ การอ่านลงในบัฟเฟอร์ของเรา 86 00:04:46,500 --> 00:04:48,510 >> เรากำลังจะไปตั้งแถว ชาเท่ากับเก่า 87 00:04:48,510 --> 00:04:53,080 ดังนั้นตอนนี้ถ้าเราห่วงกลับและเราต้องการที่จะ ใช้แถวเดียวกันนี้ในแฟ้มออกของเรา 88 00:04:53,080 --> 00:04:55,970 แล้วเราจะไม่อ่าน อีกครั้งโดยไม่จำเป็น 89 00:04:55,970 --> 00:04:59,310 ดังนั้นจริงๆชาแถว เพียงแค่การเพิ่มประสิทธิภาพ 90 00:04:59,310 --> 00:05:05,500 >> สุดท้ายเรากำลังจะอ่านใน แถวปัจจุบันความกว้าง RGB เก่าอเนกประสงค์ 91 00:05:05,500 --> 00:05:08,040 ที่เราต้องการจากไฟล์ต้นฉบับ 92 00:05:08,040 --> 00:05:12,270 ดังนั้นตอนนี้แถวปมีพิกเซลจาก ไฟล์ต้นฉบับที่เราต้องการ 93 00:05:12,270 --> 00:05:14,200 เขียนลงในไฟล์ออก 94 00:05:14,200 --> 00:05:18,960 ดังนั้นตอนนี้เช่นเดียวกับข้างต้นแทน iterating กว่าไฟล์เก่าที่เราต้องการ 95 00:05:18,960 --> 00:05:22,560 มันจะย้ำกว่าแถวไฟล์ใหม่ 96 00:05:22,560 --> 00:05:27,450 ดีที่นี่แทนการวนไปทั่ว ของพิกเซลเก่าที่อยู่ในแถวป, 97 00:05:27,450 --> 00:05:31,210 เราต้องการที่จะย้ำกว่าทุก พิกเซลในไฟล์ใหม่ของเราในครั้งนี้ 98 00:05:31,210 --> 00:05:32,480 แถวโดยเฉพาะอย่างยิ่ง 99 00:05:32,480 --> 00:05:34,140 >> ทำไมเราจึงต้องการที่จะทำเช่นนั้น 100 00:05:34,140 --> 00:05:38,960 เพราะเราเห็นว่าที่นี่เราไม่ได้ จริงจำเป็นต้องใช้ทั้งหมดของ 101 00:05:38,960 --> 00:05:41,020 พิกเซลในไฟล์ต้นฉบับ 102 00:05:41,020 --> 00:05:46,630 เพราะถ้าเรากำลังหดตัวที่เราอาจจะ จริงต้องการที่จะข้ามพิกเซล 103 00:05:46,630 --> 00:05:48,090 และเราจะเห็นว่าเรื่องนี้ - 104 00:05:48,090 --> 00:05:49,690 x หารด้วยปัจจัย - 105 00:05:49,690 --> 00:05:55,620 อย่างใกล้ชิดกระจกขึ้นที่นี่ที่เราพูด y หารด้วยปัจจัยที่จะคิดออกว่า 106 00:05:55,620 --> 00:06:02,480 แถว y th-เก่าสอดคล้องกับ แถว th-y ในไฟล์ใหม่นี้ 107 00:06:02,480 --> 00:06:05,880 >> ตอนนี้เรากำลังจะเขียนทั้งหมด พิกเซลเหล่านี้จากแถวเก่า 108 00:06:05,880 --> 00:06:07,440 เข้าแถวใหม่ของเรา 109 00:06:07,440 --> 00:06:10,890 เมื่อเราได้ทำที่เราต้องการเพียงแค่ ใส่ช่องว่างที่ท้ายแถวของเรา 110 00:06:10,890 --> 00:06:15,540 และเราจะห่วงกลับและดำเนินการต่อไป แถวทั้งหมดที่อยู่ในแฟ้มใหม่ของเรา 111 00:06:15,540 --> 00:06:19,390 ในตอนท้ายเราต้องปิดเก่าของเรา ยื่นปิดแฟ้มใหม่ของเราและการกลับมา 112 00:06:19,390 --> 00:06:21,540 ศูนย์เพราะทุกอย่างไปได้ดี 113 00:06:21,540 --> 00:06:24,220 >> ชื่อของฉันคือร็อบและนี่คือ Recess 114 00:06:24,220 --> 00:06:29,184 >> [เล่นดนตรี]