VolatileImage — 볼러타일 이미지 추상 클래스
VolatileImage — 볼러타일 이미지 추상 클래스 (java.awt.image)
애플리케이션의 통제 밖의 상황 때문에 언제든 내용을 잃을 수 있는 이미지예요. JDK 1.4부터 도입됐어요.
본문
VolatileImage는 Image를 확장하고 Transparency를 구현하는 추상 클래스예요. 운영 체제나 다른 애플리케이션 때문에 발생하는 상황으로 인해 내용을 언제든 잃을 수 있어요. 하드웨어 가속 가능성 때문에 일부 플랫폼에서 성능상 큰 이점을 가질 수 있어요.
이미지의 그리기 표면(실제 내용이 있는 메모리)이 손실되거나 무효화될 수 있어서 내용이 사라질 수 있어요. 따라서 표면을 복원·재생성하고 내용을 다시 렌더링해야 해요. VolatileImage는 사용자가 이런 문제를 감지해 고칠 수 있는 인터페이스를 제공해요.
시스템 리소스 관리를 위해 flush 메서드를 아무 때나 호출해 VolatileImage가 사용하던 리소스를 적극적으로 해제할 수 있어요. 이 이미지는 직접 서브클래스화하지 말고 Component.createVolatileImage 또는 GraphicsConfiguration.createCompatibleVolatileImage(int, int)로 생성해야 해요.
이 클래스는 Image를 상속하므로 ImageObserver 파라미터를 받는 메서드들이 있어요. VolatileImage는 비동기 소스에서 로드되지 않으므로, 그런 메서드들은 데이터가 이미 ImageProducer에서 얻어진 것처럼 동작해요.
필드
| 필드 | 설명 |
|---|---|
IMAGE_OK |
검증된 이미지를 그대로 사용할 준비가 됨 |
IMAGE_RESTORED |
검증된 이미지가 복원되어 사용할 준비가 됨 (복원 시 내용 손실) |
IMAGE_INCOMPATIBLE |
검증된 이미지가 주어진 GraphicsConfiguration과 호환되지 않아 적절히 재생성해야 함 |
transparency |
이 이미지가 생성된 투명도 값 |
생성자
protected VolatileImage()
하위 클래스가 호출하는 생성자.
메서드
getSnapshot()— abstract. 이 객체의 정적 스냅샷 이미지 반환. 반환된 BufferedImage는 요청 시점의 VolatileImage와만 현재 상태가 일치하고 이후 변경 사항은 반영되지 않아요getWidth()/getHeight()— abstract. VolatileImage의 너비 / 높이 반환getSource()— 이 VolatileImage의 ImageProducer 반환.getSnapshot().getSource()와 동등. 렌더링·블리팅에 최적화돼 있으므로 getSource 같은 픽셀 읽기는 느릴 수 있어요getGraphics()— Graphics2D 반환 (역호환용)createGraphics()— abstract. 이 VolatileImage에 그릴 수 있는 Graphics2D 생성validate(GraphicsConfiguration gc)— abstract. 표면이 마지막 validate 호출 이후 손실됐다면 복원 시도. 반환:IMAGE_OK— 검증 불필요,IMAGE_RESTORED— 복원 필요,IMAGE_INCOMPATIBLE— GraphicsConfiguration과 호환되지 않음(재생성 필요)contentsLost()— abstract. 마지막 validate 호출 이후 렌더링 데이터가 손실됐으면 true 반환getCapabilities()— abstract. 이 VolatileImage의 특정 기능을 조회할 수 있는ImageCapabilities객체 반환getTransparency()— 투명도 반환:OPAQUE,BITMASK,TRANSLUCENT중 하나