svn 저장소 세팅..

생활 : 2008/08/28 23:25
저번에 동아리 개발서버 하드가 사망하시는 바람에 dcgui의 저장소가 홀랑 날아가는 일이 있었습니다.

다행이 전에 저장소를 덤프 받아놓은 것이 있어서 잠도 안와서 저장소 세팅을 다시 했습니다.

사실 날아간지는 좀 됬지만..

귀차니즘으로 인해서 이제야 세팅을 마쳤네요..

주소는 조금 바뀌었습니다.

일단 커밋은 svn+ssh 프로토콜로 할것이고 익명 체크아웃은 http 프로토콜을 이용합니다.

http://dev.dalmuri.net/repos/chadr/Chadr/DCGUI/tags/ 에 릴리즈된 목록들이 있습니다.

그 상위에 여러가지가 있지만 받아보셔도 상관 없습니다.

일단 회사 생활이 끝나면 개발을 재개할 예정(....)입니다..
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/08/28 23:25 2008/08/28 23:25
DCGUI 개발을 계속 진행해야하는데..

귀차니즘이 크나큰 문제..

놀러가고 싶어염.. 여행가고 싶어염.. 누구랑 같이..
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/05/03 21:51 2008/05/03 21:51
열심히 달리고 있습니다..
어제와 오늘 작업해서 기본적인 폰트와 글리프 매니징을 하고..
굵게, 밑줄과 가운데선을 렌더링 하는 부분까지 작업을 했네요..

이제 남은건 글로우와 그림자렌더링을 하고..

나머지 배경색, 정렬, 글자색 등을 적용하여 최종 텍스쳐에 렌더링을 하고
이를 매니징해서 화면에 출력하는 부분이 남았네요..

네.  맞습니다.. 사실 텍스쳐에 렌더링하고 화면에 표시하는게 중요하죠 ㄱ-

오랜만에 머리 좀 쓸려고 했더만 머리가 아프네요.. 덜덜

저는 슬슬 저녁을 먹을 준비를 해야겠군요..

어제 저녁부터 지금까지 아무곳도 안먹었더니 배고프네요 ㄱ-

(이래서 집에서는 코딩 안할려고 합니다.. 누가 암말도 안하면 밥도 안먹고 마음이 풀릴때까지 코딩을 하니 완전 폐인되죠 ㄱ-)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/23 16:35 2007/06/23 16:35
#include <math.h>
#include <stdio.h>

void main()

  float a = 1.398f;//표준편차
  float x = 0.0f;//x값
  float xInc = 0.35f;//x의 증가값
  int nMax = 10;//생성할 최대 개수
 
  for (int i = 0; i < nMax; i++)
  {
    float re = exp(float(-((x*x)/2*(a*a))));   

    printf("i : %d, %f\n", i, re);

    x += xInc;

  } 

}

이걸로 계산 해봤는데 그럭저럭 괜찮은 값들이 뽑힌다.. 이 함수로 사용해야지..

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/17 18:00 2007/06/17 18:00
사용자 삽입 이미지


UML은 처음 써보는데 기호를 맞게 쓴건지 모르겠네요 ㄱ-

여튼 위의 구조를 가질 예정입니다.. 어디까지 예정이므로 다 뒤집어질수도 있습니다 ㅋㅋ

위의 구조를 다시 한번 면밀히 검도해 보고 계속 작업을 진행해야겠습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/17 14:43 2007/06/17 14:43
생성시 고정
글자크기
외곽선
Glow깊이
그림자(방향,깊이)

동적으로 적용가능
글자색
바탕색
굵게
밑줄
가운데선
그림자색깔
정렬
싱글라인,멀티라인

저렇게 구분한 이유는 텍스트를 효율적으로 렌더링 하기 위해 글자의 최종 높이에 영향을 주는 옵션을 기준으로 나눴습니다.

텍스쳐 하나에 한번에 한줄에 텍스트가 들어가기 때문에 캐싱을 효율적이고 간단하게 하기 위해서는 높이 값이 고정이 되어야합니다.

글자크기는 당연히 높이에 영향이 가고..
외곽선은 기본 폰트보다 적당히 비율을 가지고 들어가기 때문에 원래의 폰트 크기보다 더 커지게 됩니다.
밑줄 또한 높이가 약간 높아지게 되며.. 가운데선은 사실 안넣어도 되지만.. 이것만 따로 동적으로 적용하기가 좀 이상해서 ㄱ- 걍 넣었습니다.
이탤릭체 또한 변한다면 넓이가 변하지 높이가 변하는건 아니지만 위와 같이 따로 있으면 뻘줌할거 같아서 고정으로 배치 했습니다.
그리고 Glow의 경우에는 깊이에 따라서 심하게 원래 크기보다 높이가 변하기 때문에 고정으로 배치했습니다. 그림자로 마찬가지입니다.

