목차
추천의 글 6
저자 소개 ... 7
감사의 글 ... 8
옮긴이의 말 ... 10
이 책을 읽기 전에 ... 23
들어가며 ... 29
1부 그래픽스와 GUI 기초
1장 데스크탑 자바 그래픽스 API: 스윙, AWT, 자바 2D ... 36
추상 윈도우 툴킷(AWT) ... 37
자바 2D ... 37
스윙 ... 38
2장 스윙 렌더링 기초 ... 39
이벤트 ... 40
스윙 페인트 ... 41
비동기식 리페인트 요청 ... 42
동기식 페인트 요청 ... 43
스윙 렌더링 ... 44
paintComponent() ... 46
paint() ... 49
setOpaque() ... 52
이중 버퍼링 ... 53
스레드 다루기 ... 56
스레드 모델 ... 58
타이머와 이벤트 해석 스레드 ... 63
SwingWorker를 사용한 간편한 스레드 활용 ... 64
스레드 관련 내용 요약 ... 68
3장 그래픽스 기초 ... 69
자바 2D ... 69
렌더링 ... 71
그래픽스 객체 얻기 ... 72
그래픽스 상태 ... 75
이미지 확대축소 관련 힌트 ... 80
도형 안티앨리어스 힌트 ... 83
텍스트 안티앨리어스 힌트 ... 84
그래픽 기본요소 ... 101
4장 이미지 ... 119
이미지 타입 ... 120
BufferedImage ... 123
이미지 확대축소 ... 126
품질과 성능 ... 130
getFasterScaledInstance(): 더 빠르고 좋은 품질의 확대축소 이미지를 제공하는 유틸리티 ... 139
5장 성능 ... 143
클립 사용 ... 143
호환 이미지 ... 149
유의 사항 ... 150
관리되는 이미지란? ... 151
이미지 호환 ... 152
관리되는 이미지 ... 154
DataBuffer 객체 접근 ... 157
이미지 내의 잦은 렌더링 ... 161
중간생성 이미지 ... 162
기본 개념 ... 163
동작 원리 ... 164
유의사항 ... 170
요약 ... 172
기본 렌더링 최적화 ... 172
성능 측정 ... 174
명령행 플래그 ... 174
렌더링 ... 176
성능 디버깅 ... 179
2부 고급 그래픽 렌더링
6장 컴포지트 ... 182
알파 컴포지트 ... 182
알파 컴포지트의 12 규칙 ... 185
Clear ... 186
Dst ... 186
DstAtop ... 187
DstIn ... 187
DstOut ... 188
DstOver ... 188
Src ... 189
SrcAtop ... 189
SrcIn ... 190
SrcOut ... 190
SrcOver ... 191
Xor ... 191
AlphaComposite 생성과 설정 ... 192
AlphaComposite의 일반적인 사용법 ... 194
Clear ... 194
SrcOver ... 194
SrcIn ... 195
AlphaComposite 사용시 주의사항 ... 197
자신만의 컴포지트 작성 ... 200
Add 컴포지트 ... 200
CompositeContext 구현 ... 203
픽셀 합성 ... 205
요약 ... 207
7장 그래디언트 ... 208
이중 선형 그래디언트 ... 208
정규 그래디언트를 활용한 특수 효과 ... 211
다단 선형 그래디언트 ... 216
방사형 그래디언트 ... 218
그래디언트 최적화 ... 222
그래디언트 캐시 ... 223
더 똑똑한 캐시 ... 224
반복되는 그래디언트 최적화 ... 225
8장 이미지 프로세싱 ... 228
이미지 필터 ... 228
BufferedImageOp로 이미지 처리하기 ... 229
AffineTransformOp ... 232
ColorConvertOp ... 233
ConvolveOp ... 235
커널 구성 ... 237
경계에 대한 작업 ... 239
LookupOp ... 240
RescaleOp ... 242
사용자정의 BufferedImageOp ... 243
기반 필터 클래스 ... 244
색조 변경 필터 ... 245
필터 성능에 대한 이야기 ... 251
요약 ... 252
9장 글라스 페인 ... 253
글라스 페인에 그리기 ... 255
최적화된 글라스 페인 페인팅 ... 257
입력 이벤트 가로채기 ... 260
마우스 이벤트 관련 주의사항 ... 262
10장 레이어드 페인 ... 267
레이어드 페인 레이어 ... 268
단일 레이어 내에서 컴포넌트 정렬 ... 273
레이어드 페인과 레이아웃 ... 274
여러 레이아웃을 사용해서 JLayeredPane 대체하기 ... 275
11장 리페인트 매니저 ... 279
스윙이 너무 똑똑할 때 ... 279
RepaintManager와 첫 대면 ... 281
RepaintManager 관리 ... 282
RepaintManager로 구현한 반사상 ... 283
반사상을 위한 공간 만들기 ... 283
반사상 그리기 ... 287
더 바보같은, 그래서 더 똑똑한 RepaintManager ... 290
요약 ... 292
3부 애니메이션
12장 애니메이션 기초 ... 294
시간에 대해서 ... 294
기초 개념 ... 294
프레임 기반 애니메이션 ... 294
프레임 비율 ... 296
시간 기반 모션 ... 297
타이밍(그리고 플랫폼 타이밍 유틸리티) ... 304
'지금 몇시죠?' ... 305
'모닝콜을 부탁해요.' ... 308
'다시 깨워줘요. 또다시. 또다시.' ... 310
해상도 ... 319
System.currentTimeMillis()와 System.nanoTime()의 해상도 ... 322
슬립 해상도 ... 324
타이머 해상도 ... 330
해상도에 대한 해상도 ... 332
스윙 애플리케이션 움직이게 하기 ... 333
움직이는 그래픽 ... 333
움직이는 GUI ... 336
컨테이너 수준에서 다루기 ... 343
요약 ... 348
13장 매끄러운 움직임 ... 349
배경: 왜 애니메이션이 어색하게 보일까? ... 349
애니메이션이 버벅거리는 원인과 부드럽게 만드는 법 ... 350
타이밍이 (거의) 모든 것이다 ... 351
색상: 차이가 무엇일까? ... 355
수직 회기: 동기화된 감각 ... 366
SmoothMoves: 데모 ... 371
그래픽스 객체 생성 ... 371
타이머 실행 ... 371
렌더링 ... 373
렌더링 옵션 ... 374
요약 ... 378
14장 타이밍 프레임워크: 기초 ... 380
소개 ... 380
핵심 개념 ... 382
Animator 클래스 ... 383
콜백 ... 385
지속시간 ... 387
반복 ... 388
해상도 ... 389
시작 동작 ... 390
보간 ... 398
가속과 감속 ... 398
보간자 ... 403
요약 ... 416
15장 타이밍 프레임워크: 고급 기능 ... 417
트리거 ... 417
개념과 사용법 ... 418
트리거 상위클래스 ... 419
내장 트리거 ... 420
프로퍼티 설정자 ... 431
PropertySetter 클래스 ... 435
Evaluator ... 440
키프레임 ... 443
요약 ... 462
4부 이펙트
16장 사용목적 ... 464
블러 ... 464
정적 이펙트 ... 464
간단한 블러 ... 466
가우시안 블러 ... 469
성능향상 기법 ... 474
반사 ... 475
사용목적 ... 475
반사 그리기 ... 476
블러 적용 반사 ... 477
드롭 섀도우 ... 478
사용 목적 ... 478
간단한 드롭 섀도우 ... 479
사실적인 드롭 섀도우 ... 481
강조 ... 483
사용목적 ... 483
명도 높이기 ... 485
스팟라이트 ... 487
가독성 개선을 위한 텍스트 강조 ... 489
샤픈 ... 491
사용목적 ... 491
단순 샤픈 ... 492
언샤프 마스크 ... 495
축소된 이미지에 샤픈 적용 ... 496
요약 ... 499
17장 동적 이펙트 ... 500
움직임 ... 500
사용목적 ... 500
갑니다, 갑니다, 넘어갔습니다! ... 503
페이드 ... 506
사용목적 ... 506
페이드 전략 ... 508
AlphaComposite 페이드 ... 509
색상 페이드 ... 510
크로스페이드 ... 512
페이드 쉽게 하기 ... 513
펄스 ... 513
사용목적 ... 513
펄스 느끼기 ... 515
자동 백열 ... 518
약동하는 펄스 ... 522
스프링 ... 524
사용목적 ... 524
스프링 대활약 ... 526
모핑 ... 529
사용목적 ... 529
버튼 모핑 ... 531
요약 ... 535
18장 애니메이션 장면전환 ... 536
애플리케이션 상태를 끊김없이 전환하기 ... 536
기본 개념 ... 537
애니메이션 장면전환: 라이브러리 ... 540
애니메이션 애플리케이션 상태 ... 540
GUI 상태 ... 540
API ... 541
이펙트 ... 548
GUI 구조 ... 562
그림과 이미지홀더 ... 562
ScreenTransition ... 565
애니메이트 장면전환: 스윙에게 대체 어떤 일을 시키고 있을까? ... 566
몰래 다음 화면 채비하기 ... 567
레이아웃을 펼쳐보자: 레이아웃을 서서히 변화시키기 ... 568
스윙을 춤추게 하자: 성능 ... 569
요약 ... 569
19장 화려하고 멋진 리치 클라이언트 탄생 ... 570
에어리스 ... 570
에어리스 실행 ... 571
직접 해보기 ... 572
작업흐름도 페이퍼 디자인 ... 572
시안 ... 574
화면 구성 디자인 ... 576
목업 ... 577
목업에서 코드까지 ... 578
레이어 ... 578
블렌딩 모드 ... 580
안내선 ... 581
난 예술가가 아니라구! ... 582
알맞은 색상 선택 ... 583
디자인 서적 읽기 ... 585
요약 ... 586
맺음말 ... 587
찾아보기 ... 591
닫기