browser engineering 관련

5장. 페이지 레이아웃의 추가 설명

소혼 2025. 8. 30. 16:21

5.1 레이아웃 트리

4장에서 만든 Layout 객체를 BlockLayout으로 바꾸고 DocumentLayout을 통해 BlockLayout들을 만들어가는 것이 목표입니다.

5.1의 코드만 수정한 후 실행이 되려면 다음과 같은 코드가 추가로 필요합니다.

@@ -210,7 +216,7 @@ class Layout:
         self.size = 12
 
         self.line = []
-        self.recurse(tree)
+        self.recurse(self.node)
         self.flush()
@@ -286,7 +303,9 @@ class Browser:
     def load(self, url):
         body = url.request()
         self.nodes = HTMLParser(body).parse()
-        self.display_list = Layout(self.nodes).display_list
+        self.document = DocumentLayout(self.nodes)
+        self.document.layout()
+        self.display_list = self.document.children[0].display_list
         self.draw()
 
     def draw(self)

 

self.display_list 를 변경하는 것은 5.5장까지 진도를 나가면 paint_tree를 통해 순회하는 방법이 등장합니다.

반응형