고정값은 동적으로 변할 필요가 없으므로 처음 사용하는 glyph의 경우에는 글자를 렌더링하고 효과를 주느라 살짝 느리겠지만 그 후부터는 캐싱을 하기 때문에 post process가 필요 없으므로 빠르게 렌더링이 됩니다.

ps. 정정합니다. 이탤릭체는 실제로 쓸일이 별로 없을거 같아서 구현을 하지 않습니다. 그리고 밑줄, 가운데선은 동적으로 적용이 가능하도록 수정을 합니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/17 04:36 2007/06/17 04:36
사용자 삽입 이미지

Visual Studio 2005에 자체 내장 프로파일러가 있기에 한번 돌려봤다..
역시나 예상과 같이 D3DX에 내장된 폰트가 가장 오래걸렸다.(무려 30%)..

다른것도 아니고 대부분의 시간을 저게 다 처먹고 있다니.. ㄱ-
네이놈!!! 넌 좀 땅속으로 들어가줘야겠다..

ps. ID3DXFont 넌 도대체 무슨짓을 하간 그러냐 ㄱ-. 설마 렌더링하는 glyph를 매 프레임마다 텍스쳐로 생성하고 해제하는건 아니겠지? ㅠ
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/16 13:05 2007/06/16 13:05
외곽선 렌더링을 freetype에서 제공해주는걸로 할려고 했는데..

대략 구리다..

못써먹겠다 ㄱ-

특정크기에서 비트맵을 가져오는 경우에는 외곽선이 일반폰트 렌더링하고 똑같아져버린다..
대략 이런것이다..

외곽선으로 렌더링





일반 폰트렌더링





흐덜덜..

어차피 최종 렌더링은 텍스쳐에 모두 그리고나서 해당 텍스쳐를 최종 렌더링에 사용하고 모든 텍스쳐는 캐싱을 할 것이므로 걍 좌우상하 4번 1픽셀씩 움직이면서 렌더링을 해야겠다..

캐싱 기준을 정해야하므로 초기 폰트 초기화하고 생성시 고정을 해야할 요소들을 정해야겠다..
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/04 22:37 2007/06/04 22:37
우선 정확한 스팩을 정해놓고 시작을 해야지 나중에 뒷통수 맞는 일이 없을 것이므로..
스팩을 생각 해봤습니다.

목표는 범용적인 폰트 렌더러를 만들 생각이기 때문에 우선 아래와 같이 스팩을 정해봤습니다.
더 추가 되었으면 하는 좋은 생각이 있으신 분은 리플 부탁드립니다.

1.글자크기
2.글자색
3,바탕색(색깔 있음, 투명)
4.글자 꾸미기(굵게, 밑줄, 외곽선, 가운데선, 이탤릭체, Glow효과(깊이))
5.안티엘리어싱 유무
6.그림자(좌우상하방향, 그림자 깊이, 그림자 색깔)
7.정렬(왼쪽, 오른쪽, 상단, 하단, 세로가운데, 가로가운데)
8.싱글라인(캐리지 리턴을 개행으로 처리 하지 않고 출력), 멀티라인(캐리지 리턴을 개행으로 처리)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/03 21:31 2007/06/03 21:31
사용자 삽입 이미지


기능추가
1.다이얼로그에 자체스크롤바를 붙이고 땔수 있는 기능 추가
    bool AttatchVerticalScroll(wstring &strDlgName, wstring &strCtlName);
    bool AttatchHorizonScroll(wstring &strDlgName, wstring &strCtlName);
    bool DetachVerticalScroll(wstring &strDlgName, wstring &strCtlName);
    bool DetachHorizonScroll(wstring &strDlgName, wstring &strCtlName);
    bool IsAttatchVerticalScroll(wstring &strDlgName, wstring &strCtlName, bool &bRet);
    bool IsAttatchHorizonScroll(wstring &strDlgName, wstring &strCtlName, bool &bRet);
2.IME에디트 박스에서 클립보드에 cut, copy, paste기능 구현
3.IME에디트 박스에서 키보드와 마우스로 블럭 지정 하는 기능 구현


버그수정
1.탭컨트롤에서 맨처음 윈도우를 만들때 RenderRect가 정상적이지 않는 점 수정
2.스킨을 모두 언로드 하였을 경우 매니저의 파라메터도 리셋을 하도록 수정
3.다이얼로그의 닫기 버튼을 누를경우 메모리 참조 에러가 나는 현상 수정
4.캐럿이 툴팁위로 렌더링되는 현상 수정
5.매니저에서 WM_KEYUP 메시지가 컨트롤에게 안가는 현상 수정


기타
스크롤바를 다이얼로그에 추가 할때는 SetThumbPos함수에서 메시지를 보내지 않도록 수정


바이너리



svn 체크아웃 주소는 아래와 같습니다.

svn://dev.dalmuri.net/Chadr/DCGUI/tags/BREL-0.1.3.14


ps. 다음 버전에는 폰트렌더러가 탑재될 예정입니다.(과연 언제 ㄱ-)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/30 21:56 2007/05/30 21:56