이전 포스팅에서 에디터를 직접 구현하기로 했는데, 시간이 너무 많이 걸릴 것으로 예상되었다. 각각의 방식이 장단점은 있으나 다분히 많은 코드가 들어가야 할 것으로 보인다.
이러한 경우 어떠한 선택을 하느냐에 따라 개발시간/코드등 많은 차이가 날 수 있다. 장기적으로는 자체 에디터 개발이 맞다고 예상되나 단기적으로는 에디터를 사용하는 것이 맞을 수 있다.
미래의 일은 예측이 불가능하여 이러한 선택에서 고민을 많이 하는데, 여기서는 간단한 솔루션이 Strategy 패턴을 사용하는 방법이다.
간단한 인터페이스만 심어두고 구현은 뒤로 미룬다. 추후 구현시 단위테스트까지 구현이 가능하다. 물론 c로 작성해도 인터페이스만 맞추면 되겠다.
현재로서는 데스크탑 1차버전 완성도 중요하지만 마인드맵 자체 기능을 추가하여 아이폰용 업데이트도 해줘야 하는 상황인지라 에디터는 잠시 접고 연결선 작업을 했다.
Cairo 와 Quartz 는 동일한 좌표 시스템을 사용하도록 변경 가능했고, 함수 인자도 동일하여 함수명 변경으로만 기존 코드를 Cairo 로 변경 가능했다. 덕분에 쉽게 작업이 완료되었다.
노드 배경색에 그라데이션 작업도 쉽게 추가하였다. 아이폰에서는 그라데이션이 하드 코딩되어 있다. 데스크탑 버전에서는 테마에서 설정된 값으로 처리한다.
Quartz 에서 Cairo 로 포팅이 비교적 쉽게 이루어지고 있지만, 그림자 기능 관련하여 Cairo에서 직접적으로 지원을 하지 않는 것으로 보인다. 일단 패스.
마인드맵 기능 추가를 위해서 노드간 관계 작업을 해야 하는데 아직 노드 선택조차 되지 않으므로 어떻게 구현해야 할지 고민이 필요하다.