지난 번에 작성한 글에서 보였던, 직사각형에 데이터를 표현하는 것을 더해서, 이번에는 원 안에 표시하는 것을 했다. 그 때는 다소 단순한 GML 파일을 읽어 들이는 것을 작성했었는데, 알고 보니 WikiPathway에서 gpml 파일을 제공해 주어서 이 파일을 읽는 함수를 작성했다. 아직 많이 부족하긴 한데, 우선 중요한 것 순서대로 해 나아가고 있다.
위가 그 한 예. 어제는 저 원으로 표시하도록 했는데 (parsing 하는 것은 그 전날 대강 해 놨었다), 문제는 node 가 겹치는 부분이 생긴다는 것이다. 밤새도록 어떻게 하면 노드가 겹치지 않게 할 수 있을까, 생각해 보았지만, 마땅한 것이 생각나지 않는다. 몇 가지 테스트 해 보았지만 마음에 들지 않는다. 음... 이 다음에는 화살표를 처리해야 한다. 지금은 선 끝에 화살표 표시가 없지만 원래는 있는 거다. ㅋㅋ 그거 하려면 또 sin, cos 이 나오겠군. 저 원 안에다 부채꼴로 표시하는 것에도 sin, cos, 그리고 bit 연산인 AND, OR이 주루룩 나왔다. 프로그래머에게 수학이 필요한 이유를, 이렇게 직접적으로 수학이 쓰이는 것을 예로 드는 것은 별로 안 좋은 것 같은데, 하여튼 그랬다. 그 부분 코드.
parsing 하기 위해서, 오랜만에 boost 를 설치 시도. 아니, 그런데, 컴파일 에러가 수두룩하게 뜬다. 뭐지... 몇 시간 고생하다, 결국 bat 파일 하나 실행시키고 하니까 문제 없이 된다 >.<""" 뭐야, 역시나, 밤에는 잠을 자야 한다니까, -.-;;; 그런데 의외로 속도가 안 나와서, regular expression 때문인가, 싶었는데, 아무리 생각해도 이건 너무 오래 걸린다. 코드를 다시 살펴 보니, ㅋㅋ, map 으로 쓸 수 있는 부분을 vector에 넣고 매번 검색하게 해 놓았다. 그 부분을 바꾸고, double buffering 으로 WM_PAINT 처리하고, 등등 자잘한 부분들은 끝내긴 했는데, 아--, 저놈의 노드 겹치는 문제가 제일 골치다. 아, 화면 확대/축소를 아직 안 했군. ㅋ, 하여튼 GUI를 하게 되면 이렇게 간단하지만 귀찮은 작업들이 너무 많다.
ㅎ, 이렇게 또 밤을 꼬박 샜다, ㅋ. 이건, 뭐, 시차의 연금술사도 아니고,,,
위가 그 한 예. 어제는 저 원으로 표시하도록 했는데 (parsing 하는 것은 그 전날 대강 해 놨었다), 문제는 node 가 겹치는 부분이 생긴다는 것이다. 밤새도록 어떻게 하면 노드가 겹치지 않게 할 수 있을까, 생각해 보았지만, 마땅한 것이 생각나지 않는다. 몇 가지 테스트 해 보았지만 마음에 들지 않는다. 음... 이 다음에는 화살표를 처리해야 한다. 지금은 선 끝에 화살표 표시가 없지만 원래는 있는 거다. ㅋㅋ 그거 하려면 또 sin, cos 이 나오겠군. 저 원 안에다 부채꼴로 표시하는 것에도 sin, cos, 그리고 bit 연산인 AND, OR이 주루룩 나왔다. 프로그래머에게 수학이 필요한 이유를, 이렇게 직접적으로 수학이 쓰이는 것을 예로 드는 것은 별로 안 좋은 것 같은데, 하여튼 그랬다. 그 부분 코드.
동그라미가 그려질 때 원본 이미지에 있던 배경이 그대로 살아야 하기 때문에 약간 복잡해 졌다, ㅋ.
관건은 제일 마지막 3줄의, MERGEPAINT, SRCPAINT, SRCAND. 보통은 SRCCOPY만 썼었는데, ㅋ.
관건은 제일 마지막 3줄의, MERGEPAINT, SRCPAINT, SRCAND. 보통은 SRCCOPY만 썼었는데, ㅋ.
parsing 하기 위해서, 오랜만에 boost 를 설치 시도. 아니, 그런데, 컴파일 에러가 수두룩하게 뜬다. 뭐지... 몇 시간 고생하다, 결국 bat 파일 하나 실행시키고 하니까 문제 없이 된다 >.<""" 뭐야, 역시나, 밤에는 잠을 자야 한다니까, -.-;;; 그런데 의외로 속도가 안 나와서, regular expression 때문인가, 싶었는데, 아무리 생각해도 이건 너무 오래 걸린다. 코드를 다시 살펴 보니, ㅋㅋ, map 으로 쓸 수 있는 부분을 vector에 넣고 매번 검색하게 해 놓았다. 그 부분을 바꾸고, double buffering 으로 WM_PAINT 처리하고, 등등 자잘한 부분들은 끝내긴 했는데, 아--, 저놈의 노드 겹치는 문제가 제일 골치다. 아, 화면 확대/축소를 아직 안 했군. ㅋ, 하여튼 GUI를 하게 되면 이렇게 간단하지만 귀찮은 작업들이 너무 많다.
ㅎ, 이렇게 또 밤을 꼬박 샜다, ㅋ. 이건, 뭐, 시차의 연금술사도 아니고,,,