본문 바로가기

DEV life/DEV.mobile

WIPI의 getRGBpixels/setRGBpixels의 문제점 #2

 

[1] http://jakes.tistory.com/413 : WIPI의 getRGBpixels는 한 프레임(혹은 한 repaint, 하나의 스레드 타임, 등 뭐라 부르던)에서 여러번 호출이 되면 에뮬과 단말에서 모두 뻗는 것 같습니다. 특히 pixel값을 불러올 영역이 lcd영역 밖 (예를 들어, 그 범위 값이 음수이거나, lcd width/height보다 큰 값을 가진다면)에 있는 경우도 안정적인 동작을 하지 않는 것 같은 의심이 듭니다. (이것은 좀더 확인해 보아야 하는데, 다른 이슈로 바쁘고... 게으른 관계로)
[2] http://jakes.tistory.com/414 : drawRGB() 메소드는 4444 ARGB 포맷의 픽셀 데이타를 담은 int[] rgbData를 지정한 좌표에 뿌려주는 메소드입니다. 이 메소드를 WIPI2.0 에서 사용할 경우, rgbData를 찍을 좌표쌍 (x, y) 둘 중 어느 것 하나가 음수일 경우 exception이 발생합니다.

[2]에서 처럼, [1]에서 에뮬과 단말이 뻗는 문제 역시 같은 상황-좌표쌍 (x, y) 둘 중 어느 것 하나가 음수일 경우-에서 발생한다는 것을 확인하였습니다. 이 상황의 WIPI1.x 하에서 exception 이 엄청 발생합니다. 왜 속도가 미칠듯이 느린기 했더니만... (처음 그 이유를 몰라서 WIPI2.0으로 옮겨 탄 것이었지요.)

따라서, 현재 그리려고 하는 rgbData[]의 x, y 좌표쌍이 음수인 경우, 새로운 좌표쌍 (x' >= 0, y' >= 0) 에 해당하는 새로운 rgbData'[] 를 만들어 주도록 해야 합니다. (y < 0 인 경우는 한두 라인 추가로 간단히 추가 가능하지만 x < 0 인 경우는 조금 더 귀찮습니다.)