KR20060128695A - 촬상 장치, 제어 방법, 및 기억매체 - Google Patents

촬상 장치, 제어 방법, 및 기억매체 Download PDF

Info

Publication number
KR20060128695A
KR20060128695A KR1020060051364A KR20060051364A KR20060128695A KR 20060128695 A KR20060128695 A KR 20060128695A KR 1020060051364 A KR1020060051364 A KR 1020060051364A KR 20060051364 A KR20060051364 A KR 20060051364A KR 20060128695 A KR20060128695 A KR 20060128695A
Authority
KR
South Korea
Prior art keywords
rendering
color
color matching
variable
value
Prior art date
Application number
KR1020060051364A
Other languages
English (en)
Other versions
KR100844972B1 (ko
Inventor
유타카 묘키
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2005168570A external-priority patent/JP2006341457A/ja
Priority claimed from JP2005168569A external-priority patent/JP4480160B2/ja
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20060128695A publication Critical patent/KR20060128695A/ko
Application granted granted Critical
Publication of KR100844972B1 publication Critical patent/KR100844972B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1825Adapting the print data to an output condition, e.g. object trapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0082Architecture adapted for a particular function
    • G06K2215/0094Colour printing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Color Image Communication Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

인쇄 제어 방법은, 기술 언어 문서를 렌더링하는 렌더링 스텝과, 기술 언어 문서에서 지정된 색 정보를, 기술 언어 문서를 인쇄하는 인쇄 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝과, 칼라 매칭 스텝에 의한 변환을 렌더링 전에 수행할지 혹은 렌더링 후에 수행할지를 제어하는 제어 스텝을 포함한다. 따라서, 칼라 매칭을 렌더링 전에 수행할지 혹은 렌더링 후에 수행할지를 제어함으로써 색 재현성을 향상시킬 수 있다.
인쇄 제어, 렌더링, 칼라 매칭, 색 재현성

Description

촬상 장치, 제어 방법, 및 기억매체{IMAGING DEVICE, CONTROL METHOD, AND STORAGE MEDIUM}
도 1은 본 발명의 실시 예의 개략적인 구성을 도시한 도면이다.
도 2는 제1 실시 예에 따른 컴퓨터 장치의 구성을 도시한 도면이다.
도 3은 제1 실시 예에 따른 프린터 장치의 구성을 도시한 도면이다.
도 4는 제1 실시 예의 전체 구성을 도시한 블럭도이다.
도 5는 제1 실시 예에서 사용하는 SVG 문서 파일의 내용을 도시한 도면이다.
도 6은 제1 실시 예에서 사용하는 SVG 문서 파일의 렌더링된 내용의 예이다.
도 7은 제1 실시 예에서 사용하는 중간 코드 사양을 도시한 도면이다.
도 8은 제1 실시 예에서 사용하는 SVG 문서 파일을 변환한 덤핑된 중간 코드의 예이다.
도 9는 제1 실시 예에 있어서의 렌더러의 동작을 도시한 플로차트(1)이다.
도 10은 제1 실시 예에 있어서의 렌더러의 동작을 도시한 플로차트(2)이다.
도 11은 제1 실시 예에 있어서의 패스 필 동작(정의가 끝난 처리)을 도시한 플로차트이다.
도 12는 제1 실시 예에 있어서의 검증 결과 데이터베이스의 구성 예를 도시 한 도면이다.
도 13은 제1 실시 예에 있어서의 알파 블렌드 동작(정의가 끝난 처리)을 도시한 플로차트이다.
도 14는 제1 실시 예에 있어서의 프린터 출력 준비 동작을 도시한 플로차트이다.
도 15는 제1 실시 예의 렌더러가 렌더링한 비트맵 예(1)이다.
도 16은 제1 실시 예의 렌더러가 렌더링한 비트맵 예(2)이다.
도 17은 제2 실시 예의 전체 구성을 도시한 블럭도이다.
도 18은 제2 실시 예에서 사용하는 SVG 문서 파일의 내용을 도시한 도면이다.
도 19는 제2 실시 예에서 사용하는 SVG 문서 파일의 내용의 렌더링 예이다.
도 20은 제2 실시 예에서 사용하는 중간 코드 사양을 도시한 도면이다.
도 21은 제2 실시 예에서 사용하는 SVG 문서 파일을 변환한 덤핑된 중간 코드의 예이다.
도 22는 제2 실시 예에 있어서의 렌더러의 동작을 도시한 플로차트(1)이다.
도 23은 제2 실시 예에 있어서의 렌더러의 동작을 도시한 플로차트(2)이다.
도 24는 제2 실시 예에 있어서의 패스 단색 필 동작(정의가 끝난 처리)을 도시한 플로차트이다.
도 25는 제2 실시 예에 있어서의 알파 블렌드 동작(정의가 끝난 처리)을 도시한 플로차트이다.
도 26은 제2 실시 예에 있어서의 패스 그라데이션 동작(정의가 끝난 처리)을 도시한 플로차트이다.
도 27은 제2 실시 예에 있어서의 패스 그라데이션 동작(정의가 끝난 처리)을 도시한 플로차트이다.
도 28은 제2 실시 예에 있어서의 프린터 출력 동작(정의가 끝난 처리)을 도시한 플로차트이다.
본 발명은, 인쇄 장치 등의 촬상 장치와의 렌더링과 칼라 매칭의 기술에 관한 것이다.
종래, PDL(Page Description Language) 문서의 각 렌더링 명령으로 지정된 색을 모니터나 프린터(출력 디바이스)에 출력할 때에, PDL 문서에 대해서 색역(gamut) 맵핑/변환이 행해진다. 이 색역 맵핑/변환은, 출력 디바이스의 프로파일(ICC 프로파일 등)을 이용해, PDL 문서를 그 출력 디바이스의 색역으로 맵핑/변환하기 위해서 행해진다. 이 방법에 대해서는, 예를 들면 일본국 특개평 7-107312호 공보에 기재되어 있다.
또, 일본국 특개평 8-235346호 공보에는, 각기 다른 속성(색 공간 등)을 갖는 오브젝트(object)를, 각각 최적의 화상 데이터 구조로 변환하고, 이 화상 데이 터 구조에 적용되는 칼라 매칭 처리를 실시간으로 바꾸는 것이 기재되어 있다. 
PDL 문서의 렌더링 명령에는 색 지정으로서 불투명도(알파 값)가 포함되어 있다. 이 불투명도를 갖는 렌더링 명령에 따른 화상과, 다른 렌더링 명령에 따른 화상이 겹치는 경우에는, 알파 블렌딩(alpha blending)이 필요하다. 그런 경우에, 렌더링 명령에 대해 알파 블렌딩을 수행하기 전에 출력 디바이스(예를 들면, 프린터)의 색역에 맵핑할지, 혹은 출력 디바이스의 색역에 맵핑한 후에 알파 블렌딩을 수행할지에 의존해, 렌더링 결과가 다르다. 그렇지만, 이 색역 맵핑을 어느 타이밍에 행하는 것이 좋은가를 결정하는 어떤 하나의 요인도 없다. 렌더링 결과는, 렌더링 명령으로 지정된 색과 알파 값, 출력 디바이스, 색역 맵핑 시에 사용된 프로파일, 및 렌더링 인텐트(intent) 등의 영향을 받는다.
또, PDL 문서의 페인트 명령이 그라데이션을 포함하는 경우에는, 그라데이션의 렌더링이 필요하게 된다. 이 경우에도, 그라데이션 렌더링을 수행하기 전에 디바이스의 색역에 맵핑을 행하는지, 혹은 디바이스의 색역에 맵핑하고 나서 그라데이션 렌더링을 행하는지에 의존하여, 렌더링 결과가 다르다. 이와 같이, 알파 블렌딩이나 그라데이션 등의 특정 종류의 렌더링을 행하기 전에 또는 후에, 칼라 매칭을 행하는지 여부를 검토할 여지가 있다.
본 발명은 상기 문제점을 감안하여 이루어진 것으로, 칼라 매칭을 렌더링 전에 수행할지 혹은 렌더링 후에 수행할지를 적절히 제어함으로써, 색 재현성을 향상 시키는 것을 목적으로 한다.
본 발명의 일 국면에 따른 제어 방법은, 기술 언어 문서를 렌더링하는 렌더링 스텝과, 상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝과, 상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 할지 혹은 상기 렌더링 후에 할지를 제어하는 제어 스텝을 포함한다.
본 발명의 다른 특징은, 이하에 계속되는 실시 예의 설명으로 밝혀질 것이다.
(제1 실시 예)
이하, 본 발명의 제1 실시 예에 대해 도면을 참조해 상세히 설명한다.
본 실시 예에서 사용하는 PDL로서 SVG(Scalable Vector Graphics)1.1이 있다. SVG 1.1 사양은 http://www.w3.org/TR/SVG11/에서 찾을 수 있다.
유저 PC(클라이언트)에서는, SVG 문서 파일을 인터프리터에 의해 중간 코드 데이터로 변환한다. 다음에, 렌더러가 중간 코드 데이터를 비트맵 데이터로 변환한다. 이 중간 코드 데이터를 비트맵 데이터로 변환할 때, 본 실시 예에서는, 렌더링 전 칼라 매칭과 렌더링 후 칼라 매칭에 대한 정밀도를 측정하고, 정밀도가 높은 것을 선택한다. 이 선택 결과는 본 렌더링 세션과 이후의 렌더링 세션을 위해 보존된다. 프린터는 렌더링에 의해 얻은 비트맵 데이터를 사용해 출력을 수행하여, 인쇄 결과를 얻는다.
우선, 도 1을 참조해 본 실시 예의 전체 구성을 설명한다. 도 1에서, 참조번호 101은 유저가 조작을 행하는 클라이언트 PC를 나타내며, 네트워크 인터페이스를 통해서 네트워크(103)에 접속되어 있다. 참조번호 102는 네트워크를 통해서 인쇄 지시를 수신하는 프린터를 나타내고, 또한 네트워크 인터페이스를 통해서 네트워크(103)에 접속되어 있다. 클라이언트 PC(101)는 네트워크(103)를 통해서 프린터(102)에 인쇄 지시를 송신할 수 있다.
다음에, 도 2 및 도 3을 참조해, 본 실시 예에서 사용하는 컴퓨터 장치 및 프린터의 구성에 대해 설명한다.
도 2는, 클라이언트 PC(101)의 구성의 일례를 나타내는 블럭도이다. CPU(201)는 RAM(202)에 저장되어 있는 제어 프로그램에 따라 후술하는 본 장치 전체를 제어한다. RAM(202)는 CPU(201)가 실행하는 본 장치의 제어 프로그램을 저장하는 내부 기억부이고, 또 문서 화상 등의 데이터를 저장한다. 네트워크 인터페이스(203)는 CPU(201)의 제어 하에, 네트워크와 접속하고, 데이터 등을 송수신하기 위한 것이다. 외부 기억 장치(204)는 데이터를 저장하는 자기 디스크 등이다. 참조번호 205는 디스플레이, 206은 키보드, 207은 마우스 등의 포인팅 디바이스를 나타낸다. RAM(202)에 저장되어 있는 프로그램은, RAM(202)에 저장되어 있는 오퍼레이팅 시스템(Operating System)의 기능을 필요에 따라서 사용해 이하의 처리를 수행한다. 구체적으로는, 프로그램의 실행은 아래의 처리를 실현한다.
(1) RAM(202)에 일시 기억하는 데이터의 내용의 판독/기록한다.
(2) 외부 기억장치(204)로부터/에 데이터를 판독/기록한다.
(3) 네트워크 인터페이스를 통해서 데이터를 송수신한다.
(4) 키보드(206) 및 포인팅 디바이스(207)로부터의 입력을 수신하고, 디스플레이(205)에 표시한다.
도 3은, 프린터(102)의 구성의 일례를 나타내는 블럭도이다. 참조번호 208, 209, 210, 211은 도 2의 CPU(201), RAM(202), 네트워크 인터페이스(203), 및 외부 기억장치(204)와 같이, 각각 CPU, RAM, 네트워크 인터페이스, 외부 기억장치를 나타낸다. 참조번호 212는 인쇄를 행하는 프린터 엔진을 나타낸다. RAM(209)에 저장되어 있는 프로그램은, 네트워크 인터페이스(210)를 통해서 수신한 인쇄 지시에 따라, 프린터 엔진(212)을 제어해 인쇄를 행한다. 그때, RAM(209)에 저장되어 있는 프로그램의 처리에 의해, RAM(209)에 일시 기억된 데이터의 내용과, 외부 기억장치(211) 상의 데이터를 판독/기록할 수가 있다.
다음에, 도 4를 참조해, 본 실시 예에서 사용하는 컴퓨터 장치 내의 블록 구성에 대해 설명한다. 도 4는, 본 실시 예의 동작에 주로 포함된 구성요소들에 대하여, 도 1에 나타낸 물리적 구성을 갖는 클라이언트 PC(101), 프린터(102), 및 네트워크(103)의 논리 블록을 나타낸다. 구체적으로는, 이 도면은 프로그램 모듈, 파일 엔티티, 메모리 데이터, 및 통신 경로의 구성을 나타내는 블럭도이다.
참조번호 301은 클라이언트 PC(101)의 블록 경계를 나타내며, 이 경우에는 오퍼레이팅 시스템의 제어 하에 동작하는 처리 블록을 가리킨다. 인터프리터(309), 렌더러(310), 및 CMM(Color Management Module; 311)은, 프로그램 모듈로서 통상은 외부 기억장치(204)에 보존되어 있다. 인터프리터(309), 렌더러(310), 및 CMM(311)는 유저, 오퍼레이팅 시스템, 혹은 다른 프로그램으로부터 실행을 지시받으면, 오퍼레이팅 시스템의 제어 하에 RAM(202)으로 판독되어, 실행 가능한 상태가 된다. SVG 문서 파일(302)은 외부 기억장치(204)에 보존되어 있고, 인터프리터(309)는 오퍼레이팅 시스템의 기능을 이용해 이 SVG 문서 파일(302)의 내용을 판독/기록하는 것이 가능하다.
인터프리터(309) 및 렌더러(310)를 포함한 프로그램은, 같은 방식으로 오퍼레이팅 시스템의 기능을 이용해, RAM(202)에 격납된 중간 코드 데이터(303)의 내용을 판독/기록하는 것이 가능하다. 또한, 렌더러(310)를 포함한 프로그램은, 같은 방식으로 오퍼레이팅 시스템의 기능을 이용해, RAM(202)에 격납된 비트맵 데이터(304)의 내용을 판독/기록하는 것이 가능하다.
인터프리터(309)는 SVG 문서 파일(302)을 중간 코드 데이터(303)로 변환하지만, 이 변환 동작은 2가지의 언어의 사양으로부터 기계적으로 결정될 수 있다. 따라서, 본 실시 예에서는 인터프리터(309)의 동작에 대한 상세한 것은 기술하지 않고, 변환 내용만 제시한다. 렌더러(310)는 중간 코드 데이터(303)로부터 비트맵 데이터(304)를 작성하고, 네트워크(103)를 통해서 비트맵 데이터(304)를 프린터(313)의 컨트롤러(314)로 송신한다. 이때, 칼라 매칭을 위해서 CMM(311)의 기능을 이용한다.
CMM(311)은 필요한 칼라 매칭을 수행한다. 이 칼라 매칭은,
(1) SVG 문서 파일(302) 및 중간 코드 데이터(303)의 입력 색 공간을 나타내는 입력 프로파일(305),
(2) 렌더러(310)의 렌더링 색 공간을 나타내는 렌더링 프로파일(306),
(3) 프린터(313)의 디바이스 색 공간을 나타내는 프린터 프로파일(307),
(4) 칼라 매칭을 수행하기 위한 매칭 방법을 지정하는 렌더링 인텐트(308)를 사용한다.
CMM은 Microsoft Windows의 경우에 있어서의 ICM(Image Color Management) 혹은 Apple Mac OS의 경우에 있어서의 ColorSync와 같이, 통상 오퍼레이팅 시스템의 일부 혹은 오퍼레이팅 시스템에 의해 이용 가능한 라이브러리로서 제공되고, 칼라 매칭 시에 그 기능을 이용할 뿐이다. 따라서, 본 실시 예에서는 CMM(311)의 동작에 대해 상세히 설명하지 않고, 그 기능의 이용 예만 제공할 것이다.
검증 결과 데이터베이스(312)는 외부 기억장치(204) 상에 데이터베이스 프로그램(미도시)에 의해 생성된다. 렌더러(310)를 포함한 프로그램은 데이터베이스 드라이버(미도시)의 기능을 이용해, 검증 결과 데이터베이스(312)의 내용을 판독/기록한다.
참조번호 313은 프린터(102)의 블록 경계를 나타낸다. 컨트롤러(314)는 RAM(209)에 저장되는 프로그램으로서, 항상 실행 가능한 상태에 있다. 컨트롤러(314)는 네트워크 인터페이스(210)를 통해서 렌더러(310)로부터 비트맵 데이터(304)를 수신한다. 그 후, 비트맵 데이터(304)는 RAM(209)에 비트맵 데이터(315)로서 격납되고, 컨트롤러(314)는 비트맵 데이터(315)에 따라 프린터 엔진(212)을 제어해 인쇄를 수행한다.
다음에, 도 5~도 6을 참조해, 본 실시 예에서 사용하는 SVG 문서 파일에 대 해 설명한다. 도 5는, 본 실시 예에서 사용하는 SVG 문서 파일(302)의 내용을 나타낸다.
라인 1은 XML 선언(XML Declaration)으로서, 본 SVG 문서 파일이 XML 1.0 사양에 따라 기록되어 있는 것을 나타낸다. 
라인 2 및 3은 문서형 선언(Document Type Declaration)이며, 외부 부분집합으로서 SVG 1.1의 문서형 정의(Document Type Definition;DTD)를 참조하고 있다.
라인 4 및 5는 루트 요소인 <svg> 요소의 개시 태그이다. <svg> 요소의 폭 및 높이로서 각각 21.0cm과 29.7cm(즉, A4 사이즈), 유저 좌표계로서 (0,0)-(210, 297)를 지정하고, 또 SVG 이름 공간과, 준거하는 SVG의 버전을 지정하고 있다.
라인 6은 <desc> 요소이며, 본 SVG 문서 파일을 기술한다. <desc> 요소의 내용은 SVG 문서의 렌더링에는 사용되지 않는다. 라인 7, 10, 13은 코멘트 요소로서, 코멘트 요소도 SVG 문서의 렌더링에는 사용되지 않는다.
라인 8 및 9는 제1 원을 렌더링하기 위한 <circle> 요소이다. 이것은 유저 좌표계에서 중심 좌표를 (80, 80)으로 지정하고, 유저 좌표계에서 반경 값을 50으로 지정하고 있다. 또, 필(fill) 색은 황색으로, 불투명도(알파 값)는 0.7로 , 외형선의 색은 청색으로, 외형선의 폭은 유저 좌표계에서 2로 지정하고 있다.
라인 11 및 12는 제2 원을 렌더링하기 위한 <circle> 요소이다. 이것은 유저 좌표계에서 중심 좌표를 (140, 80)으로 지정하고, 유저 좌표계에서 반경 값을 50으로 지정하고 있다. 또, 원 내부의 필 색은 적색으로, 불투명도(알파 값)은 0.5로, 외형선의 색은 청색으로, 외형선의 폭은 유저 좌표계에서 2로 지정하고 있다.
라인 14 및 15는 제3 원을 렌더링하기 위한 <circle> 요소이다. 이것은 유저 좌표계에서 중심 좌표를 (110, 130)로 지정하고, 유저 좌표계에서 반경의 값을 50으로 지정하고 있다. 또 필 색은 녹색으로, 불투명도(알파 값)는 0.3으로, 외형선의 색은 청색으로, 외형선의 폭은 유저 좌표계에서 2로 지정하고 있다. 
라인 16은 루트 요소로서 기능하는 <svg> 요소의 종료 태그이며, 라인 4 및 5의 개시 태그에 대응한다.
도 6은 도 5에 나타낸 SVG 문서 파일을 렌더링하는 예를 나타낸다. 참조번호 501은 라인 8~9의 <circle> 요소에 대응하는 제1 원을 나타내고, 참조번호 502는 라인 11 및 12의 <circle> 요소에 대응하는 제2 원을 나타내며, 참조번호 503은 라인 14 및 15의 <circle> 요소에 대응하는 제3 원을 나타낸다. 참조번호 504는 SVG 문서 전체의 외접 구형을 나타낸다. 외접 구형(504)의 사이즈는 폭 21.0cm, 높이 29.7cm이다. 종횡의 점선, 그 점선의 교점에서의 원, 점선의 교점 부근에 표시된 좌표는, 후의 설명에 필요한 좌표의 좌표값을 도시하기 위한 것으로, 실제의 렌더링에는 포함되지 않는다.
다음에, 도 7 및 8을 참조해, 본 실시 예에서 사용하는 중간 코드에 대해 설명한다. 도 7은, 본 실시 예에서 사용하는 중간 코드의 사양을 나타내는 도면이다.
참조번호 601은 렌더링 명령을 나타내는 오피코드(operation code)이며, 숫자의 형태로 제공된다. 본 실시 예에서는 9종류의 오피코드를 정의하고 있다. 오피코드는 1바이트 정수로서 중간 코드 데이터(303)에 격납된다. 참조번호 602는 오 피코드를 사람이 식별하기 쉽게 하기 위해 제공된 니모닉(mnemonics)이다. 니모닉은 중간 코드를 덤핑(주로 디버그를 위해 디스플레이, 프린터, 파일 등에 출력)하는 경우에만 사용되고, 중간 코드 데이터(303)에는 포함되지 않는다. 참조번호 603은 오피코드에 대한 인수를 나타내는 오퍼랜드이다. 오퍼랜드의 수와 그 의미는 오피코드에 따라 다르다. 오퍼랜드는 2바이트 부동 소수점수로서 중간 코드 데이터(303)에 격납된다.
본 실시 예의 중간 코드에서는, 단위계로서 mm만을 사용한다. 오퍼랜드에 좌표나 길이를 지정하는 경우에는, 모두 mm으로 환산한 값으로 설명한다. 좌표값은 페이지 좌상(upper left)을 원점으로 하는 절대값으로 표시된다. 오퍼랜드로 색을 지정하는 경우에는 RGB(적,녹,청) 혹은 RGBA(적, 녹, 청, 알파)가 사용되고, R(적색), G(녹색), B(청색), A(알파)의 값은 각각 0.0~1.0의 범위 내에서 지정된다. RGB 색 지정에서는, 알파 값을 1.0으로서 취급한다.
오피코드 0(니모닉 PageStart)은 페이지의 개시를 나타낸다. 오퍼랜드는 페이지의 폭 W(mm)와 페이지의 높이 H(mm)이다. 오피코드 1(니모닉 PageEnd)은 페이지의 종료를 나타낸다. 이것에 대한 오퍼랜드는 없다. 오피코드 2(니모닉 Fill)는 필 색 지정이다. 이 Fill로 지정된 필은 이후의 렌더링 명령 모두에게 적용된다. 이것에 대한 오퍼랜드는 필 색에 대응하는 RGBA이다.
오피코드 3(니모닉 Stroke)은 외형선을 지정한다. Stroke로 지정된 외형선은 이후의 렌더링 명령 모두에게 적용된다. 오퍼랜드는 외형선에 대응하는 RGB와, 외형선의 폭 W(mm)이다. 본 실시 예에서는, 외형선의 색에 대해서는 알파 값 1.0이 암시되어 있다. 오피코드 4(니모닉 PathStart)는 패스의 개시를 나타낸다. 이것에 대한 오퍼랜드는 없다.
오피코드 5(니모닉 PathEnd)는 패스의 종료를 나타낸다. 오퍼랜드는 클로즈 플래그 F이다. 이것은, 여기서 "1"이 설정된 경우에 패스 종료 위치로부터 개시 위치까지 직선으로 렌더링함으로써, 패스를 닫는 것을 나타낸다. "0"이 지정된 경우에는 아무것도 하지 않는다.
오피코드 6(니모닉 PathMoveTo)은 패스의 렌더링 위치의 이동을 나타낸다. 이것은 PathStart 명령과 PathEnd 명령 사이에서만 유효하다. PathMoveTo는 렌더링 위치를 이동시키지만 하고, 실제의 렌더링은 행하지 않는다. 오퍼랜드는 X(횡 방향)(mm)와 Y(종 방향)(mm)의 값에 의해 지정된 이동 위치 좌표이다.
오피코드 7(니모닉 PathLineTo)은 패스의 현재 위치로부터 오퍼랜드에 의해 지정된 위치까지 직선을 렌더링한다. 이것은 PathStart 명령과 PathEnd 명령 사이에서만 유효하다. 오퍼랜드는 X(횡 방향)(mm)와 Y(종 방향)(mm)의 값으로 지정된 직선 종단 좌표이다.
오피코드 8(니모닉 PathArc)은 현재의 패스 위치로부터 원호를 렌더링하는 것을 나타낸다. 이것은 PathStart 명령과 PathEnd 명령 사이에서만 유효하다. PathArc는 항상 시계회전 방향으로 원호를 렌더링한다. 오퍼랜드는 X(횡 방향)(mm)와 Y(종 방향)(mm)의 값, 및, 원호의 길이(각도 D(°))로 지정된 원호 중심 좌표이다.
도 8은, 도 5에 나타낸 내용의 SVG 문서 파일(302)을 변환하는 인터프리 터(309)에 의해 획득된 중간 코드 데이터(303)의 내용을 나타낸다. 중간 코드 데이터(303)는 1바이트 정수의 오피코드와 2바이트 부동 소수점수의 오퍼랜드만을 격납하는 바이너리 데이터이다. 도 8은, 바이너리 데이터를 사람이 식별하기 쉽게 하기 위해서 바이너리 데이터에 태그를 붙이고, 또 니모닉을 제공한 것을 나타낸다.
라인 1은 페이지 개시 명령으로서, 오퍼랜드로 페이지의 폭과 높이를 210.0mm와 297.0 mm로 지정하고 있다. 이것은 도 5에 도시한 <svg> 요소의 개시 태그와 같은 것으로서, 길이 단위계를 cm에서 mm로 환산하고 있다.
라인 2는 이후의 렌더링에 사용하는 필 명령으로서, 오퍼랜드는 필 색을 황색으로, 알파 값을 0.7, 즉 (R, G, B, A)=(1.0, 1.0, 0.0, 0.7)으로 지정하고 있다. 이것은 도 5에 도시한 제1 <circle> 요소의 fill 및 fill-opacity 속성에 대응하고, 문자열 표기의 색 지정과 수치 표기의 불투명도가 RGBA 표기로 변환된다.
라인 3은 이후의 렌더링에 사용하는 외형선 명령으로서, 오퍼랜드는 외형선의 색을 청색, 즉 (R, G, B)=(0.0, 0.0, 1.0)으로 지정하고, 선폭을 2.0mm으로 지정한다. 이것은 도 5에 도시한 3개의 <circle> 요소의 stroke 속성 및 stroke width 속성에 대응하고, 문자열 표기의 색 지정이 RGB 표기로 변환되고, 또 길이 지정이 유저 좌표계에서 mm로 환산된다.
라인 4~7은 원을 렌더링하는 명령군이다. 라인 5의 렌더링 위치 이동 명령 및 라인 6의 원호 렌더링 명령은, 좌표 (80.0mm, 80.0mm)를 중심으로 하고, 360°의 각도로, 좌표(80.0mm, 30.0mm)로부터 시작하는 원을 렌더링한다. 원 내부는 라인 2의 명령에 의해 황색과 알파 값 0.7로 필링되고, 외형선은 라인 3의 명령에 의 해 청색과 선폭 2mm로 렌더링된다. 이것은 도 5의 제1 <circle> 요소 및 도 6의 렌더링 결과(501)에 대응하며, 좌표 지정 및 길이 지정은 유저 좌표계에서 mm으로 환산된다.
라인 8은 이후의 렌더링에 사용하는 필 명령으로서, 오퍼랜드는 필 색을 적색, 알파 값을 0.5, 즉 (R, G, B, A)=(1.0, 0.0, 0.0, 0.5)로 지정하고 있다. 이것은 도 5의 제2 <circle> 요소의 fill 및 fill-opacity 속성에 대응하고, 문자열 표기의 색 정과 수치 표기의 불투명도가 RGBA 표기로 변환된다.
라인 9~12는 원을 렌더링하는 명령군이다. 라인 10의 렌더링 위치 이동 명령 및 라인 11의 원호 렌더링 명령은, 좌표 (140.0mm, 80.0mm)를 중심으로 해서, 360°의 각도로, 좌표(140.0mm, 30.0mm)로부터 시작하는 원을 렌더링한다. 원 내부는 라인 8의 명령에 의해 적색과 알파 값 0.5로 필링되고, 외형선은 라인 3의 명령에 의해 청색과 선폭 2mm로 렌더링된다. 이것은 도 5의 제2 <circle> 요소 및 도 6의 렌더링 결과(502)에 대응하고, 좌표 지정 및 길이 지정은 유저 좌표계에서 mm로 환산된다.
라인 13은 이후의 렌더링에 사용하는 필 명령으로서, 오퍼랜드는 필 색을 녹색으로, 알파 값을 0.3, 즉(R, G, B, A)=(0.0, 1.0, 0.0, 0.3)으로 지정하고 있다. 이것은 도 5의 제3 <circle> 요소의 fill 및 fill-opacity 속성에 대응하고, 문자열 표기의 색 지정과 수치 표기의 불투명도는 RGBA 표기로 변환된다.
라인 14~17은 원을 렌더링하는 명령군이다. 라인 15의 렌더링 위치 이동 명령 및 라인 16의 원호 렌더링 명령은, 좌표(110.0mm, 130.0mm)를 중심으로 해서, 360°의 각도로, 좌표(110.0mm, 80.0mm)로부터 시작하는 원을 렌더링한다. 원 내부는 라인 13의 명령에 의해 녹색과 알파 값 0.3으로 필링되고, 외형선은 라인 3의 명령에 의해 청색과 선폭 2mm으로 렌더링된다. 이것은 도 5의 제3 <circle> 요소 및 도 6의 렌더링 결과(503)에 대응하고, 좌표 지정 및 길이 지정은 유저 좌표계로부터 mm로 환산된다.
다음에, 도 9~도 10을 참조해, 렌더러(310)의 동작의 개요에 대해 설명한다. 도 9 및 도 10은 렌더러(310)가 중간 코드 데이터(303)를 렌더링해 비트맵 데이터(304)를 작성해서, 프린터(313)의 컨트롤러(314)로 송신하는 동작을 나타내는 플로차트이다.
스텝 S801에서 동작의 플로우를 개시한다. 스텝 S802는 변수의 초기화 처리이다. SVG 문서 파일(302)을 변환함으로써 얻은 중간 코드 데이터(303)를 변수 dlc로 판독한다. "fill"은 렌더링 명령에 적용되는 필링에 사용하는 색을 보유하는 변수로서, (r, g, b, a)는 RGBA로 표기된 색의 각 요소를 나타낸다. 초기값은 (1.0, 1.0, 1.0, 1.0), 즉 완전 불투명(알파 값 1.0)의 백색이다. "stroke"는 렌더링 명령에 적용되는 외형선에 사용하는 색과 선폭을 보유하는 변수로서, (r, g, b, w)는 RGB로 표기된 색의 각 요소와 선폭(픽셀)을 나타낸다. 초기값은 (0.0, 0.0, 0.0, 1), 즉 1 픽셀의 선폭을 갖는 흑색 라인이다.
스텝 S803은 중간 코드 데이터 dlc로부터 다음의 오피코드와 오퍼랜드를 취득하는 처리이다. 취득한 오피코드와 오퍼랜드를 각각 변수 "op"와 "operand"에 격납한다. 스텝 S804, S806, S809, S811, S813, S816, S821, S823, S825는, 오피코 드 op의 종류를 판정해서, 각각의 오피코드에 대응하는 적절한 처리를 수행하는 것이다.
스텝 S804에서, 오피코드 "op"가 0(니모닉 PageStart)인 경우에는, 그 플로우가 스텝 S805로 진행된다. 그 이외의 경우는 플로우가 스텝 S806로 진행된다.
스텝 S805는 비트맵 데이터(304)를 격납하는 변수 bmp의 준비 처리이다. 여기서 bmp의 요소 w는 비트맵 데이터의 폭(픽셀)을 나타낸다. 오퍼랜드 "operand"의 페이지 폭 W(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, Operand(W)에 출력 해상도 res를 곱셈한다. bmp의 요소 h는 비트맵 데이터의 높이(픽셀)를 나타낸다. 오퍼랜드 "operand"의 페이지의 높이 H(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, Operand(H)에 출력 해상도 res를 곱한다. bmp의 요소 res는 프린터(313)의 출력 해상도를 PPM(Pixels Per Millimeter)로 나타낸다.
bmp의 요소 data[]는 비트맵 데이터를 격납하는 배열로, 크기는 수평방향으로 w(픽셀), 수직방향으로 h(픽셀)이다. data[]의 각 요소(r, g, b, a)는 각 픽셀의 색을 RGBA로 나타낸다. data[]의 각 요소의 값은 현재의 "fill"의 값, 즉 완전 불투명(알파 값 1.0)의 백색으로 초기화된다. bmp의 요소 pre-or-post[]는 각 픽셀에 대해서, 렌더링 전 칼라 매칭을 수행했는지, 렌더링 후 칼라 매칭을 수행했는지를 격납하는 배열로서, 그 크기는 배열 data[]와 같다. 렌더링 전 칼라 매칭을 수행한 경우에는, 값으로서 "pre"를 보유하고, 렌더링 후 칼라 매칭을 수행한 경우에는 값으로서 "post"를 보유한다. 초기값은 post이다. 이 처리가 종료하면, 플로우는 스텝 S803로 돌아간다.
스텝 S806에서 오피코드 op가 1(니모닉 PageEnd)이면, 스텝 S807에서 프린터 출력의 정의가 끝난 처리를 호출하고, 플로우는 스텝 S808에서 종료한다. 그 이외의 경우는, 플로우가 스텝 S809로 진행된다. 프린터 출력의 정의가 끝난 처리에 대해서는 도 14를 참조해 후술한다.
스텝 S809에서, 오피코드 op가 2(니모닉 Fill)이면, 플로우는 스텝 S810로 진행된다. 그 이외의 경우는, 플로우가 스텝 S811로 진행된다.
스텝 S810은 변수 "fill"의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 색(R, G, B, A)을 변수 "fill"의 각 요소(r, g, b, a)에 격납한다. 처리가 종료하면, 플로우는 스텝 S803로 돌아간다.
스텝 S811에서, 오피코드 op가 3(니모닉 Stroke)이면, 플로우는 스텝 S812로 진행된다. 그 이외의 경우는, 플로우는 스텝 S813로 진행된다.
스텝 S812는 변수 "stroke"의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 색 (R, G, B)과 선폭(W)을 변수 "stroke"의 각 요소(r, g, b, w)에 격납한다. 이때, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, W(mm)에 출력 해상도 bmp.res를 곱한다. 처리가 종료하면, 플로우는 스텝 S803로 돌아간다.
스텝 S813에서, 오피코드 op가 4(니모닉 PathStart)이면, 플로우는 스텝 S814로 진행된다. 그 이외의 경우는, 플로우는 S815에서 스텝 S816로 진행된다.
스텝 S814는 패스 렌더링을 위한 변수 "path[]"와 "cursor"의 준비 처리이다. path[]는 패스의 좌표값을 격납하는 배열이다. path[]의 각 요소(x, y)는 패스의 좌표를 픽셀 단위로 나타낸 좌표값이다. 이 cursor는 현재의 렌더링 위치를 격 납하는 변수로서, 요소(x, y)는 이 경우에 또한 렌더링 위치를 픽셀 단위로 나타내는 좌표값이다. 처리가 종료하면, 플로우는 스텝 S803로 돌아간다.
스텝 S816에서, 오피코드 op가 5(니모닉 PathEnd)이면, 플로우는 스텝 S817로 진행된다. 그 이외의 경우는, 플로우는 스텝 S821로 진행된다.
스텝 S817은 오퍼랜드 "operand"가 1인지 아닌지를 판정하는 처리이다. 1이면, 플로우는 스텝 S818로 진행되고, 그 이외의 경우는 스텝 S819로 진행된다.
스텝 S818는 폐패스의 렌더링 처리이다. 변수 dlc의 현재의 판독 위치에, 오피코드 7(니모닉 PathLineTo)을 삽입한다. 오퍼랜드는 현재의 패스의 개시 위치인 path[0]이지만, 비트맵의 단위계(픽셀)로부터 오퍼랜드 단위계(mm)로 변환하기 때문에, path[0]를 출력 해상도 bmp.res로 나눈다. 또, 다시 패스 종료 처리를 행하기 위해서, 오피코드 5(니모닉 PathEnd)도 삽입한다. 이번은 폐패스의 렌더링 처리가 필요 없기 때문에, 오퍼랜드는 0이다. 처리가 종료하면, 플로우는 S827에서 스텝 S803로 돌아간다.
스텝 S819는 패스의 필링이 필요한지 아닌지를 판정하는 처리이다. 패스의 현재의 렌더링 위치를 나타내는 변수 "cursor"의 값과 패스 개시 위치인 변수 path[0]의 값을 비교해, 이들이 동일하면, 폐패스이므로 필링이 필요하다고 판정하고, 플로우가 스텝 S820로 진행된다. 그 이외의 경우는, 플로우가 S827에서 스텝 S803로 돌아간다.
스텝 S820은 패스 필링에 대한 정의가 끝난 처리를 호출하는 처리이다. 이 패스 필링의 정의가 끝난 처리에 대해서는 도 11을 참조해 후술한다.
스텝 S821에서, 오피코드 op가 6(니모닉 PathMoveTo)이면, 플로우는 스텝 S822로 진행된다. 그 이외의 경우는, 플로우는 스텝 S823로 진행된다.
스텝 S822는 패스의 현재의 렌더링 위치를 나타내는 변수의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 좌표값(X, Y)을 변수 "cursor"의 각 요소(x, y)에 격납한다. 이때, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, Operand(X, Y)에 출력 해상도 bmp.res를 곱한다. 처리가 종료하면, 플로우가 S827에서 스텝 S803로 돌아간다.
스텝 S823에서, 오피코드 op가 7(니모닉 PathLineTo)이면, 플로우는 스텝 S824로 진행된다. 그 이외의 경우는 플로우는 스텝 S825로 진행된다.
스텝 S824는 비트맵 데이터 bmp로 직선을 렌더링하는 처리이다. 개시점은 패스의 현재의 렌더링 위치인 cursor(x, y)이다. 종료점은 오퍼랜드 "operand"로 지정된 좌표값(X, Y)이지만, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, bmp.data[operand(X, Y)]에 출력 해상도 bmp.res를 곱셈한다. 외형선에 대해서는 변수 "stroke"의 색(RGB)과 선폭(픽셀)을 사용한다. 렌더링한 직선의 각 좌표값(픽셀)을 변수 path[]에 추가하고, 마지막으로 추가한 좌표값(직선 종료점)을 변수 "cursor"에 격납한다. 처리가 종료하면, 플로우는 S827에서 스텝 S803로 돌아간다.
스텝 S825에서, 오피코드 op가 8(니모닉 PathArcTo)이면, 플로우는 스텝 S826로 진행된다. 그 이외의 경우는 도 7에 나타낸 중간 코드 사양에 그러한 경우가 존재하지 않기 때문에, 처리를 스킵하고 플로우가 S827로부터 스텝 S803로 돌아 간다.
스텝 S826는 비트맵 데이터 bmp로 원호를 렌더링하는 처리이다. 개시점은 패스의 현재의 렌더링 위치인 cursor(x, y)이다. 중심점은 오퍼랜드 "operand"로 지정된 좌표값(X, Y)이지만, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, bmp.data[operand(X, Y)]에 출력 해상도 bmp.res를 곱한다. 각도는 오퍼랜드 "operand"로 지정된 각도 D(°)이다. 외형선에 대해서는 변수 "stroke"의 색(RGB)과 선폭(픽셀)을 사용한다. 렌더링한 각 좌표값(픽셀)을 변수 path[]에 추가하고, 마지막으로 추가한 좌표값을 변수 "cursor"에 격납한다. 처리가 종료하면, 플로우는 S827로부터 스텝 S803로 돌아간다.
렌더러(310)의 동작의 일례에 대해서는 도 8, 도 15 및 도 16을 참조해 후술한다.
다음에, 도 11을 참조해, 패스 필의 동작에 대해 설명한다. 도 11은, 패스 필링을 행하는 정의가 끝난 처리의 동작을 나타내는 플로차트이다. 본 정의가 끝난 처리는 도 9에 나타낸 플로차트의 스텝 S820로부터 호출된다.
스텝 S901는 패스 필 동작을 개시하고, bmp, path, fill은 본 정의가 끝난 처리 호출시의 인수이다. 인수 bmp는, 도 9 및 도 10의 플로차트의 스텝 S805에서 초기화되고, 스텝 S820, S824, S826에서 갱신된 변수 bmp와 같은 값을 갖는다. 인수 path는, 도 9 및 도 10의 플로차트의 스텝 S814에서 초기화되고, 스텝 S824 및 스텝 S825에서 갱신된 변수 path와 같은 값을 갖는다. 인수 fill는, 도 9 및 도 10의 플로차트의 스텝 S802에서 초기화되고, 스텝 S810에서 갱신된 변수 fill와 같은 값을 갖는다.
스텝 S902는 변수의 초기화 처리이다. 여기서, "coord"은 비트맵 데이터 bmp.data[]를 좌상으로부터 우하로 향해 스캔할 때의 좌표값을 보유하는 변수로서, (x, y)는 픽셀 단위의 좌표값을 나타낸다. 초기값은 (0, 0)으로서, 비트맵 데이터 bmp.data의 좌상을 나타낸다. 도 11에 나타낸 플로차트는 변수 coord가 루프 변수인 루프이다.
스텝 S903은 변수 coord를 나타내는 좌표값이 변수 "path"가 나타내는 패스내에 있는지 아닌지를 판정하는 처리이다. 스텝 S819에서 변수 "path"가 폐패스라고 판단되었을 경우만 스텝 S820에서 본 처리가 호출되므로, 변수 "path"가 나타내는 패스는 여기서는 항상 폐패스이며, 임의의 좌표값에 대해 패스 내에 있는지 아닌지를 판정할 수가 있다. 패스 내에 있다고 판정되었을 경우에는, 플로우가 스텝 S904로 진행된다. 패스 내에 있지 않다고 판정되었을 경우는 플로우는 스텝 S907로 진행된다.
스텝 S904는 변수 "fill"가 나타내는 색의 알파 값이 1.0(완전 불투명)인지 아닌지를 판정하는 처리이다. 알파 값이 1.0(완전 불투명)이면, 알파 블렌딩은 필요 없다고 판단하고, 플로우는 스텝 S905로 진행된다. 알파 값이 1.0이외(즉, 투명)이면, 알파 블렌딩이 필요하다고 판단하고, 플로우는 스텝 S906로 진행된다.
스텝 S905는 알파 값이 1.0(완전 불투명)인 경우에 행해진 필링 처리이다. 이 경우, 알파 블렌딩은 필요 없기 때문에, 비트맵 데이터 bmp.data[]의 좌표 위치 coord의 색을, 변수 "fill"가 나타내는 색으로 교체한다.
스텝 S906은 알파 값이 1.0 이외(즉, 투명)인 경우에, 알파 블렌드의 정의가 끝난 처리를 호출하는 처리이다. 알파 블렌드의 정의가 끝난 처리의 리턴(return) 값은 알파 블렌드 후의 색(RGBA)과 렌더링 전 칼라 매칭을 수행했는지 렌더링 후 칼라 매칭을 수행했는지의 플래그("pre" 또는 "post")이다. 그 결과, 좌표 위치 coord에 있어서의 비트맵 데이터 bmp.data[] 및 플래그 bmp.pre-or-post[]의 값은 각각 리턴 값으로 교체된다. 알파 블렌딩에 대한 정의가 끝난 처리에 대해서는 도 12 및 도 13을 참조해 후술한다.
스텝 S907~S910는 루프 처리이다. 스텝 S907은 변수 coord의 횡방향의 값coord.x를 1씩 증가시키는 처리이다. 스텝 S908은 변수 coord의 횡방향의 값 coord.x가 비트맵 데이터의 횡방향의 크기, 즉 bmp.w와 동일해졌는지 아닌지를 판정하는 처리이다. 이들이 동일하면, 플로우는 스텝 S909로 진행되고, 동일하지 않으면, 플로우는 스텝 S903로 돌아간다. 
스텝 S909는, 변수 coord의 횡방향의 값 coord.x를 0으로 초기화하고, 변수 coord의 종 방향의 값 coord.y를 1씩 증가시키는 처리이다. 스텝 S910은 변수 coord의 종 방향의 값 coord.y가 비트맵 데이터의 종 방향의 크기, 즉 bmp.h와 동일해졌는지 아닌지를 판정하는 처리이다. 이들이 동일하면, 플로우는 스텝 S911로 진행되고, 동일하지 않으면, 플로우는 스텝 S903로 돌아간다. 
스텝 S911는 종료이다. 정의가 끝난 처리의 리턴 값은 없지만, 인수 bmp로서 건네준 비트맵 데이터 bmp.data[]가 갱신된다.
다음에, 도 12 및 도 13을 참조해, 알파 블렌딩의 동작에 대해 설명한다. 도 12는, 검증 결과 데이터베이스(312)의 구성을 나타내는 도면이다.
여기서, 참조번호 1001은 검증 결과 데이터베이스(312)의 각 레코드를 구성하는 열을 나타내고, 1002는 각 열에 격납된 데이터를 나타낸다. 참조번호 1003, 1004은 알파 블렌딩의 대상이 되는 색을 RGBA 표기로 격납한다.
1005, 1006, 1007의 각 열은 렌더러(310)가 CMM(311)를 이용할 때의 입력 프로파일(305), 프린터 프로파일(307), 렌더링 인텐트(308)를 식별하는 ID를 격납한다. 1008의 열은 알파 블렌딩의 결과로서 얻은 색을 RGBA 표기로 격납하고, 1009의 열은 렌더링 전 칼라 매칭을 수행했는지 렌더링 후 칼라 매칭을 수행했는지를 격납한다("pre" 또는 "post"의 값).
도 13은, 알파 블렌딩하는 정의가 끝난 처리의 동작을 나타내는 플로차트이다. 본 정의가 끝난 처리는 도 11에 나타낸 플로차트의 스텝 S906로부터 호출된다. 본 정의가 끝난 처리에서는, CMM(311)의 칼라 매칭 기능으로서 CMM.gm, CMM.cc, CMM.lab의 3개의 기능을 이용한다.
CMM.gm는 색역 맵핑(gamut mapping)을 수행한다. 인수(color, prof1, prof2, intent)는 색 지정 "color", 프로파일 "prof1", 프로파일 "prof2", 및 렌더링 인텐트 "intent"이다. CMM.gm의 기능은 "prof1"가 표현하는 색역의 색 "color"를, "prof2"가 표현하는 색역의 "intent"에 따라 맵핑해, "prof1"가 표현하는 색역의 색으로서 돌려주는 것이다.
CMM.cc는 색 변환(color conversion)을 행한다. 인수(color, prof1, prof2)는 색지정 "color", 프로파일 "prof1", 프로파일 "prof2"이다. CMM.cc의 기 능은 "prof1"가 표현하는 색역의 색 "color"를, "prof2"가 표현하는 색역으로 맵핑 없이 변환해서, "prof2"가 표현하는 색역의 색으로서 돌려주는 것이다. "color"로 지정된 색이 "prof2"가 표현하는 색역 내에 있다는 것이 전제이다.
CMM.lab는 L*a*b* 값으로의 변환을 수행한다. L*a*b* 색 공간은 CIE(Commission Internationale l'Eclairage)가 1976년에 정한 균등 색 공이며, 명도 지수 L*와 채도(chromaticness) 지수 a* 및 b*로 표현된다. 인수(color, prof)는 색 지정 "color"와 프로파일 "prof"이다. CMM.Lab의 기능은 prof가 표현하는 색역의 색 "color"를 L*a*b* 값으로 변환해 돌려주는 것이다.
스텝 S1101은 알파 블렌딩의 개시이다. 인수 "color1", "color2"는 본 정의가 끝난 처리 호출시의 인수이다. 인수 "color1"는, 도 9 및 도 10의 스텝 805에서 초기화되고, 도 11의 스텝 S905 및 스텝 S906 혹은 그 외의 스텝에서 갱신된 비트맵 데이터 bmp.data[]의 임의의 좌표에서의 색의 값이다. 인수 "color2"는, 도 9 및 도 10의 스텝 S802에서 초기화되고, 스텝 S810에서 갱신된 변수 "fill"의 색의 값이다.
스텝 S1102는 변수의 초기화 처리이다. "return"은 리턴 값을 보유하는 변수로서, 요소(r, g, b, a)는 RGBA 표기의 색의 각 요소를 나타낸다. 요소 pre_or_post는 렌더링 전 칼라 매칭을 수행했는지, 렌더링 후 칼라 매칭을 수행했는지를 보유하는 변수이며, 값 "pre" 또는 값 "post"를 보유한다. "inputProf"는 입력 프로파일(305)의 내용을 보유하는 변수이다. "printerProf"는 프린터 프로파일(307)의 내용을 보유하는 변수이다. "intent"는 렌더링 인텐트(308)의 내용을 보 유하는 변수이다.
스텝 S1103는 검증 결과 데이터베이스(312)에 검증 결과가 등록되어 있는지 아닌지를 검색하는 처리이다. 도 12에 그 구성을 나타낸 검증 결과 데이터베이스에 대하여, 변수 color1, 변수 color2, 변수 inputProf, 변수 printerProf, 및 변수 intent를 인수로서 등록 레코드를 검색한다. 우선, color1가 열 1003, color2가 열 1004, inputProf가 열 1005, printerProf가 열 1006, intent가 열 1007에 각각 일치하는 레코드를 찾아낸다. 그 검색 결과로서 찾아낸 레코드의 열 1008의 값과 열 1009의 값을 각각 변수 "return"의 (r, g, b, a)과 (pre_or_post)에 격납한다. 스텝 S1103에서는, 레코드가 발견되었는지 아닌지를 판정하고, 레코드가 발견된 경우에는, 플로우가 스텝 S1112로 진행되어 처리를 종료한다. 레코드가 발견되지 않은 경우에는, 플로우가 스텝 S1104로 진행된다. 이 구성에 의해, 렌더링 전 칼라 매칭/렌더링 후 칼라 매칭 중 하나가 입력 SVG 문서에 색의 충실한 재현을 주는지에 관해 평가한 결과가, 이미 검증 결과 데이터베이스(312)에 등록된 경우에는, 그 결과를 즉시 사용하는 것이 가능해진다.
스텝 S1104는 렌더링 전 칼라 매칭을 수행했을 경우에 L*a*b* 값을 얻는 처리이다. 우선, CMM(311)의 CMM.gm기능을 이용해, 인수 color1의 값과 인수 color2의 값을 입력 색역으로부터 프린터(313)의 색역으로 렌더링 인텐트 "intent"를 이용해 맵핑하고, 그 결과를 변수 preInput1와 preInput2에 격납한다. 입력 색역은 inputProf로 표현되고, 프린터(313)의 색역은 printerProf로 표현된다.
다음에, 변수 preInput1의 값과 변수 preInput2의 값 사이에서 블렌딩 처리 를 행하고, 그 결과를 변수 preRender에 격납한다. 블렌딩 처리는, preInput1의 값(r, g, b, a)과 preInput2의 값(r, g, b, a)을, 이하의 식에 제시함으로써 행해진다.
preRender.r=preInput1.r×preInput1.a+preInput2.r×preInput2.a×(1-preInput1.a)
preRender.g=preInput1.g×preInput1.a+preInput2.g×preInput2.a×(1-preInput1.a)
preRender.b=preInput1.b×preInput1.a+preInput2.b×preInput2.a×(1-preInput1.a)
preRender.a=preInput1.a+preInput2.a×(1-preInput1.a)
마지막으로, CMM(311)의 CMM.cc기능을 이용해, 블렌드 결과 preRender의 값을 입력 색역(inputProf가 표현)에서 프린터(313)의 색역으로 변환해서 변수 prePrinter에 격납한다. 또, CMM(311)의 CMM.lab 기능을 이용해, prePrinter 값을 L*a*b* 값으로 변환해서 변수 preLab에 격납한다.
스텝 S1105는 렌더링 후 칼라 매칭을 수행했을 경우의 L*a*b* 값을 얻는 처리이다. 우선, 인수 color1의 값과 인수 color2의 값 사이에서 블렌딩 처리를 행하고, 그 결과를 변수 postRender에 격납한다. 블렌딩 처리는, color1의 값(r, g, b, a)과 color2의 값(r, g, b, a)을, 이하의 식에 제시함으로써 행해진다.
preRender.r=color1.r×color1.a+color2.r×color2.a×(1-color1.a)
preRender.g=color1.g×color1.a+color2.g×color2.a×(1-color1.a)
preRender.b=color1.b×color1.a+color2.b×color2.a×(1-color1.a)
preRender.a=color1.a+color2.a×(1-color1.a)
다음에, CMM(311)의 CMM.gm 기능을 이용해, 블렌드 결과 preRender의 값을 입력 색역(inputProf가 표현)으로부터 프린터(313)의 색역(printerProf가 표현)으로, 렌더링 인텐트 "intent"로 맵핑한다. 그 결과를 변수 postInput에 격납한다. 마지막으로, CMM(311)의 CMM.cc기능을 이용해, 블렌드 결과 postInput의 값을 입력 색역(inputProf가 표현)으로부터 프린터(313)의 색역(printerProf가 표현)으로 변환한 후, 변수 postPrinter에 격납한다. 또, CMM(311)의 CMM.lab 기능을 이용해, postPrinter의 값을 L*a*b* 값으로 변환해 변수 postLab에 격납한다.
스텝 S1106은 입력 색역(inputProf로 표현)에 있어서의 논리적인 L*a*b* 값을 얻는 처리이다. 우선, 인수 color1의 값과 인수 color2의 값 사이에서 블렌딩 처리를 행하고, 그 결과를 변수 tRender에 격납한다. 블렌딩은 스텝 S1105와 같은 방식으로 수행된다. 다음에, CMM(311)의 CMM.lab 기능을 이용해, 블렌딩 결과 tRender의 값을 L*a*b* 값으로 변환해 변수 tLab에 격납한다.
스텝 S1107는 L*a*b*값 preLab와 tLab, postLab와 tLab 간의 CIE L*a*b* 색 차(CIE 1976)를 얻는 처리이다. preLab와 tLab의 색차ΔEpre, 및 postLab와 tLab의 색차 ΔEpost는, preLab의 값(L*, a*, b*), postLab의 값(L*, a*, b*), 및 tLab의 값(L*, a*, b*)으로부터, 이하의 식에 의해 계산된다.
ΔEpre 2=(preLab.L*-tLab.L*)2+(preLab.a*-tLab.a*)2+(preLab.b*-tLab.b*)2
ΔEpost 2=(postLab.L*-tLab.L*)2+(postLab.a*-tLab.a*)2+(postLab.b*-tLab.b*)2
계산 결과를 각각 변수 deltaE_pre와 deltaE_post에 격납한다. 스텝 S1108에서는 색차 deltaE_pre와 deltaE_post를 비교한다. 변수 deltaE_pre의 값이 작으면, 플로우는 스텝 S1109로 진행되고, 그 이외의 경우는, 플로우가 스텝 S1110로 진행된다.
스텝 S1109는 렌더링 전 칼라 매칭을 수행한 경우의 값이 논리 값에 가까운 경우에(즉, 스텝 S1108에 있어서의 비교에 의해 deltaE_pre < deltaE_post을 산출한 경우) 행해진 처리이다. 변수 "return"의 (r, g, b, a)에, 입력 색역(inputProf로 표현)의 렌더링 결과를 보유하는 preRender의 값을 격납하고, 변수 "return"의 (pre_or_post)에는 값 "pre"를 격납한다.
스텝 S1110는 렌더링 후 칼라 매칭을 수행한 경우의 값이 논리값에 가까운 경우(즉, 스텝 S1108에 있어서의 비교에 의해 deltaE_pre≥deltaE_post을 산출한 경우)에 행해진 처리이다. 변수 "return"의 (r, g, b, a)에 입력 색역(inputProf로 표현)의 렌더링 결과를 보유하는 postRender의 값을 격납하고, 변수 "return"의 (pre_or_post)에는 값 "post"를 격납한다.
스텝 S1111은 검증 결과 데이터베이스(312)에 검증 결과를 하는 처리이다. 도 12에 그 구성을 도시한 검증 결과 데이터베이스에, 변수 color1, 변수 color2, 변수 inputProf, 변수 printerProf, 변수 intent, 및 변수 return를 인수로서 레코드를 등록한다. 즉, color1가 검증 결과 데이터베이스의 열 1003에 등록되고, color2가 검증 결과 데이터베이스의 열 1004에 등록된다. 또 inputProf가 열 1005에 등록되고, printerProf가 검증 결과 데이터베이스의 열 1006에 등록되며, intent가 검증 결과 데이터베이스의 열 1007에 등록된다. 더욱, return(r, g, b, a)가 검증 결과 데이터베이스의 열 1008에 등록되고, return(pre_or_post)가 검증 결과 데이터베이스의 열 1009에 등록된다.
이상의 구성에 의해,
(1) 입력 색역에서, 알파 블렌딩을 수반하는 렌더링을 수행한 결과와 알파 브렌딩 후에 칼라 매칭을 수행한 결과 간의 차이와,
(2) 입력 색역에서, 알파 블렌딩을 수반하는 렌더링을 수행한 결과와 칼라 매칭 후에 알파 블렌딩을 수행한 결과 간의 차이의 쌍방을 평가할 수 있다.
차이가 작은 것이 검증 결과 데이터베이스에 등록된다. 그 결과, 같은 조건(색의 값, 입력 프로파일, 출력 프로파일, 렌더링 인텐트)하에서 처리가 요구되었을 때에, 등록된 처리 결과를 검증 결과 데이터베이스로부터 판독함으로써 다시 계산을 수행하는 일없이 고속으로 결과를 얻을 수 있다.
스텝 S1112는 플로우를 종료한다. 변수 "return"의 값을 리턴값으로서 돌려준다.
다음에, 도 14를 참조해, 프린터 출력의 동작에 대해 설명한다. 도 14는, 프린터 출력에 대하여 정의가 끝난 처리의 동작을 나타내는 플로차트이다. 본 정의가 끝난 처리는 도 9에 나타낸 플로차트의 스텝 S807로부터 호출된다.
스텝 S1201은 정의가 끝난 처리를 개시한다. 인수 bmp는 도 9 및 도 10에 나 타낸 플로차트의 스텝 S805에서 초기화되고, 스텝 S820, S824, S826에서 렌더링된 변수 bmp와 같은 값을 갖는다.
스텝 S1202는 변수의 초기화 처리이다. 여기서, "coord"는 비트맵 데이터 bmp.data를 좌상으로부터 우하로 향해 스캔할 때의 좌표값을 보유하는 변수로서, (x, y)는 픽셀 단위의 좌표값을 나타낸다. 도 20에 나타낸 플로차트는 주로 변수 "coord"가 루프 변수인 루프 처리로 구성된다. "inputProf"는 입력 프로파일(305)의 내용을 보유하는 변수이다. "printerProf"는 프린터 프로파일(307)의 내용을 보유하는 변수이다. "intent"는 렌더링 인텐트(308)의 내용을 보유하는 변수이다. outputbmp[]는 프린터 출력용의 비트맵 데이터를 보유하는 배열로서, 그 크기는 bmp.data[]와 같다.
스텝 S1203는 변수 "coord"가 가리키는 좌표값의 비트맵 데이터와 "pre" 또는 "post"의 값을 bmp.data[]와 bmp.pre_or_post[]로부터 취득하는 처리이다. 취득한 값을 각각 변수 "data"와 "pre_or_post"에 격납한다.
스텝 S1204는 변수 pre_or_post가 값 "pre"인지 아닌지를 판정하는 처리이다. 스텝 S805에서 값 post에 초기화된 변수 bmp.pre_or_post[]는, 픽셀에 대하여 알파 블렌드 렌더링이 행해졌을 경우에, 스텝 S906에서 값 pre 또는 post가 격납된다. 그 이외의 렌더링의 경우에는 어떠한 값도 전혀 격납되지 않는다. 이 때문에, S1204에서 YES가 되는 경우만, 픽셀에 대하여 렌더링 전 칼라 매칭과 알파 블렌드 렌더링이 행해진 경우이다. 그 경우, 플로우가 스텝 S1206로 진행된다. 그 이외의 경우는, 플로우가 스텝 S1205로 진행된다.
스텝 S1205는 CMM(311)의 CMM.gm 기능을 이용해, 픽셀 데이터(비트맵 데이터)를 입력 색역으로부터 프린터(313)의 색역으로 렌더링 인텐트 "intent"에 따라 맵핑하는 처리이다. 그 결과는 변수 "data"에 중복 기록된다.
스텝 S1206에서는, 변수 "data"의 색 값이 이미 프린터(313)의 색역(printerProf로 표현)에 맵핑되어 있다. CMM(311)의 CMM.cc기능을 이용해, 변수 "data"을 입력 색역(inputProf로 표현)으로부터 프린터(313)의 색역(printerProf로 표현)으로 변환한다. 그 결과는 프린터 출력용 비트맵 데이터 outputbmp[]에서 변수 "coord"가 가리키는 좌표 위치에 격납된다.
스텝 S1207~S1210는 루프 처리이다. 스텝 S1207는 변수 coord의 횡 방향의 값 coord.x를 1씩 증가시키는 처리이다. 스텝 S1208는 변수 coord의 횡 방향의 값coord.x가 비트맵 데이터의 횡 방향의 크기, 즉 bmp.w와 동일해졌는지 아닌지를 판정하는 처리이다. 이들이 같은 경우에는, 플로우가 스텝 S1209로 진행되고, 동일하지 않은 경우에는, 플로우가 스텝 S1203로 돌아간다.
스텝 S1209는 변수 coord의 종 방향의 값 coord.y를 1씩 증가시키는 처리이다. 스텝 S1210는 변수 coord의 종 방향의 값 coord.y가 비트맵 데이터의 종 방향의 크기, 즉 bmp.h와 동일해졌는지 아닌지를 판정하는 처리이다. 이들이 동일한 경우에는, 플로우가 스텝 S1211로 진행되고, 동일하지 않은 경우에는 플로우가 스텝 S1203로 돌아간다.
스텝 S1211는 다 작성된 프린터 출력용 비트맵 데이터 outputbmp[]를 프린터(313)의 컨트롤러(314)로 송신하는 처리이다. 프린터(313)는 수신한 비트맵 데이 터를 RAM(209)에 비트맵 데이터(315)로서 격납하고, 프린터 엔진(212)을 비트맵 데이터(315)에 따라 제어해 출력을 행한다. 
스텝 S1212는 종료이다. 리턴 값은 없다.
마지막으로, 도 15 및 도 16을 참조해, 렌더러(310)의 동작의 일례에 대해, 도 8에 나타낸 중간 코드 데이터를 사용해 설명한다. 도 15 및 도 16은, 렌더러(310)가 도 8에 나타낸 중간 코드 데이터를 도 9 내지 도 11 및 도 13에 나타낸 플로차트에 따라 렌더링하는 방식을 나타낸 것이다.
중간 코드 데이터는 스텝 S802에서 변수 dlc로 판독된다. 변수 "fill"는 fill(r, g, b, a)=(1.0, 1.0, 1.0, 1.0)으로 초기화된다. 변수 "stroke"는 stroke(r, g, b, w)=(0.0, 0.0, 0.0, 1)으로 초기화된다.
dlc의 제1 오피코드(PageStart)에서는, 스텝 S804 및 S805에서 변수 bmp가 초기화된다. 여기서, 프린터의 해상도를 300 dpi(Dots Per Inch)로 하면, 1인치가 25.4mm이므로, PPM(Pixels Per Millimeter)으로 변환된 해상도는 11.811 PPM이 된다. 이 변환된 프린터 해상도를 사용해, bmp.w=210.0×11.811=2480.31
Figure 112006040222639-PAT00001
2480(소수점 이하 잘라버림), bmp.h=297.0×11.811=3507.867
Figure 112006040222639-PAT00002
3507(소수점 이하 잘라버림), bmp.res=11.811(PPM)을 얻는다. 또, bmp.data[]와 bmp.pre_or_post[]의 배열의 크기는 2480×3507=844,856이 된다. bmp.data[]는 스텝 S802에서 초기화된 fill(r, g, b, a)=(1.0, 1.0, 1.0, 1.0)으로 초기화된다. pre_or_post[]는 "post"로 초기화된다.
dlc의 제2 오피코드(Fill)에서는, 스텝 S809 및 S810에서 변수 "fill"가 갱신된다. 여기에서는, fill(r, g, b, a)=(1.0, 1.0, 0.0, 0.7)가 된다.
dlc의 제3 오피코드(Stroke)에서는, 스텝 S811 및 S812에서 변수 "stroke"가 갱신된다. 여기서, 오퍼랜드의 2.0에 해상도 bmp.res를 곱셈함으로써 2.0×11.811=23.622
Figure 112006040222639-PAT00003
23(소수점 이하 잘라버림)인 선폭을 얻어, stroke(r, g, b, w)=(0.0, 0.0, 1.0, 23)을 산출한다.
dlc의 제4 오피코드(PathStart)에서는, 스텝 S813 및 S814에서 변수 "path[]"와 "cursor"가 초기화된다. 여기에서는 오퍼랜드에 의존한 처리는 행해지지 않기 때문에, cursor(x, y)=(0, 0)이다.
dlc의 제5 오피코드(PathMoveTo)에서는, 스텝 S821 및 S822에서 변수 "cursor"가 갱신된다. 좌표값에 해상도 bmp.res를 곱셈함으로써, cursor.x=80.0×11.811=944.88=
Figure 112006040222639-PAT00004
944(소수점 이하 잘라버리고)와, cursor.y=30.0×11.811=354.33
Figure 112006040222639-PAT00005
354(소수점 이하 잘라 버리고)가 취득된다.
dlc의 제6 오피코드(PathArc)에서는, 원호 1301이 렌더링된다. 개시점 1302는 변수 "cursor"의 현재의 값인 (944, 354)이다. 이것은 오퍼랜드의 (80.0, 80.0)에 해상도 bmp.res를 곱셈하여 80.0×11.811=944.88
Figure 112006040222639-PAT00006
944(소수점 이하 잘라 버리고)이 중심점 1303을 획득함으로써 (944, 944)을 산출하고, 각도는 오퍼랜드에 따라 360°가 된다. 외형선은 변수 "stroke"의 현재의 값인 청색이고, 선폭은 23 픽셀이다. 개시점 1302에서 시작하고, 시계회전방향으로 선호 1301을 따라가며, 개시 점 1302로 돌아가는 외형선의 좌표는 변수 path[]에 추가된다.
dlc의 제7 오피코드(PathEnd)에서는, 오퍼랜드가 1이 아니므로, 스텝 S818의 처리는 행해지지 않는다. path[]에 보유되어 있는 개시점과 종료점은 1302가 가리킨 (944, 354)이므로, 스텝 S819에서 폐패스라고 판정된다. 이것은 스텝 S820에서 패스 필 정의가 끝난 처리(도 11)를 호출한다.
이 패스 필 처리에서는, 비트맵 데이터의 각 픽셀 좌표가 path[] 내에 있는지 아닌지를 판정하고, path[] 내부에 있으면, "fill"로 페인팅하는 처리가 행해진다. 변수 "fill"의 현재의 값, 즉 (r, g, b, a)=(1.0, 1.0, 0.0, 0.7)에 따라 필링이 행행진다. 알파 값은 1.0이 아니기 때문에, 스텝 S906에서 알파 블렌드 정의가 끝난 처리(도 13)가 호출된다.
스텝 S1103에서 검증 결과 데이터베이스에서 레코드가 발견되지 않았다고 하면, 스텝 S1104~S1111에서 알파 블렌딩 처리가 행해진다. 여기에서는 bmp.data[] 의 초기화 값(1.0, 1.0, 1.0, 1.0)과 fill(1.0, 1.0, 0.0, 0.7) 사이에서 블렌딩이 행해진다. 블렌딩 전 칼라 매칭이나 블렌딩 후 칼라 매칭의 어느 쪽이 선택될지는 입력 프로파일(305), 프린터 프로파일(307), 및 렌더링 인텐트(308)의 내용에 의존하지만, 여기에서는 렌더링 전 칼라 매칭이 선택되었다고 한다. 또, 블렌딩 결과로서 얻은, 외형선 1301의 내부의 점에 대해, 비트맵 데이터 bmp.data[]의 값이 (0.9, 0.2, 0.2, 1.0)가 되고, pre_or_post[]의 값이 "pre"가 되었다고 한다. 지금까지의 렌더링 결과는 도 15에 도시되어 있다.
dlc의 제8 오피코드(Fill)에서는, 스텝 S809 및 S810에서 변수 "fill"가 갱 신된다. 여기에서는 fill(r, g, b, a)=(1.0, 0.0, 0.0, 05)이다.
dlc의 제9 오피코드(PathStart)에서는, 스텝 S813 및 S814에서 변수 "path[]"와 "cursor"가 초기화된다. 여기에서는, 오퍼랜드에 의존한 처리는 행해지지 않기 때문에, cursor(x, y)=(0, 0)이다.
dlc의 제10 오피코드(PathMoveTo)에서는, 스텝 S821 및 S822에서 변수 "cursor"가 갱신된다. 좌표값에 해상도 bmp.res를 곱셈함으로써, cursor.x=140.0×11.811=1653.54
Figure 112006040222639-PAT00007
1653(소수점 이하 잘라 버리고), cursor.y=30.0×11.811=354.33
Figure 112006040222639-PAT00008
354(소수점 이하 잘라 버리고)가 취득된다.
dlc의 제11 오피코드(PathArc)에서는, 원호 1304가 렌더링된다. 개시점 1305는 변수 "cursor"의 현재의 값인 (1653, 354)이다. 오퍼랜드의 (140.0, 80.0)에 해상도 bmp.res를 곱셈함으로써 140.0×11.811=1653.54
Figure 112006040222639-PAT00009
1653(소수점 이하 잘라 버리고)과, 80.0×11.811=944.88
Figure 112006040222639-PAT00010
944(소수점 이하 잘라 버리고)인 중심점 1306을 취득함으로써, (1653, 944)를 산출하고, 각도는 오퍼랜드에 따라 360°가 된다. 외형선은 변수 "stroke"의 현재의 값인 청색이고, 선폭은 23픽셀이다. 개시점 1305에서 시작하고, 시계회전 방향으로 원호 1304을 따라가며, 개시점 1305으로 돌아가는 외형선의 좌표는 변수 path[]에 추가된다.
dlc의 제12 오피코드(PathEnd)에서는, 오퍼랜드가 1이 아니므로, 스텝 S818의 처리는 행해지지 않다. path[]에 보유되어 있는 개시점과 종료점은 1305가 가리키는 (1653, 354)이므로, 스텝 S819에서 폐패스로 판정된다. 이것은 스텝 S820에서 패스 필 정의가 끝난 처리(도 11)를 호출한다.
이 패스 필 처리에서는, 비트맵 데이터의 각 픽셀 좌표가 path[] 내부에 있는지 아닌지를 판정해, path[]내부에 있으면, "fill"로 페인팅 처리가 행해진다. 변수 "fill"의 현재의 값, 즉 (r, g, b, a)=(1.0, 0.0, 0.0, 0.5)에 따라 필링이 행해진다. 알파 값이 1.0은 아니기 때문에, 스텝 S906에서 알파 블렌드 정의가 끝난 처리(도 13)가 호출된다.
이 경우에서도 스텝 S1103에서 검증 결과 데이터베이스에서 레코드가 발견되지 않았다고 하면, S1104~S1111에서 알파 블렌딩 처리가 행해진다. 여기서, 원호 1301의 외형선과 겹치는 영역 1308에 대해서는 bmp.data[]의 값(0.0, 0.0, 1.0, 1.0)과 fill(1.0, 0.0, 0.0, 0.5) 사이에서 블렌딩 처리가 행해진다. 원호 1301의 내부와 겹치는 영역 1307에 대해서는 bmp.data[]의 값(0.9, 0.2, 0.2, 1.0)과 fill(1.0, 0.0, 0.0, 0.5) 사이에서 블렌딩이 행해진다.
그 이외의 영역 1306에 대해서는, bmp.data[]의 초기화 값(1.0, 1.0, 1.0, 1.0)과 fill(1.0, 0.0, 0.0, 0.7) 사이에서 블렌딩이 행해진다. 블렌딩 전 칼라 매칭이나 블렌딩 후 칼라 매칭의 어느 쪽이 선택되는가는 입력 프로파일(305), 프린터 프로파일(307), 및 렌더링 인텐트(308)의 내용에 의존하지만, 여기에서는 렌더링 후 칼라 매칭이 선택되었다고 한다.
블렌딩 결과로서는, 원호 1301의 외형선과 겹치는 영역 1308에서, 비트맵 데이터 bmp.data[]의 값이 (0.5, 0.0, 0.5, 1.0)이다. 또, 원호 1301의 내부와 겹치는 영역 1307에서는, 비트맵 데이터 bmp.data[]의 값이 (0.95, 0.1, 0.1, 1.0)이 다. 그 이외의 영역에서의 bmp.data[]의 값은 (1.0, 0.5, 0.5, 1.0)이다. pre_or_post[]의 값은 모두 "post"이다. 지금까지의 렌더링 결과는 도 16에 도시되어 있다. 이후, dlc의 제13~제17 오피코드에 대해서도 같은 처리가 행해진다.
제18 오피코드(PageEnd)에서는, 스텝 S807에서 프린터 출력 정의가 끝난 처리(도 14)가 호출된다.
이 시점에서, pre_or_post[]의 값이 "pre"인 픽셀, 예를 들어 원호 1301 내부에서 다른 원호 1304와 겹치지 않는 영역에서의 픽셀은, 스텝 S1205에서 프린터의 색역에 맵핑된다. 다음에, 모든 픽셀에 대해 스텝 S1206에서 프린터의 색역으로 변환이 행해진다. 이와 같이 준비된 프린터 출력용 비트맵이 스텝 S1211에서 프린터(313)의 컨트롤러(314)로 송신됨으로써, 최종적인 출력을 얻는다.
도 4는, 중간 코드 데이터(303)와, 비트맵 데이터(304, 315)를 RAM에 보유하고 있는 것을 도시한 것이지만, 파일, 데이터베이스 등의 영속 기억에 데이터를 보존하는 형태이어도 좋다. 또, 같은 PDL 문서에 대해 사용된 중간 코드 데이터를 캐쉬해 두고, 이후의 처리에 이용하는 형태도 고려할 수 있다.
또, 도 7은 중간 코드의 사양을 나타냈지만, 사용 가능한 중간 코드의 사양은 이것에 한정되는 것은 아니다. 예를 들어, 단위계는 mm에 한정되는 것이 아니며, 그외의 임의의 단위계 또는 그 조합이어도 괜찮다. 패스 기술은 베지에(Bezier_ 곡선, 타원 호, 그 외의 수학적으로 표현 가능한 임의의 패스이어도 괜찮다. 페인팅은 단색에 한정되는 것은 아니며, 브러쉬, 이미지, 그라데이션 등의 복잡한 페인팅을 행해도 괜찮다. 색은 RGB 및 RGBA에 한정되는 것은 아니며, 칼라 프로파일에 의한 지정, 디바이스 칼라에 의한 지정, 특색의 지정 등을 행해도 괜찮다. 또, 오피코드로서 1바이트 정수, 오퍼랜드로서 2바이트 부동 소수점수를 사용하는 형태는 단순한 예로서, 다른 인코딩 방법을 사용해도 상관없다. 혹은, 중간 코드를 프린터(103)로 송신하는 형태에서는, 프린터(103)가 해석 가능한 PDL를 이용해도 상관없다.
또, 도 11은 범용적 알고리즘을 사용해 비트맵 전체를 스캔하고, 각 좌표가 인수 "path"가 표현하는 패스에 포함되는지 아닌지를 판정하는 경우를 나타낸다. 인수 "path"가 표현하는 패스에 포함된 좌표를 미리 추출하고, 이들 좌표에 대해서 렌더링을 행하는 방법도 생각할 수 있다.
또, 도 13은 색차로서 CIE L*a*b* 색차(CIE 1976)를 사용했지만, 그 이외의 색차, 예를 들어 CIE ΔE94(CIE 1994)나 CIE ΔE2000(CIE 2000) 등을 사용하는 경우도 나타낸다.
이와 같이, 본 실시 예에 의하면, PDL 문서에 대하여 알파 블렌딩 렌더링이 필요한 경우에, 보다 적절히 칼라 매칭을 행할 수 있다. 또, SVG 등의 PDL 문서 중의 알파 블렌딩의 묘화 명령을 판정하고, 그 명령을 추출해서, 렌더링할 때(도 11, S906)에, PDL로 지정된 색 정보를 인쇄 장치의 색 정보와 정밀하게 칼라 매칭 할 수가 있다. 구체적으로는,
(1) 알파 블렌딩을 수반하는 렌더링을 행하기 전에 칼라 매칭을 행한다.
(2) 알파 블렌딩을 수반하는 렌더링을 행한 후에 칼라 매칭을 행한다.
중 어느 쪽이 더 정밀한가를 검증해, 정밀도가 좋은 것을 선택하도록 제어할 수 있다. 따라서, 알파 블렌딩을 수반하는 렌더링을 행할 때에, 처리하는 PDL 데이터의 색에 충실한 칼라 매칭을 실현될 수 있다. 게다가, 검증 결과 데이터베이스(312)에 저장된 레코드를 이용하는 것은, 같은 칼라 매칭과 렌더링의 조합을 몇 번이나 산출할 필요가 없기 때문에 효율적이다.
(제2 실시 예)
이하, 본 발명의 제2 실시 예에 대해 도면을 참조해 상세히 설명한다. 
본 실시 예에서 사용된 PDL은, SVG(Scalable Vector Graphics) 1.1이다. SVG 1.1의 사양은 http://www.w3.org/TR/SVG11/에서 찾을 수 있다. 유저 PC(클라이언트)에서는, SVC 문서 파일을 인터프리터에 의해 중간 코드 데이터로 변환한다. 이때, 렌더링 전 칼라 매칭을 행할지 혹은 렌더링 후 칼라 매칭을 행할지를 지정한다. 지정한 정보는 중간 코드 데이터에 삽입된다. 다음에, 렌더러가 중간 코드 데이터를 비트맵 데이터로 변환한다.
렌더러는 삽입된 정보에 따라 렌더링 전 칼라 매칭이나 렌더링 후 칼라 매칭을 선택해 실행하지만, 그라데이션 렌더링에 대해서는 항상 렌더링 전 칼라 매칭을 행한다. 렌더링 전 칼라 매칭을 행한 픽셀은 이후 항상 같은 칼라 매칭을 행한다. 마지막으로, 프린터로 비트맵 데이터를 송신하고, 프린터는 비트맵 데이터를 사용해 출력을 행함으로써, 인쇄 결과를 얻는다.
제2 실시 예의 전체 구성은, 도 1과 같다. 또, 컴퓨터 장치 및 프린터의 구성도 도 2 및 도 3과 같다.
다음에, 도 17을 참조해, 제2 실시 예에서 사용된 컴퓨터 장치 내부의 블록 구성에 대해 설명한다. 도 17은, 물리적인 구성을 취하는 클라이언트 PC(101), 프린터(102), 및 네트워크(103)로서, 주로 본 실시 예와 관련되는 논리 블록을 나타낸다. 구체적으로는, 이 도면은 프로그램 모듈, 파일 엔티티, 메모리 데이터, 및 통신 경로의 구성을 나타내는 블럭도이다.
이하, 도 17에서 도 4와 같은 구성소자들에 대한 설명은 도 17을 참조한 이하의 설명으로부터 생략한다.
인터프리터(1710)를 포함한 프로그램은, 오퍼레이팅 시스템의 기능을 이용해 외부 기억장치(204)에 보존되어 있는 SVG 문서 파일(1702)의 내용을 판독/기록하는 것이 가능하다. 인터프리터(1710)와 렌더러(1711)를 포함한 프로그램은, 같은 방식으로 오퍼레이팅 시스템의 기능을 이용해 RAM(202)에 격납된 중간 코드 데이터(1703)의 내용을 판독/기록하는 것이 가능하다. 또, 렌더러(1711)를 포함한 프로그램은, 같은 방식으로 오퍼레이팅 시스템의 기능을 이용해 RAM(202)에 격납된 비트맵 데이터(1704)의 내용을 판독/기록하는 것이 가능하다.
설정부(1709)는, 렌더링 전 칼라 매칭을 수행할지 렌더링 후 칼라 매칭을 수행할지를 설정하기 위한 것이며, 이 설정 결과는 RAM(202)에 격납된다.
SVG 문서 파일
다음에, 도 18 및 도 19를 참조해, 본 실시 예에서 사용하는 SVG 문서 파일에 대해 설명한다. 우선, 도 18은, SVG 문서 파일(1702)의 내용을 도시한 것이다.
라인 1은 XML 선언(XML Declaration)으로서, 본 SVG 문서 파일이 XML 1.0 사양에 따라 기술되어 있는 것을 나타낸다.
라인 2 및 3은 문서형 선언(Document Type Declaration)으로서, 외부 부분집합으로서 SVG 1.1의 문서형 정의(Document Type Definition;DTD)를 참조하고 있다.
라인 4 및 5는 루트 요소인 <svg> 요소의 개시 태그이다. <svg> 요소의 폭 및 높이로서 각각 21.0cm와 29.7cm(즉, A4 사이즈)를 지정하고, 유저 좌표계로서 (0,0)~(210, 297)를 지정하며, 또 SVG 명칭공간과, 준거하는 SVG의 버전을 지정한다.
라인 6은 <desc> 요소로서, 본 SVG 문서 파일을 기술한다. <desc> 요소의 내용은 SVG 문서의 렌더링에는 사용되지 않는다. 라인 7, 14, 및 17은 코멘트 요소로서, 이 코멘트 요소도 SVG 문서의 렌더링에는 사용되지 않는다.
라인 8~13는 그라데이션을 렌더링하기 위한 SVG 페인트 서버의 정의이다. 이 정의에 의해, 이후의 렌더링 요소의 "fill" 속성 또는 "stroke" 속성으로부터 "SampleGradient"이라는 명칭 하에 URI 참조 가능하게 된다. 여기에서는, 개시점에서, R(적색)=FFH, G(녹색)=0, B(청색)=0의 그라데이션을 정의하고, 종료점에서는 R(적색)=FFH, G(녹색)=FFH, B(청색)=66H의 그라데이션을 정의한다.
라인 14~15는 구형 그라데이션을 렌더링하기 위한 <rect> 요소이다. 이것은 좌상 좌표의 값에 대하여 유저 좌표계에서 (30, 30)를 지정하고, 폭과 높이의 값은 유저 좌표계에서 각각 120과 80이다. 구형 내부의 페인팅은 "SampleGradient" 그라데이션으로, 구형의 외형선의 색은 "blue"로, 외형선의 폭은 유저 좌표계에서 2로 지정한다.
라인 16~17은 불투명의 원을 렌더링하기 위한 <circle> 요소이다. 이것은 중심 좌표의 값에 대하여 유저 좌표계에서 (90, 140)를 지정하고, 반경의 값은 유저 좌표계에서 50을 지정한다. 원 내부의 필 색은 R(적색)=33H, G(녹색)=FFH, B(청색)=33H로, 불투명도(알파 값)은 0.7로, 원의 외형선의 색은 "blue"로, 외형선의 폭은 유저 좌표계에서 2로 지정한다.
라인 16은 루트 요소로서 기능하는 <svg> 요소의 종료 태그이며, 라인 4~5의 개시 태그에 대응하는 것이다.
도 19는 도 18에 나타낸 SVG 문서 파일을 렌더링한 예를 나타낸다. 참조번호 1901은 라인 14~15의 <rect> 요소에 대응하는 구형이고, 참조번호 1902는 라인 16 및 17의 <circle> 요소에 대응하는 불투명의 원이다. 참조번호 1903은 SVG 문서 전체의 외접 구형을 나타낸다. 외접 구형(1903)의 사이즈는 폭 21.0cm, 높이 29.7cm이다. 종횡의 파선, 파선의 교점에서의 원, 및 파선의 교점 부근의 좌표는, 나중의설명에 없어서는 안 될 좌표의 좌표값을 도시하기 위한 것이고, 실제의 렌더링에는 포함되지 않는다.
다음에, 도 20 및 도 21을 참조해, 본 실시 예에서 사용하는 중간 코드에 대해 설명한다. 도 20은, 본 실시 예에서 사용하는 중간 코드의 사양을 나타내는 도이다.
참조번호 2001은 렌더링 명령을 나타내는 오피코드이며, 숫자의 형태로 주어진다. 본 실시 예에서는 9종류의 오피코드를 정의하고 있다. 오피코드는 1바이트 정수로서 중간 코드 데이터(1703)에 격납된다.
참조번호 2002는 오피코드를 사람이 식별하기 쉽게 하기 위해 주어진 니모닉이다. 니모닉는 중간 코드를 덤핑하는 경우에만 사용되고, 중간 코드 데이터(1703)에는 포함되지 않는다.
참조번호 2003은 오피코드에 대한 인수를 나타내는 오퍼랜드이다. 오퍼랜드의 수와 그 의미는 오피코드에 따라서 다르다. 오퍼랜드는 2바이트 부동 소수점수로서 중간 코드 데이터(1703)에 격납된다.
본 실시 예의 중간 코드에서는, 단위계로서 mm만을 사용한다. 오퍼랜드에 좌표나 길이를 지정하는 경우에는, 모두 mm로 환산한 값을 지정한다. 좌표값을, 페이지 좌상을 원점으로 하는 절대값으로, X(횡방향)(mm)와 Y(종방향)(mm)의 세트로서 나타낸다. 오퍼랜드로 색을 지정하는 경우에는, RGB(적,녹,청) 혹은 RGBA(적,녹,청, 알파 값)을 사용하고, R(적색), G(녹색), B(청색), A(알파)의 값은 각각 0.0~1.0의 범위 내에서 지정된다. RGB로 색이 지정되었을 경우는, 알파 값을 1.0으로서 취급한다.
오피코드 0(니모닉 PageStart)은 페이지의 개시를 나타낸다. 오퍼랜드는 페이지의 폭 W(mm)와 페이지의 높이 H(mm), 및 렌더링 전 칼라 매칭을 수행할지 혹은 렌더링 후 칼라 매칭을 수행할지에 관한 플래그 F이다. 0의 F는 렌더링 전 칼라 매칭을 나타내고, 1의 F는 렌더링 후 칼라 매칭을 나타낸다.
오피코드 1(니모닉 PageEnd)은 페이지의 종료를 나타낸다. 이것에 대한 오퍼랜드는 없다. 오피코드 2(니모닉 Fill)는 단색 필 지정이다. 이 Fill로 지정된 필 은 이후의 렌더링 명령 모두에게 적용된다. 이것에 대한 오퍼랜드는 필 색에 대응하는 RGBA이다.
오피코드 3(니모닉 GradLinear)은 선형 그라데이션에 의한 필링을 지정한다. 선형 그라데이션은 그라데이션 벡터로 지정된다. 오퍼랜드는 그라데이션 벡터의 개시 좌표 X1 및 Y1와, 그라데이션 벡터의 종료 좌표 X2, Y2와, 그라데이션 개시 색R1G1B1과, 그라데이션 종료 색 R2G2B2이다. 도 19의 1901로 나타낸 그라데이션의 경우, 그라데이션 벡터는 개시 좌표(30, 30)와, 종료 좌표(150, 30)를 갖는다. 색은 그라데이션 개시 색 및 종료 색을 각각 FFH로 나눔으로써 0.0~1.0으로 정규화됨으로써, 그라데이션 개시 색(1.0, 0.0, 0.0)과, 종료 색(1.0, 1.0, 0. 4)을 얻는다. 필링은, 그라데이션 벡터의 방향과 직각 방향으로, 그라데이션 개시 색 및 종료 색을 평행 이동시킴으로써 행해진다. 또, 개시 좌표 전의 X 좌표에서 필링이 필요한 경우, 그 부분에서 그라데이션 개시 색을 사용한다. 또, 종료 좌표 후의 X 좌표에서 필링이 필요한 경우에는, 그 부분에서 그라데이션 종료 색을 사용한다. 1901의 그라데이션의 경우, 그라데이션 벡터에 관해서는, X < 30에서의 필링을 위해서 개시 색(1.0, 0.0, 1.0)이 사용되고, X > 150에서의 필링을 위해서는 종료 색(1.0, 1.0, 0.4)가 사용된다. Fill 혹은 GradLinear로 지정된 색 중, 마지막으로 지정된 색이 이후의 렌더링 명령에 적용된다.
오피코드 4(니모닉 Stroke)는 외형선을 지정한다. Stroke로 지정된 외형선은 이후의 렌더링 명령 모두에게 적용된다. 오퍼랜드는 외형선에 대응하는 RGB와, 외형선의 폭W(mm)이다. 외형선이 RGB로 지정되므로, 외형선의 색에 대하여 1.0의 알 파 값이 적용된다. 오피코드 5(니모닉 PathStart)는 패스의 개시를 나타낸다. 이것에 대한 오퍼랜드는 없다.
오피코드 6(니모닉 PathEnd)은 패스의 종료를 나타낸다. 오퍼랜드는 클로즈 플래그 F이다. 여기서 "1"이 설정된 경우에, 이것은, 패스의 종료 위치로부터 개시 위치까지 직선으로 렌더링됨으로써, 패스를 닫는 것을 의미한다. "0"이 지정되었을 경우는 아무것도 하지 않는다.
오피코드 7(니모닉 PathMoveTo)은 패스의 렌더링 위치의 이동을 나타낸다. 이것은 PathStart 명령과 PathEnd 명령 사이에서만 유효하다. PathMoveTo는 렌더링 위치를 이동시키는 것만으로, 그것의 실제의 렌더링은 수행되지 않는다. 오퍼랜드는 X(횡방향)(mm)와 Y(종 방향)(mm)의 값으로 지정한 이동 위치 좌표이다.
오피코드 8(니모닉 PathLineTo)은 현재의 패스의 위치로부터 오퍼랜드로 지정된 위치까지 직선을 렌더링하는 것을 나타낸다. 이것은 PathStart 명령과 PathEnd 명령 사이에서만 유효하다. 오퍼랜드는 X(횡방향)(mm)과, Y(종 방향)(mm)의 값으로 지정한 직선 종단 좌표이다.
오피코드 9(니모닉 PathArc)는 현재의 패스의 위치로부터 원호를 렌더링하는 것을 나타낸다. 이것은 PathStart 명령과 PathEnd 명령 사이에서만 유효하다. PathArc는 항상 시계회전 방향으로 원호를 렌더링한다. 오퍼랜드는 X-Y의 값으로 지정한 원호 중심 좌표와, 각도 D(°)으로 지정한 원호의 길이이다.
도 21은, 도 18에 나타낸 내용의 SVG 문서 파일(1702)을 인터프리터(1710)에 의해 변환하여 얻은 중간 코드 데이터(1703)의 내용을 나타낸다. 중간 코드 데이 터(1703)는 1바이트 정수의 오피코드와 2바이트 부동 소수점수의 오퍼랜드만을 격납하는 바이너리 데이터이다. 도 21은 그것을 사람이 식별하기 쉽게 하기 위해서, 이 바이너리 데이터의 덤핑에 태그를 달고, 니모닉을 제공한 것을 나타낸다.
 라인 1은 페이지 개시 명령으로서, 오퍼랜드로 페이지의 폭과 높이를 210.0mm과 297.0 mm로 지정한다. 또, 렌더링 전 칼라 매칭을 수행할지 혹은 렌더링 후 칼라 매칭을 수행할지도 지정한다. 이 경우에는 1.0, 즉 렌더링 후 칼라 매칭이 지정되어 있다. 이것은 도 18에 도시한 <svg> 요소의 개시 태그 및 도 17의 설정 1709과 같고, 길이 지정은 cm로부터 mm로 환산한다.
라인 2는 이후의 렌더링에 사용하는 선형 그라데이션에 대한 페인트 명령이고, 오퍼랜드로 그라데이션 벡터의 개시 좌표(30.0mm, 30.0mm), 종료 좌표(150.0mm, 30.0mm), 개시 색(R, G, B)=(1.0, 0.0, 0.0), 종료 색(R, G, B)=(1.0, 1.0, 0.4)을 지정한다. 이것은 도 18의 그라데이션 정의 및 <rect> 요소의 "fill" 속성으로부터의 URL 참조에 대응한다. 그라데이션 벡터의 개시 좌표와 종료 좌표를 구형의 개시 위치와 종료 위치로부터 계산하고, 색 지정을 0.0~1.0으로 정규화한다.
라인 3은 이후의 렌더링에 사용하는 외형선 명령으로서, 오퍼랜드로 외형선의 색을 청색, 즉(R, G, B)=(0.0, 0.0, 1.0)으로 지정하고, 선폭을 2.0mm로 지정한다. 이것은 도 18에 도시한 <rect> 요소 및 <circle> 요소의 stroke 속성 및 stroke-width 속성에 대응하고, 문자열 표기의 색 지정은 RGB 표기로 변환되고, 길이 지정은 유저 좌표계로부터 mm으로 환산된다.
라인 4~9는 구형의 렌더링하는 명령군이다. 라인 5의 렌더링 위치 이동 명령, 라인 6~8의 직선 렌더링 명령, 라인 9의 패스 종료 명령의 각 오퍼랜드의 지정에 의해 이하의 렌더링이 행해진다. 즉, 좌표(30.0mm, 30.0mm)_(150.0mm, 30.0mm)_(150.0mm, 110.0mm)_(30.0mm, 110.0mm)_(30.0mm, 30.0mm)를 연결시키는 폐패스가 렌더링된다. 구형 내부는 라인 2의 명령으로부터 선형 그라데이션으로 필링되고, 외형선은 라인 3의 명령으로부터 청색과 선폭 2mm로 렌더링된다. 이것은 도 18의 <rect> 요소 및 도 19의 렌더링 결과 1901에 대응하고, 좌표 지정은 유저 좌표계로부터 mm로 환산된다.
라인 10은 이후의 렌더링에 사용하는 필 명령으로서, 오퍼랜드로 (R, G, B, A)=(0.2, 1.0, 0.2, 0.7)의 필링 색을 지정한다. 이것은 도 18의 <circle> 요소의 fill 및 fill-opacity 속성에 대응한다. 색 지정은 0.0~1.0으로 정규화되어 있다.
라인 11~14는 원을 렌더링하는 명령군이다. 라인 12의 렌더링 위치 이동 명령 및 라인 13의 원호 렌더링 명령은, 좌표(90.0mm, 140.0mm)를 중심으로 해서, 360°의 각도로, 좌표(90.0mm, 90.0mm)로부터 시작하는 원을 렌더링한다. 원 내부는 라인 10의 명령으로부터 (R, G, B, A)=(0.2, 1.0, 0.2, 0.7)의 단색으로 필링되고, 외형선은 라인 3의 명령으로부터 청색과 선폭 2mm로 렌더링된다. 이것은 도 18의 <circle> 요소 및 도 19의 렌더링 결과 1902에 대응하며, 좌표 지정 및 길이 지정을 유저 좌표계로부터 mm로 환산한다.
라인 15는 페이지 종료 명령이다. 오퍼랜드는 없다. 이것은 도 18의 <svg> 요소의 종료 태그와 같다.
다음에, 도 22 및 도 23을 참조해, 렌더러(1711)의 동작의 개요에 대해 설명한다. 도 22 및 도 23은 렌더러(1711)가 중간 코드 데이터(1703)을 렌더링해 비트맵 데이터(1704)를 작성해서, 프린터(313)의 컨트롤러(314)로 송신하는 동작의 플로차트를 나타낸다.
스텝 S1801에서 동작의 플로우를 개시한다. 스텝 S802는 변수를 초기화하는 처리이다. SVG 문서 파일(1702)을 변환함으로써 얻은 중간 코드 데이터(1703)를 변수 dlc로 판독한다. "fill"은 렌더링 명령에 적용된 필링을 위해 사용된 색을 보유하는 변수로서, (r, g, b, a)는 RGBA로 표시된 색의 각 요소를 나타낸다. 초기값은 (1.0, 1.0, 1.0, 1.0), 즉 완전 불투명(알파 값 1.0)의 백색이다. "stroke"는 렌더링 명령에 적용된 외형선에 사용된 색과 선폭을 보유하는 변수로서, (r, g, b, w)는 RGB 색의 각 요소와 선폭(픽셀)을 나타낸다. 초기값은 (0.0, 0.0, 0.0, 1), 즉 1픽셀의 폭을 갖는 블랙 라인이다. "grad"는 렌더링 명령에 적용된 선형 라데이션 필링에 사용하는 그라데이션 벡터을 보유하는 변수이다. 여기서, (x1, y1)와 (x2, y2)는 각각 개시점과 종료점의 좌표(픽셀)이고, (r1, g1, b1)와 (r2, g2, b2)는 각각 그라데이션 개시점과 종료점의 색을 RGB 표기로 나타낸다. 초기값은 없다. "paint"는 단색 "fill"를 사용할지 혹은 선형 그라데이션 "grad"을 사용할지를 결정하는 변수로서, "fill" 또는 "grad"의 값을 보유한다. 초기값은 "fill"이다.
스텝 S1803은 중간 코드 데이터 dlc로부터 다음의 오피코드와 오퍼랜드를 취득하는 처리이다. 취득한 오피코드와 오퍼랜드를 각각 변수 "op"와 "operand"에 격납한다. 스텝 S1804, S1806, S1809, S1811, S1813, S1815, S1818, S1825, S1827, 및 S1829는, 오피코드 op의 종류를 판정해서, 각각의 오피코드에 대응하는 적절한 처리를 행한다.
스텝 S1804에서, 오피코드 "op"가 0(니모닉 PageStart)이면, 플로우가 스텝 S1805로 진행된다. 그 이외의 경우는, 플로우가 스텝 S1806로 진행된다.
스텝 S1805는 여러 가지의 초기화 처리를 행하는 것이다. 우선, "inputProf"는 입력 프로파일(305)의 내용을 보유하는 변수이다. "printerProf"는 프린터 프로파일(307)의 내용을 보유하는 변수이며, "intent"는 렌더링 인텐트(308)의 내용을 보유하는 변수이고, "bmp"는 비트맵 데이터(1704)를 격납하는 변수이다. 여기서 bmp의 요소 w는 비트맵 데이터의 폭(픽셀)을 나타낸다는 점에 유념한다. 오퍼랜드 "operand"의 페이지 폭 W(mm)에 출력 해상도 res를 곱셈함으로써, 페이지 폭 W(mm)를 비트맵의 단위계(픽셀)로 변환한다. bmp의 요소 h는 비트맵 데이터의 높이(픽셀)를 나타낸다. 오퍼랜드 "operand"의 페이지의 높이 H(mm)에 출력 해상도 res를 곱셈함으로써, 페이지의 높이 H(mm)를 비트맵의 단위계(픽셀)로 변환한다. bmp의 요소 res는 프린터(313)의 출력 해상도를 PPM(Pixels Per Millimeter)로 나타낸다.
bmp의 요소 "pdef"는 렌더링 전 칼라 매칭을 수행할지 혹은 렌더링 후 칼라 매칭을 수행할지를 격납한다. 오퍼랜드 "operand"의 플래그 F가 1이면, 값으로서 "post"를 보유하고, 그 이외의 경우는 값으로서 "pre"를 보유한다.
bmp의 요소 data[]는 비트맵 데이터를 격납하는 배열로서, 그 크기는 횡방향으로 w(픽셀)이고, 종방향으로 h(픽셀)이다. data[]의 각 요소(r, g, b, a)는 각 픽셀의 색을 RGBA로 나타낸다. data[]의 각 요소의 값은 현재의 "fill"의 값, 즉 완전 불투명(알파 값 1.0)의 백색으로 초기화된다. 변수 "pdef"의 값이 "pre"이며, 렌더링 전 칼라 매칭이 지정되어 있으면, CMM.gm 기능을 이용해, fill의 값을 입력 색역으로부터 프린터(313)의 색역으로, 렌더링 인텐트 "intent"에 따라 맵핑하고, 맵핑한 값을 격납한다. bmp의 요소 pre_or_post[]는 비트맵의 각 픽셀에 대해서, 렌더링 전 칼라 매칭을 수행했는지, 혹은 렌더링 후 칼라 매칭을 수행했는지를 격납하는 배열로서, 그 크기는 배열 data[]와 같다. 렌더링 전 칼라 매칭을 수행한 경우에는, 값으로서 "pre"를 보유하고, 렌더링 후 칼라 매칭을 수행한 경우에는, 값으로서 "post"를 보유한다. 초기값은 변수 pdef의 값이다. 처리가 종료하면, 플로우는 스텝 S1803로 돌아간다.
스텝 S1806에서 오피코드 op가 1(니모닉 PageEnd)이면, 스텝 S1807에서 프린터 출력의 정의가 끝난 처리를 호출하고, 스텝 S1808에서 플로우를 종료한다. 그 이외의 경우는, 플로우가 스텝 S1809로 진행된다. 이 프린터 출력의 정의가 끝난 처리에 대해서는 도 28을 참조해 후술한다.
스텝 S1809에서, 오피코드 op가 2(니모닉 Fill)이면, 플로우는 스텝 S1810로 진행된다. 그 이외의 경우는 플로우는 스텝 S1811로 진행된다.
스텝 S1810는 변수 "fill"의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 색 (R, G, B, A)을 변수 "fill"의 각 요소(r, g, b, a)에 격납한다. 또, 이후의 페인팅에 단색을 사용해 필링하도록, 변수 "paint"의 값을 "fill"로 설정한다. 이 처리가 종료하면, 플로우는 스텝 S1803로 돌아간다.
스텝 S1811에서, 오피코드 op가 3(니모닉 GradLinear)이면, 플로우는 스텝 S1812로 진행된다. 그 이외의 경우는, 플로우는 스텝 S1813으로 진행된다.
스텝 S1812는 변수 "grad"의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 그라데이션 벡터(X1, Y1, X2, Y2, R1, G1, B1, R2, G2, B2)을 변수 "grad"의 각 요소(x1, y1, x2, y2, r1, g1, b1, r2, g2, b2)에 격납한다. 또, 이후의 페인팅에 그라데이션을 사용하도록, 변수 "paint"의 값을 "grad"로 설정한다. 이 처리가 종료하면, 플로우는 스텝 S1803로 돌아간다.
스텝 S1813에서, 오피코드 op가 4(니모닉 Stroke)이면, 플로우는 스텝 S1814로 진행된다. 그 이외의 경우는, 플로우가 스텝 S1815로 진행된다.
스텝 S1814는 변수 "stroke"의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 색 (R, G, B)과 선폭 (W)을 변수 "stroke"의 각 요소(r, g, b, w)에 격납한다. 이때, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, W에 출력 해상도 bmp.res를 곱셈한다. 이 처리가 종료하면 플로우는 스텝 S1803로 돌아간다.
스텝 S1815에서, 오피코드 op가 5(니모닉 PathStart)이면, 플로우가 스텝 S1816로 진행된다. 그 이외의 경우는 플로우가 S1817로부터 스텝 S1818로 진행된다.
스텝 S1816는 패스 렌더링용의 변수 "path[]"와 "cursor"의 준비 처리이다. 이 path[]는 패스의 좌표값을 격납하는 배열이다. path[]의 각 요소(x, y)는 픽셀 단위로 패스의 좌표를 나타낸 좌표값이다. 이 cursor는 패스의 현재의 렌더링 위치를 격납하는 변수로서, 요소(x, y)는 이 경우에도 렌더링 위치를 픽셀 단위로 나타 낸 좌표값이다. 이 처리가 종료하면, 플로우는 스텝 S1803로 돌아간다.
스텝 S1818에서, 오피코드 op가 6(니모닉 PathEnd)이면, 플로우는 스텝 S1819로 진행된다. 그 이외의 경우는 플로우가 스텝 S1825로 진행된다.
스텝 S1819는 오퍼랜드 "operand"의 플래그 F가 1인지 아닌지를 판정하는 처리이다. 이것이 1이면, 플로우가 스텝 S1820로 진행되고, 그 이외의 경우는 플로우가 스텝 S1821로 진행된다.
스텝 S1820는 폐패스의 렌더링 처리이다. 변수 dlc의 현재의 read 위치에, 오피코드 8(니모닉 PathLineTo)을 삽입한다. 오퍼랜드는 현재의 패스의 개시 위치인 path[0]이지만, 비트맵의 단위계(픽셀)로부터 오퍼랜드의 단위계(mm)로 변환하기 때문에, 패스[0]를 출력 해상도 bmp.res로 나눈다. 또, 다시 패스의 종료 처리를 행하기 위해, 오피코드 6(니모닉 PathEnd)도 삽입한다. 이번은 폐패스의 렌더링 처리가 필요 없기 때문에, 오퍼랜드는 0이다. 이 처리가 종료하면, 플로우는 S1831로부터 스텝 S1803로 돌아간다.
스텝 S1821는 패스의 필링이 필요한지 어떤지를 판정하는 처리이다. 패스의 현재의 렌더링 위치를 나타내는 변수 "cursor"의 값과 패스의 개시 위치인 변수 path[0]의 값을 비교해, 이들이 동일하면, 폐패스이므로 필링이 필요하다고 판정해서, 플로우가 스텝 S1822로 진행된다. 그 이외의 경우는, 플로우가 S1831로부터 스텝 S1803로 돌아간다.
스텝 S1822는 페인팅하기 위해 단색을 사용할지 혹은 그라데이션을 사용할지를 판정하는 처리이다. 변수 paint의 값이 fill이면, 단색을 이용한 페인팅이라고 판정하고, 플로우는 스텝 S1823로 진행된다. 그 이외의 경우는, 그라데이션을 이용한 페인팅이라고 판정하고, 플로우는 스텝 S1824로 진행된다.
스텝 S1823는 단색 패스 페인팅을 위한 정의가 끝난 처리를 호출하는 처리이다. 이 패스 페인팅 정의가 끝난 처리에 대해서는 도 24를 참조해 후술한다.
스텝 S1824는 패스 그라데이션에 대하여 정의가 끝난 처리를 호출하는 처리이다. 이 패스 그라데이션의 정의가 끝난 처리에 대해서는 도 26 및 도 27을 참조해 후술한다.
스텝 S1825에서, 오피코드 op가 7(니모닉 PathMoveTo)이면, 플로우는 스텝 S1826로 진행된다. 그 이외의 경우는, 플로우가 스텝 S1827로 진행된다.
스텝 S1826는 패스의 현재의 렌더링 위치를 나타내는 변수의 갱신 처리이다. 오퍼랜드 "operand"로 지정된 좌표값(X, Y)을 변수 "cursor"의 각 요소(x, y)에 격납한다. 이때, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, Operand(X, Y)에 출력 해상도 bmp.res를 곱셈한다. 이 처리가 종료하면, 플로우는 S1831로부터 스텝 S1803로 돌아간다.
스텝 S1827에서, 오피코드 op가 8(니모닉 PathLineTo)이면, 플로우는 스텝 S1828로 진행된다. 그 이외의 경우는, 플로우는 스텝 S1829로 진행된다.
스텝 S1828는 비트맵 데이터 bmp에 직선을 렌더링하는 처리이다. 개시점은 패스의 현재의 렌더링 위치인 cursor(x, y)이다. 종료점은 오퍼랜드 "operand"로 지정된 좌표값(X, Y)이지만, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, bmp.data[operand(X, Y)]에 출력 해상도 bmp.res를 곱셈한다. 외형 선에 대해서는 변수 "stroke"의 색(RGB)과 선폭(픽셀)을 사용한다. 렌더링한 직선의 각 좌표값(픽셀)을 변수 path[]에 추가하고, 마지막으로 추가한 좌표값(직선 종료점)을 변수 "cursor"에 격납한다. 이 처리가 종료하면, 플로우는 S1831로부터 스텝 S1803로 돌아간다.
스텝 S1829에서, 오피코드 op가 8(니모닉 PathArcTo)이면, 플로우는 스텝 S1830로 진행된다. 그 이외의 경우는, 도 20에 나타낸 중간 코드 사양에 존재하지 않기 때문에, 처리를 스킵하고, 플로우는 S1831로부터 스텝 S1803로 돌아간다.
스텝 S1830는 비트맵 데이터 bmp에 원호를 렌더링하는 처리이다. 개시점은 패스의 현재의 렌더링 위치인 cursor(x, y)이다. 중심점은 오퍼랜드 "operand"로 지정된 좌표값(X, Y)이지만, 오퍼랜드의 단위계(mm)를 비트맵의 단위계(픽셀)로 변환하기 위해서, bmp.data[Operand(X, Y)]에, 출력 해상도 bmp.res를 곱셈한다. 각도는 오퍼랜드 "operand"로 지정된 각도 D(°)이다. 외형선은 변수 "stroke"의 색(RGB)과 선폭(픽셀)을 사용한다. 렌더링한 원호의 각 좌표값(픽셀)을 변수 path[]에 추가하고, 마지막으로 추가한 좌표값을 변수 "cursor"에 격납한다. 이 처리가 종료하면, 플로우는 S1831로부터 스텝 S1803로 돌아간다.
다음에, 도 24를 참조해, 패스 필링의 동작에 대해 설명한다. 도 24는, 패스를 필링하는 정의가 끝난 처리의 동작을 나타내는 플로차트이다. 본 정의가 끝난 처리는 도 23에 나타낸 플로차트의 스텝 S1823로부터 호출된다.
스텝 S1901는 패스 필 동작을 개시하고, bmp, path, 및 fill은 본 정의가 끝난 처리 호출시의 인수이다. 인수 bmp는, 도 22 및 도 23의 플로챠트에서의 스텝 S1805에서 초기화되고, 스텝 S1823, S1824, S1828, S1830에서 갱신된 변수 bmp와 같은 값을 갖는다. 인수 "path"는, 도 22 및 도 23의 플로챠트에서의 스텝 S1816에서 초기화되고, 스텝 S1828 및 스텝 S1830에서 갱신한 변수 path와 같은 값을 갖는다. 인수 "fill"은, 도 22의 스텝 S1802에서 초기화되고, 스텝 S1810에서 갱신한 변수 fill와 같은 값을 갖는다.
 스텝 S1902는 변수의 초기화 처리이다. 여기서, "coord"는 비트맵 데이터 bmp.data[]를 좌상으로부터 우하로 향해 스캔할 때의 좌표값을 보유하는 변수로서, (x, y)는 픽셀 단위의 좌표값을 나타낸다. 초기값은 (0, 0)으로서, 비트맵 데이터 bmp.data의 좌상을 나타낸다. 도 24에 나타낸 플로차트는 변수 coord를 루프 변수로 하는 루프이다.
스텝 S1903은 변수 coord를 나타내는 좌표값이 변수 "path"가 나타내는 패스 내에 있는지 어떤지를 판정하는 처리이다. 스텝 S1821에서 변수 "path"가 폐패스라고 판단되었을 경우만 스텝 S1823에서 본 처리가 호출되므로, 변수 "path"가 나타내는 패스는 여기서 항상 폐패스이며, 임의의 좌표값에 대해 패스 내에 있는지 어떤지를 판정할 수가 있다. 패스 내에서 판정되었을 경우는, 플로우가 스텝 S1904로 진행된다. 패스 내에서 판정되지 않은 경우는, 플로우가 스텝 S1907로 진행된다.
스텝 S1904는 변수 "fill"가 나타내는 색의 알파 값이 1.0(완전 불투명)인지 아닌지를 판정하는 처리이다. 알파 값이 1.0(완전 불투명)이면, 알파 블렌딩은 필요 없다고 판단해, 플로우가 스텝 S1905로 진행된다. 알파 값이 1.0 이외(즉, 투명)이면, 알파 블렌딩이 필요하다고 판단해, 플로우가 스텝 S1906로 진행된다.
스텝 S1905는 변수 "fill"의 알파 값이 1.0(완전 불투명)인 경우에 행해지는 필링 처리이다. 이 경우에, 알파 블렌딩이 필요 없기 때문에, 비트맵 데이터 bmp.data[]의 좌표 위치 coord의 색을, 변수 "fill"가 지정한 색으로 교체한다.
스텝 S1906는 변수 "fill"의 알파 값이 1.0 이외(즉, 투명)인 경우에, 행해지는 알파 블렌딩에 대하여 정의가 끝난 처리를 호출하는 처리이다. 알파 블렌드의 정의가 끝난 처리에 대한 리턴 값은, 알파 블렌딩 후의 색(RGBA)과 렌더링 전 칼라 매칭을 수행했는지 혹은 렌더링 후 칼라 매칭을 수행했는지에 관한 플래그("pre" 또는 "post")이다. 그 결과, 좌표 위치 coord에서의 비트맵 데이터 bmp.data[] 및 플래그 bmp.pre_or_post[]의 값을 각각 리턴 값으로 교체한다. 알파 블렌딩에 대하여 정의가 끝난 처리에 대해서는 도 25를 참조해 후술한다.
스텝 S1907~S1910는 루프 처리이다. 스텝 S1907는 변수 coord의 횡방향의 값coord.x를 1씩 증가시키는 처리이다. 스텝 S1908는 변수 coord의 횡방향의 값 coord.x가 비트맵 데이터의 횡방향의 크기, 즉 bmp.w와 동일해졌는지 어떤지를 판정하는 처리이다. 이들이 동일하면, 플로우는 스텝 S1909로 진행되고, 동일하지 않으면, 플로우는 스텝 S1903로 돌아간다.
스텝 S1909는, 변수 coord의 횡방향의 값 coord.x를 0으로 초기화하고, 변수 coord의 종 방향의 값 coord.y를 1씩 증가시키는 처리이다. 스텝 S1910는 변수 coord의 종 방향의 값 coord.y가 비트맵 데이터의 종 방향의 크기, 즉 bmp.y와 동일해졌는지 어떤지를 판정하는 처리이다. 이들이 동일하면, 플로우는 스텝 S1911로 진행되고, 동일하지 않으면, 플로우가 스텝 S1903로 돌아간다.
스텝 S1911는 종료이다. 본 정의가 끝난 처리의 리턴 값은 없지만, 인수 bmp로 건네준 비트맵 데이터 bmp.data[] 및 플래그 bmp.pre_or_post[]가 갱신된다.
다음에, 도 25를 참조해, 알파 블렌딩 렌더링의 동작에 대해 설명한다. 도 25는, 알파 블렌딩하는 정의가 끝난 처리를 나타내는 플로차트이다. 본 정의가 끝난 처리는 도 24에 나타낸 플로차트의 스텝 S1906로부터 호출된다.
스텝 S2001는 알파 블렌딩의 개시이다. 인수 "color1", "color2", "pre_or_post"는 본 정의가 끝난 처리 호출시의 인수이다. 인수 "color1"는, 도 22의 스텝 1805에서 초기화되고, 도 24의 스텝 S1905 및 스텝 S1906 또는 그 이외의 스텝에서 갱신한 비트맵 데이터 bmp.data[]의 임의의 좌표에 있어서의 색의 값이다. 인수 "color2"는, 도 22의 스텝 S1802에서 초기화되고, 스텝 S1810에서 갱신한 변수 "fill"의 색의 값이다. 인수 pre_or_post는, 도 24의 스텝 S1906과, 도 26의 스텝 S2110에서 갱신된 변수 bmp.pre_or_post[]의 임의의 좌표에 있어서의 플래그의 값이다.
스텝 S2002는 변수의 초기화 처리이다. "return"는 리턴 값을 보유하는 변수로서, 요소(r, g, b, a)는 RGBA로 색의 각 요소를 나타낸다. 요소 pre_or_post는 렌더링 전 칼라 매칭을 수행했는지 혹은 렌더링 후 칼라 매칭을 수행했는지를 보유하고, 값 "pre" 또는 값 "post"를 보유한다. "inputProf"는 입력 프로파일(305)의 내용을 보유하는 변수이다. "printerProf"는 프린터 프로파일(307)의 내용을 보유하는 변수이다. "intent"는 렌더링 인텐트(308)의 내용을 보유하는 변수이다.
스텝 S2003는 인수 pre_or_post의 값을 판정하는 처리이다. 인수 pre_or_post의 값이 "pre"이면, 플로우가 스텝 S2004로 진행된다. 그 이외의 경우는, 플로우가 스텝 S2005로 진행된다.
스텝 S2004는 렌더링 전 칼라 매칭을 수행하는 경우에 행해진 렌더링 처리이다. 우선, CMM(312)의 CMM.gm 기능을 이용해, 인수 color2의 값을 입력 색역으로부터 프린터(313)의 색역에, 렌더링 인텐트 "intent"에 따라 맵핑하고, 그 결과를 다시 변수 color2에 격납한다. 인수 pre_or_post의 값이 "pre"이면, 그 좌표에 있어서의 비트맵 데이터에 대해서는 이미 색역 맵핑이 행해졌으므로, 인수 color1에 대해서는 처리가 필요 없다. 다음에, color1의 값과 맵핑 후의 color2의 값을 블렌딩하고, 그 결과를 변수 return(r,g,b,a)에 격납한다. 마지막으로, 변수 return.pre_or_post에 값 "pre"를 격납한다. 블렌딩 처리는, color1의 값(r, g, b, a)과 color2의 값(r, g, b, a)으로부터, 이하의 식에 의해 계산된다.
return.r=color1.r×color1.a×(1-color2.a)+color2.r×color2.a
return.g=color1.g×color1.a×(1-color2.a)+color2.g×color2.a
return.b=color1.b×color1.a×(1-color2.a)+color2.b×color2.a
return.a=color1.a×(1-color2.a)+color2.a
스텝 S2005는 렌더링 후 칼라 매칭을 수행한 경우에 행해진 렌더링 처리이다. 변수 color1의 값과 변수 color2의 값을 블렌딩하고, 그 결과를 변수 return(r, g, b, a)에 격납하며, 변수 return.pre_or_post에 값 "post"를 격납한다. 블렌딩 처리는 스텝 S2004와 같다.
스텝 S2006는 종료이다. 변수 "return"의 값을 리턴 값으로서 돌려준다.
다음에, 도 26 및 도 27을 참조해, 패스 그라데이션 렌더링의 동작에 대해 설명한다. 도 26은, 패스의 그라데이션 처리에 대하여 정의가 끝난 처리의 동작을 나타내는 플로차트이다. 본 정의가 끝난 처리는 도 23에 나타낸 플로차트의 스텝 S1824로부터 호출된다. 
스텝 S2101는 패스 그라데이션 동작의 개시이다. 인수 "bmp", "path", "grad"는 본 정의가 끝난 처리 호출시에 사용되는 인수이다. 인수 bmp는, 도 22 및 도 23에 나타낸 플로차트의 스텝 S1805에서 초기화되고, 스텝 S1823, S1824, S1828, S1830에서 갱신된 변수 bmp와 같은 값을 갖는다. 인수 "path"는, 도 22 및 도 23에 나타낸 플로차트의 스텝 S1816에서 초기화되고, 스텝 S1828 및 스텝 S1830에서 갱신된 변수 "path"와 같은 값을 갖는다. 인수 "grad"는, 도 22에 나타낸 스텝 S1802에서 준비되고, 스텝 S1812에서 갱신된 변수 "grad"와 같은 값을 갖는다.
스텝 S2102는 변수의 초기화 처리이다. 여기서, "coord"는 비트맵 데이터 bmp.data[]를 좌상으로부터 우하로 향해 스캔할 때의 좌표값을 보유하는 변수로서, (x, y)는 픽셀 단위의 좌표값을 나타낸다. 초기값은 (0, 0)으로서, 비트맵 데이터 bmp.data의 좌상을 나타낸다. 도 26에 나타낸 플로차트는 변수 "coord"를 주로 루프 변수로 하는 루프 처리로 구성되어 있다. "inputProf"는 입력 프로파일(305)의 내용을 보유하는 변수이다. "printerProf"는 프린터 프로파일(307)의 내용을 보유하는 변수이다. "intent"는 렌더링 인텐트(308)의 내용을 보유하는 변수이다. 변수 c1, c2는, CMM.gm 기능을 이용해, 인수 color1, color2를 입력 색역(inputProf가 표현)으로부터 프린터(313)의 색역(printerProf가 표현)에, 렌더링 인텐트 "intent"에 따라 맵핑함으로써 얻은 색의 값을 격납한다.
스텝 S2103는 변수 "coord"를 나타내는 좌표값이 변수 "path"가 나타내는 패스 내에 있는지 어떤지를 판정하는 처리이다. 스텝 S1821에서 변수 "path"가 폐패스라고 판단되었을 경우만 스텝 S1824에서 본 처리가 호출되므로, 변수 "path"가 나타내는 패스는 여기서는 항상 폐패스이며, 임의의 좌표값에 대해서 패스 내에 있는지 어떤지를 판정할 수가 있다. 패스 내에서 판정되었을 경우는, 플로우가 스텝 S2104로 진행된다. 패스 내에서 판정되지 않았을 경우는, 플로우가 스텝 S2111로 진행된다.
스텝 S2104는 변수 "coord"가 나타내는 좌표값에 있어서의 그라데이션의 색의 값을 얻기 위한 준비 처리이다. 스텝 S2104에서는, 도 27에 나타낸 값 "a", "b", "c"로부터 "ratio"를 계산하고, 각각을 각각의 변수에 격납한다.
여기서, 도 27을 참조해, 값 "a", "b", "c", "ratio"에 대해 설명한다. 도 27은, 인수 "grad"가 나타내는 그라데이션 벡터의 개시 위치, 개시 색, 종료 위치, 및 종료 색과, 변수 "coord"가 나타내는 좌표 위치 및 그라데이션 색 간의 관계를 나타낸다. 참조번호 2201이 그라데이션 벡터의 개시 위치를 나타낸다. 참조번호 2202가 그라데이션 벡터의 종료 위치를 나타낸다. 참조번호 2203이 변수 "coord"의 위치를 나타낸다. 참조번호 2204는 개시 위치(2201)와 종료 위치(2202) 간의 거리이다. 이것을 로 표현한다. 참조번호 2205는 개시 위치(2201)와 변수 "coord"의 위치(2203) 간의 거리이다. 이것을
Figure 112006040222639-PAT00012
로 표현한다. 참조번호 2206은 종료 위 치(2202)와 변수 "coord"의 위치(2203) 간의 거리이다. 이것을
Figure 112006040222639-PAT00013
로 표현한다. 변수 "coord"의 위치에 있어서의 그라데이션의 색은 개시 색으로부터 2207에 나타낸 거리만큼 종료 색 방향으로 향해 나아간 위치에 있다. 여기서, 거리 2207인 (a+b-c)/2
Figure 112006040222639-PAT00014
를 거리 2204로 나눈 값은, ratio=(a+b-c)/2a이다. 이때, 2208로 나타낸 바와 같이, ratio가 0미만이면, 변수 coord의 위치 2203은 개시 위치 2201 전에, 즉 도면에서는 좌측에 위치한다. 2209로 나타낸 바와 같이 ratio가 0~1의 범위에 있으면, 변수 coord의 위치 2203은 개시 위치 2201와 종료 위치 2203과의 사이에 위치한다. 2210으로 나타낸 바와 같이, raito가 1보다 크면, 변수 coord의 위치 2203은 종료 위치 2202 후에, 즉 도면에서는 우측에 위치한다.
스텝 S2105는 변수 ratio가 0미만인지 어떤지에 관한 판정 처리이다. 0미만이면, 플로우가 스텝 S2106로 진행된다. 그 이외는, 플로우가 스텝 S2107로 진행된다.
스텝 S2106는 변수 "coord"가 나타내는 위치가 변수 "grad"가 나타내는 그라데이션 벡터 전의 위치에 있는 경우에, 변수 "coord"의 위치에 있어서의 그라데이션의 색의 값 "color"에 대한 그라데이션 벡터의 개시 색 c1를 설정하는 처리이다.
스텝 S2107는, 변수 ratio가 1보다 큰지 아닌지에 관한 판정 처리이다. 1보다 크면, 플로우가 스텝 S2108로 진행된다. 그 이외는, 플로우가 스텝 S2109로 진행된다.
스텝 S2108는 변수 "coord"가 나타내는 위치가 변수 "grad"가 나타내는 그라 데이션 벡터 뒤의 위치에 있는 경우에, 변수 "coord"의 위치에 있어서의 그라데이션의 색의 값 "color"에 대한 그라데이션 벡터의 종료색 c2를 설정하는 처리이다.
스텝 S2109는 변수 "coord"가 나타내는 위치가 변수 "grad"가 나타내는 그라데이션 벡터 내의 위치에 있는 경우에, 변수 "coord"의 위치에 있어서의 그라데이션의 색의 값 "color"를 계산하는 처리이다. 본 스텝에서, 변수 "ratio"는 0~1 사이의 값을 취하고, 이것은 그라데이션 벡터의 개시 색 c1로부터 종료 색 c2까지의 거리를 1로 했을 경우의, c1로부터 color까지의 거리를 나타낸다. 따라서, "color"는 이하의 식에 의해 계산된다.
color=(c2-c1)× ratio + c1
스텝 S2110는 인수 bmp의 갱신 처리이다. 비트맵 데이터 bmp.data[] 및 플래그 bmp.pre_or_post[]의 좌표 위치 coord의 값을 각각 변수 "color"의 값과 "pre"로 교체한다.
스텝 S2111~S2114는 루프 처리이다. 스텝 S2111는 변수 coord의 횡방향의 값 coord.x를 1씩 증가시키는 처리이다. 스텝 S2112는 변수 coord의 횡방향의 값 coord.x가 비트맵 데이터의 횡방향의 크기, 즉 bmp.w와 동일해졌는지 어떤지를 판정하는 처리이다. 이들이 동일하면, 플로우가 스텝 S2113로 진행되고, 동일하지 않으면, 플로우가 스텝 S2103로 돌아간다.
스텝 S2113는, 변수 coord의 횡방향의 값 coord. x를 0으로 초기화하고, 변수 coord의 종 방향의 값 coord.y를 1씩 증가시키는 처리이다. 스텝 S2114는 변수 coord의 종 방향의 값 coord.y가 비트맵 데이터의 종 방향의 크기 bmp.h와 동일해 졌는지 어떤지를 판정하는 처리이다. 이들이 동일하면, 플로우가 스텝 S2115로 진행되고, 동일하지 않으면, 플로우가 스텝 S2103로 돌아간다.
스텝 S2115는 플로우를 종료한다. 본 정의가 끝난 처리의 리턴 값은 없지만, 비트맵 데이터 bmp.data[] 및 플래그 bmp.pre_or_post[]가 갱신된다.
다음에, 도 28을 참조해, 프린터 출력의 동작에 대해 설명한다. 도 28은, 프린터 출력에 관해 정의가 끝난 처리의 동작을 나타내는 플로차트이다. 본 정의가 끝난 처리는, 도 22에 나타낸 플로차트의 스텝 S1807로부터 호출된다.
스텝 S2301는, 본 정의가 끝난 처리를 개시한다. 인수 bmp는 도 22 및 도 23에 나타낸 플로챠트의 스텝 S1805에서 초기화되고, 스텝 S1823, S1824, S1828, S1830에서 렌더링된 변수 bmp와 같은 값을 갖는다.
스텝 S2302는 변수의 초기화 처리이다. 여기서, "coord"는 비트맵 데이터 bmp.data를 좌상으로부터 우하로 향해 스캔할 때의 좌표값을 보유하는 변수로서, (x, y)는 픽셀 단위의 좌표값을 나타낸다. 도 28에 나타낸 플로차트는 주로 변수 "coord"를 루프 변수로 하는 루프 처리로 구성된다. "inputProf"는 입력 프로파일(305)의 내용을 보유하는 변수이다. "printerProf"는 프린터 프로파일(307)의 내용을 보유하는 변수이다. "intent"는 렌더링 인텐트(308)의 내용을 보유하는 변수이다. outputbmp[]는 프린터 출력용의 비트맵 데이터를 보유하는 배열로서, 그 크기는 bmp.data[]와 같다.
스텝 S2303는 변수 "coord"가 가리키는 좌표값의 비트맵 데이터와 "pre" 또는 "post"의 값을 bmp.data[]와 bmp.pre_or_post[]로부터 취득하는 처리이다. 취득 한 값을 각각 변수 "data"와 "pre_or_post"에 격납한다.
스텝 S2304는 변수 pre_or_post가 값 "pre"을 갖는지 아닌지를 판정하는 처리이다. 이 판정이 참이면, 픽셀의 색의 값은 이미 프린터(313)의 색역에 맵핑되어 있다. 그 경우는, 플로우가 스텝 S2306로 진행된다. 그 이외의 경우는 플로우가 스텝 S2305로 진행된다.
스텝 S2305는 CMM(312)의 CMM.gm 기능을 이용해, 픽셀 데이터를 입력 색역으로부터 프린터(313)의 색역에 렌더링 인텐트 "intent"에 따라 맵핑하는 처리이다. 그 결과는 변수 "data"에 중복 기록된다.
스텝 S2306에서는, 변수 "data"의 색의 값은 이미 프린터(313)의 색역에 맵핑되어 있으므로, CMM(312)의 CMM.cc 기능을 이용해, 입력 색역으로부터 프린터(313)의 색역으로 변환한다. 그 결과는 프린터 출력용 비트맵 데이터 outputbmp[]에서 변수 "coord"가 가리키는 좌표 위치에 격납된다.
스텝 S2307~S2310는 루프 처리이다. 스텝 S2307는 변수 coord의 횡방향의 값 coord.x를 1씩 증가시키는 처리이다. 스텝 S2308는 변수 coord의 횡방향의 값 coord.x가 비트맵 데이터의 횡방향의 크기, 즉 bmp.w와 동일해졌는지 어떤지를 판정하는 처리이다. 이들이 동일하면, 플로우가 스텝 S2309로 진행되고, 동일하지 않으면, 플로우가 스텝 S2303로 돌아간다.
스텝 S2309는 변수 coord의 종 방향의 값 coord.y를 1씩 증가시키는 처리이다. 스텝 S2310는 변수 coord의 종 방향의 값 coord.y가 비트맵 데이터의 종 방향의 크기, 즉 bmp.h와 동일해졌는지 어떤지를 판정하는 처리이다. 이들이 동일하면, 플로우가 스텝 S2311로 진행되고, 동일하지 않으면, 플로우가 스텝 S2303로 돌아간다.
스텝 S2311는 다 작성한 프린터 출력용 비트맵 데이터 outputbmp[]를 프린터(313)의 컨트롤러(314)로 송신하는 처리이다. 프린터(313)는 수신한 비트맵 데이터를 RAM(209)에 비트맵 데이터(315)로서 격납하고, 프린터 엔진(212)을 비트맵 데이터(315)에 따라 제어해 출력을 실행한다.
스텝 S2312는 종료이다. 리턴 값은 없다. 종래부터 알려진 프로파일을 이용한 칼라 매칭은, 칼라 매칭 후의 색을 얻기 위해서 보간 처리를 행해야 한다. 이 보간 처리는, 계산 오차를 일으킨다. 칼라 매칭 전에 그라데이션을 행하는 구성에서는, 2201과 2202 간의 화소 단위로 색을 얻고, 각 색에 대해서 칼라 매칭을 행한다. 칼라 매칭 전에 그라데이션(패스 그라데이션) 렌더링을 수행하면, 2201과 2202 간의 픽셀 단위로 렌더링된 각 색이 오차를 갖고, 이 오차를 갖는 픽셀 단위의 각 색에 대해 칼라 매칭이 행해진다. 따라서, 스무스한 그라데이션을 얻을 수 없을 가능성이 있다.
그에 대한 본 실시 예에서는, 렌더링 전/렌더링 후 칼라 매칭 설정(1709)에 관계없이, PDL의 묘화 명령 중, 그라데이션(패스 그라데이션) 렌더링이, 렌더링 전에 칼라 매칭을 행하도록 수행된다. 이 구성에 의해, 그라데이션의 개시 위치(2201)와 종료 위치(2202) 간의 칼라 매칭 후의 색을 얻고, 이 2201과 2202 사이의 각 화소의 색을 도 27의 ratio에 따라 산출할 수 있다. 따라서, 스무스하게 색이 변화하는 그라데이션이 실현될 수 있다.
이상 본 실시 예에서는, 라 매칭을 렌더링 전에 수행하는지 혹은 렌더링 후에 수행하는지에 의존해 문제가 생기는 특정 형태의 렌더링이 지정되어 있는 경우에도, 적절히 칼라 매칭을 수행할 수 있다는 점에서 효과적이다.
(그 외의 실시 예)
상기 제1, 제2 실시 예에서는 중간 코드 데이터를 클라이언트 PC(101)에서 렌더링했지만, 클라이언트(101)로부터 프린터(103)로 중간 코드 데이터를 송신해서, 프린터(103)에서 렌더링을 수행해도 괜찮다.
또, 상기 제1, 제2 실시 예에서는 입력 프로파일이 표현하는 입력 색역(색 공간)에서 렌더링을 수행하는 것처럼 기술했지만, 렌더링 프로파일(306)이 표현하는 렌더링 색역(색 공간)에서 렌더링을 수행해도 괜찮다. 또, 프린터 프로파일(307)이 표현하는 프린터 색역(색 공간)에서 렌더링을 수행해도 괜찮다.
또, 상기 제1, 제2 실시 예에서는 PDL로서 SVG 1.1을 사용한 것으로 설명했지만, 본 발명은 이것에 한정하는 것은 아니고, SVG의 그 외의 버전, 혹은 중간 코드로 변환 가능한 것이면 임의의 PDL를 사용하는 것도 가능하다.
또, 상기 제1, 제2 실시 예에서는 1페이지를 표시/인쇄하는 예에 관해서 설명했지만, PDL가 복수 페이지에 대응하는 것이면, 중간 코드, 뷰어 프로그램, 및 컨트롤러를 거기에 대응시켜도 괜찮다.
또, 상기 제1, 제2 실시 예에서는 SVG 문서에 대해 하나의 입력 프로파일과 렌더링 인텐트를 사용했다. 그렇지만, SVG 문서 내에 존재하는 이미지, 그래픽스, 텍스트 오브젝트 등의 오브젝트의 종류마다 입력 프로파일과 렌더링 인텐트를 지정 할 수 있도록 구성해도 괜찮다. 게다가, 개개의 오브젝트마다 입력 프로파일과 렌더링 인텐트를 지정할 수 있는 시스템도 고려할 수 있다.
또, 상기 제1, 제2 실시 예에서는 선형 그라데이션만을 예로서 설명했지만, 본 발명은, 방사형 그라데이션 등의 임의의 종류의 그라데이션에 대응 가능하다. 또, 그라데이션 벡터 전후에 대해서는 각각 개시 색과 종료 색으로 페인팅하는 것처럼 기술했지만, 그 이외에 그라데이션 벡터를 반복하고, 그라데인션 벡터를 미러링(mirroring)하는 등의 기술이 있다.
또, 도 1은 클라이언트 PC와 프린터가 네트워크에 의해 접속되어 있을 것을 도시했지만, 이외의 접속 형태여도 괜찮다. 예를 들어, PC와 프린터가 직접 접속되거나 혹은 메모리 카드나 CD 등의 미디어를 통해서 데이터를 주고 받는 형태여도 괜찮다.
또, 도 2는 프로그램이 RAM(202)에 격납되어 있는 것을 도시했지만, 본 발명은 이것에 한정하는 것은 아니고, 프로그램을 외부 기억장치(204)로부터 판독해서 실행하거나, 네트워크 인터페이스(203)를 통해서 수신하여 실행하는 형태여도 괜찮다. 또, 도 2에는 도시하지 않았지만, ROM 등의 판독 전용의 내부 기억부로부터 프로그램을 판독해서 실행해도 괜찮다. 또, 키보드(206)나 포인팅 디바이스(207) 대신에 혹은 그것들에다가, 음성 입력 등의 다른 입력장치를 구비할 수도 있다. 또, 디스플레이(205), 키보드(206), 포인팅 디바이스(207)을 다른 컴퓨터 장치와 공유하는 경우도 생각할 수 있다.
또, 도 17은 중간 코드 데이터(1703)와, 비트맵 데이터(1704, 315)가 RAM에 보유되어 있는 것을 도시했지만, 파일, 데이터베이스 등의 영속 기억에 데이터를 보존하는 형태여도 괜찮다. 또, 같은 PDL 문서에 대해 사용된 중간 코드 데이터를 캐쉬해 두고, 이후의 처리에 이용하는 형태도 생각할 수 있다.
또, 도 20은 중간 코드의 사양을 나타냈지만, 사용 가능한 중간 코드의 사양은 이것에 한정되는 것은 아니다. 예를 들어, 단위계는 mm에 한정되는 것이 아니며, 그 외의 임의의 단위계 또는 그 조합이어도 괜찮다. 패스 기술은 베지에 곡선, 타원 호, 그 외의 수학적으로 표현 가능한 임의의 패스여도 괜찮다. 페인팅은 단색과 선형 그라데이션에 한정되는 것은 아니며, 브러쉬, 이미지, 방사형 그라데이션 등의 복잡한 페인팅을 수행해도 괜찮다. 색은 RGB와 RGBA에 한정되는 것은 아니며, 칼라 프로파일에 의한 지정, 디바이스 칼라에 의한 지정, 특색의 지정 등도 수행해도 괜찮다. 또, 오피코드로서 1바이트 정수, 오퍼랜드로서 2바이트 부동 소수점수를 사용하는 것도 단순한 일례이며, 다른 인코딩 방법을 사용해도 상관없다. 혹은, 중간 코드를 프린터(103)로 송신하는 형태에 있어서는, 프린터(103)가 해석 가능한 PDL를 이용해도 상관없다.
또, 도 24 및 도 26은 범용 알고리즘을 사용해 비트맵 전체를 스캔하고, 각 좌표가 인수 "path"가 표현하는 패스에 포함될지 어떨지를 판정하는 경우를 나타낸다. 그렇지만 이외에, 인수 "path"가 표현하는 패스에 포함된 좌표를 미리 추출하고, 이들 좌표에 대해서 렌더링을 수행해도 괜찮다. 또, 그라데이션에 대해서는 그라데이션 벡터의 색의 값을 미리 계산하고, 그것을 패스 내에 반복해서 적용하는 등, 보다 효율이 좋은 기술을 이용해도 좋다.
상기에서 기술한 실시 예는 프린터 등의 촬상 장치에 관한 것이지만, 본 발명은, 모니터와 다른 표시 수단에도 적용가능하다.
현재, 상기에서 기술한 실시 예의 기능을 실현하는 소프트웨어의 프로그램을, 시스템 혹은 장치에 직접 혹은 원격으로부터 공급하고, 그 시스템 혹은 장치의 컴퓨터가 거기에 공급된 프로그램 코드를 판독해 실행하는 형태여도 괜찮다. 그 경우, 프로그램의 기능을 갖고 있는 한, 그 프로그램 코드는 프로그램 형태일 필요가 없다.
따라서, 본 발명에 따른 기능 처리를 실현하기 위해서, 컴퓨터에 인스톨되는 프로그램 코드 자체 및 그 프로그램을 격납하는 기록매체도 상기 실시 예를 구성하게 된다. 즉, 상기 실시 예는, 상기 실시 예를 실현하기 위한 컴퓨터 프로그램 자체, 및 그 프로그램을 격납하는 기록 매체도 포함한다.
그 경우, 프로그램의 기능을 소유하고 있는 한, 오브젝트 코드, 인터프리터에 의해 실행되는 프로그램, 오퍼레이팅 시스템에 공급하는 스크립트 데이터 등, 프로그램의 형태를 묻지 않는다.
프로그램을 공급하기 위한 기억 매체는, 예를 들면, 플렉시블 디스크, 하드 디스크, 광디스크, 및 광학 자기 디스크에 한정되는 것은 아니다. 몇몇 예로서, MO, CD-ROM, CD-R, CD-RW, 자기 테이프, 불휘발성의 메모리 카드, ROM, 및 DVD(DVD-ROM, DVD-R)이 있다.
그 외의 프로그램의 공급 방법은, 우선 인터넷상의 홈 페이지에 접속하기 위해 웹 브라우저를 이용하고, 그 홈 페이지로부터 컴퓨터 프로그램 그 자체, 혹은 압축되어 자동 인스톨 기능을 갖는 파일을 하드 디스크 등의 기억 매체에 다운로드하는 클라이언트 컴퓨터를 포함한다. 또, 상기 실시 예의 프로그램을 구성하는 프로그램 코드를 복수의 파일로 분할하고, 각각의 파일을 인터넷상의 각종 홈 페이지로부터 다운로드하여 그것의 기능을 실현해도 된다. 즉, 상기 실시 예의 기능을 컴퓨터로 실현하기 위한 프로그램 파일을 복수의 유저가 다운로드하게 하는 Web 서버도, 상기 실시 예에 포함되는 것이다.
또, 상기 실시 예의 처리를 실현하기 위한 프로그램을 암호화해 CD-ROM 등의 기억 매체에 격납해 유저에게 배포하고, 소정의 조건을 만족한 유저만, 인터넷상의 홈 페이지로부터 프로그램을 해독하는 키 정보를 다운로드하는 형태여도 좋다. 그 키 정보를 사용해, 암호화된 프로그램을 실행해 컴퓨터에 인스톨시켜 실현하는 것도 가능하다.
또, 판독한 프로그램을 실행하는 컴퓨터에 의해, 전술한 실시 예의 기능이 실현되는 형태여도 좋다. 또, 그 프로그램의 지시에 근거해, 컴퓨터상에서 가동하고 있는 오퍼레이팅 시스템 등이, 실제의 처리의 일부 또는 전부를 수행하여, 전술한 실시 예의 기능을 실현하는 형태여도 좋다.
본 발명은 예시한 실시 예를 참조하여 설명되었지만, 본 발명은 이 개시된 실시 예에 한정되는 것은 아니다. 이하의 청구항들의 범위는 모든 변형, 균등 구조 및 기능을 포함하도록 가장 넓게 해석되어야 할 것이다.
본 발명에 의하면, 칼라 매칭을 렌더링 전에 수행할지 혹은 렌더링 후에 수행할지를 적절히 제어함으로써, 색 재현성을 향상시킬 수 있다.

Claims (23)

  1. 기술 언어 문서를 렌더링하는 렌더링 수단과,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 수단과,
    상기 기술 언어 문서에 대하여 알파 블렌드 렌더링이 필요한 경우, 상기 칼라 매칭 수단에 의한 상기 변환을, 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 판단하고, 상기 판단 결과에 근거해 어느 쪽이든 선택하는 선택 수단을 구비하는 것을 특징으로 하는 촬상 장치.
  2. 제 1 항에 있어서,
    상기 칼라 매칭 수단에 의한 상기 변환을 상기 렌더링 전에 수행한 경우와 상기 렌더링 후에 수행한 경우의 결과를 검증해, 상기 선택 수단에 의한 선택을 하는 것을 특징으로 하는 촬상 장치.
  3. 제 1 항에 있어서,
    상기 선택 수단에 의한 선택에 사용된 조건과 그것의 선택 결과를 보유하는 보유 수단을 더 구비하고, 상기 조건과 같은 조건 하에 알파 렌더링을 수행할 때, 상기 보유 수단에 보유한 정보를 이용하는 것을 특징으로 하는 촬상 장치.
  4. 제 1 항에 있어서,
    상기 선택 수단은,
    상기 칼라 매칭 수단에 의한 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 설정하는 설정수단과,
    상기 렌더링 수단에서 특정의 렌더링 명령을 렌더링하는 경우에, 상기 칼라 매칭 수단에 의한 상기 변환을 상기 설정 수단의 설정에 관계없이 상기 렌더링 전에 수행하도록 제어하는 제어수단을 구비하는 것을 특징으로 하는 촬상 장치.
  5. 제 4 항에 있어서,
    상기 특정의 렌더링 명령은 그라데이션 명령인 것을 특징으로 하는 촬상 장치.
  6. 기술 언어 문서를 렌더링하는 렌더링 스텝과,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝과,
    상기 기술 언어 문서에 대하여 알파 블렌드 렌더링이 필요한 경우, 상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 판단하고, 상기 판단 결과에 근거해 어느 쪽이든 선택하는 선택 스텝을 포함하는 것을 특징으로 하는 촬상 제어 방법.
  7. 제 6 항에 있어서,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행한 경우와 상기 렌더링 후에 수행한 경우의 결과를 검증해, 상기 선택 스텝에서의 선택을 하는 것을 특징으로 하는 촬상 제어 방법.
  8. 제 6 항에 있어서,
    상기 선택 스텝에서의 선택에 사용된 조건과 그것의 선택 결과를 보유하는 보유 스텝을 더 포함하고, 상기 조건과 같은 조건 하에 알파 렌더링을 수행할 때, 상기 보유 스텝에서 보유한 정보를 이용하는 것을 특징으로 하는 촬상 제어 방법.
  9. 제 6 항에 있어서,
    상기 선택 스텝은,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 설정하는 설정스텝과,
    상기 렌더링 스텝에서 특정의 렌더링 명령을 렌더링하는 경우에, 상기 칼라 매칭 스텝에서의 상기 변환을 상기 설정 스텝의 설정에 관계없이 상기 렌더링 전에 수행하도록 제어하는 제어스텝을 포함하는 것을 특징으로 하는 촬상 제어 방법.
  10. 제 9 항에 있어서,
    상기 특정의 렌더링 명령은 그라데이션 명령인 것을 특징으로 하는 촬상 제어 방법.
  11. 기술 언어 문서를 렌더링하는 렌더링 스텝과,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝과,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 제어하는 제어 스텝을 포함하는 것을 특징으로 하는 촬상 제어 방법.
  12. 컴퓨터에 의해 처리되는 프로그램을 기억하는 컴퓨터 판독가능한 기억매체로서, 상기 프로그램이,
    기술 언어 문서를 렌더링하는 렌더링 스텝용 코드와,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝용 코드와,
    상기 기술 언어 문서에 대하여 알파 블렌드 렌더링이 필요한 경우, 상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 판단하고, 상기 판단 결과에 근거해 어느 쪽이든 선택하는 선택 스텝용 코드를 포함하는 것을 특징으로 하는 기억매체.
  13. 제 12 항에 있어서,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행한 경우와 상기 렌더링 후에 수행한 경우의 결과를 검증해, 상기 선택 스텝에서의 선택을 행하는 것을 특징으로 하는 기억매체.
  14. 제 12 항에 있어서,
    상기 선택 스텝에서의 선택에 사용된 조건과 그것의 선택 결과를 보유하는 보유 스텝용 코드를 더 포함하고, 상기 조건과 같은 조건 하에 알파 렌더링을 수행 할 때, 상기 보유 스텝에서 보유한 정보를 이용하는 것을 특징으로 하는 기억매체.
  15. 제 12 항에 있어서,
    상기 선택 스텝용 코드는,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 설정하는 설정스텝용 코드와,
    상기 렌더링 스텝에서 특정의 렌더링 명령을 렌더링하는 경우에, 상기 칼라 매칭 스텝에서의 상기 변환을, 상기 설정 스텝에서의 설정에 관계없이 상기 렌더링 전에 수행하도록 제어하는 제어스텝용 코드를 포함하는 것을 특징으로 하는 기억매체.
  16. 제 15 항에 있어서,
    상기 특정의 렌더링 명령은 그라데이션 명령인 것을 특징으로 하는 기억매체.
  17. 컴퓨터에 의해 처리되는 프로그램을 기억하는 컴퓨터 판독가능한 기억매체로서, 상기 프로그램이,
    기술 언어 문서를 렌더링하는 렌더링 스텝용 코드와,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝용 코드와,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 제어하는 제어 스텝용 코드를 포함하는 것을 특징으로 하는 기억매체.
  18. 기술 언어 문서를 렌더링하는 렌더링 수단과,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 수단과,
    상기 칼라 매칭 수단에 의한 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 설정하는 설정 수단과,
    상기 렌더링 수단에서 특정의 렌더링 명령을 렌더링하는 경우, 상기 설정 수단의 설정에 관계없이 상기 칼라 매칭 수단에 의한 상기 변환을 상기 렌더링 전에 수행하도록 제어하는 제어 수단을 구비하는 것을 특징으로 하는 촬상 장치.
  19. 제 18 항에 있어서,
    상기 특정의 렌더링 명령은, 그라데이션 명령인 것을 특징으로 하는 촬상 장 치.
  20. 기술 언어 문서를 렌더링하는 렌더링 스텝과,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝과,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 설정하는 설정 스텝과,
    상기 렌더링 스텝에서 특정의 렌더링 명령을 렌더링하는 경우, 상기 설정 스텝에서의 설정에 관계없이 상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행하도록 제어하는 제어 스텝을 포함하는 것을 특징으로 하는 촬상 제어 방법.
  21. 제 20 항에 있어서,
    상기 특정의 렌더링 명령은, 그라데이션 명령인 것을 특징으로 하는 촬상 제어 방법.
  22. 컴퓨터에 의해 처리되는 프로그램을 기억하는 컴퓨터 판독가능한 기억매체로 서, 상기 프로그램이,
    상기 기술 언어 문서를 렌더링하는 렌더링 스텝용 코드와,
    상기 기술 언어 문서에서 지정된 색 정보를, 상기 기술 언어 문서를 촬상하는 촬상 디바이스용의 색 정보로 변환하는 칼라 매칭 스텝용 코드와,
    상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행할지 혹은 상기 렌더링 후에 수행할지를 설정하는 설정 스텝용 코드와,
    상기 렌더링 스텝에서 특정의 렌더링 명령을 렌더링하는 경우, 상기 설정 스텝에서의 설정에 관계없이 상기 칼라 매칭 스텝에서의 상기 변환을 상기 렌더링 전에 수행하도록 제어하는 제어 스텝용 코드를 포함하는 것을 특징으로 하는 기억매체.
  23. 제 22 항에 있어서,
    상기 특정의 렌더링 명령은, 그라데이션 명령인 것을 특징으로 하는 기억매체.
KR1020060051364A 2005-06-08 2006-06-08 촬상 장치, 제어 방법, 및 기억매체 KR100844972B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00168569 2005-06-08
JP2005168570A JP2006341457A (ja) 2005-06-08 2005-06-08 印刷装置
JP2005168569A JP4480160B2 (ja) 2005-06-08 2005-06-08 印刷装置、印刷装置の制御方法、印刷装置の制御プログラム、記憶媒体、並びに、Webサーバ
JPJP-P-2005-00168570 2005-06-08

Publications (2)

Publication Number Publication Date
KR20060128695A true KR20060128695A (ko) 2006-12-14
KR100844972B1 KR100844972B1 (ko) 2008-07-09

Family

ID=36677239

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060051364A KR100844972B1 (ko) 2005-06-08 2006-06-08 촬상 장치, 제어 방법, 및 기억매체

Country Status (3)

Country Link
US (1) US8355164B2 (ko)
EP (1) EP1732308A2 (ko)
KR (1) KR100844972B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011105877A2 (ko) 2010-02-26 2011-09-01 (주)Lg화학 점착제 조성물

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882626B2 (ja) * 2006-09-15 2012-02-22 富士ゼロックス株式会社 画像処理装置、画像形成装置及びプログラム
JP2008228168A (ja) * 2007-03-15 2008-09-25 Fuji Xerox Co Ltd 画像処理装置およびプログラム
JP2008306512A (ja) * 2007-06-08 2008-12-18 Nec Corp 情報提供システム
JP5209051B2 (ja) * 2007-06-28 2013-06-12 テレフオンアクチーボラゲット エル エム エリクソン(パブル) データシステム及び方法
US7990574B2 (en) 2007-07-20 2011-08-02 Eastman Kodak Company Method and system for converting a document
US8314951B2 (en) * 2008-09-26 2012-11-20 Kyocera Document Solutions Inc. Image processing apparatus, and computer-readable recording medium
US9756264B2 (en) 2009-03-02 2017-09-05 Flir Systems, Inc. Anomalous pixel detection
US9517679B2 (en) 2009-03-02 2016-12-13 Flir Systems, Inc. Systems and methods for monitoring vehicle occupants
US10244190B2 (en) 2009-03-02 2019-03-26 Flir Systems, Inc. Compact multi-spectrum imaging with fusion
US9235876B2 (en) 2009-03-02 2016-01-12 Flir Systems, Inc. Row and column noise reduction in thermal images
US9635285B2 (en) 2009-03-02 2017-04-25 Flir Systems, Inc. Infrared imaging enhancement with fusion
WO2012170946A2 (en) 2011-06-10 2012-12-13 Flir Systems, Inc. Low power and small form factor infrared imaging
US9998697B2 (en) 2009-03-02 2018-06-12 Flir Systems, Inc. Systems and methods for monitoring vehicle occupants
US9948872B2 (en) 2009-03-02 2018-04-17 Flir Systems, Inc. Monitor and control systems and methods for occupant safety and energy efficiency of structures
US10757308B2 (en) 2009-03-02 2020-08-25 Flir Systems, Inc. Techniques for device attachment with dual band imaging sensor
USD765081S1 (en) 2012-05-25 2016-08-30 Flir Systems, Inc. Mobile communications device attachment with camera
US9674458B2 (en) 2009-06-03 2017-06-06 Flir Systems, Inc. Smart surveillance camera systems and methods
US9986175B2 (en) 2009-03-02 2018-05-29 Flir Systems, Inc. Device attachment with infrared imaging sensor
US9473681B2 (en) 2011-06-10 2016-10-18 Flir Systems, Inc. Infrared camera system housing with metalized surface
US9451183B2 (en) 2009-03-02 2016-09-20 Flir Systems, Inc. Time spaced infrared image enhancement
US9843742B2 (en) 2009-03-02 2017-12-12 Flir Systems, Inc. Thermal image frame capture using de-aligned sensor array
US9208542B2 (en) 2009-03-02 2015-12-08 Flir Systems, Inc. Pixel-wise noise reduction in thermal images
JP5267255B2 (ja) * 2009-03-18 2013-08-21 株式会社リコー 画像処理装置、画像処理方法及びプログラム
US9819880B2 (en) 2009-06-03 2017-11-14 Flir Systems, Inc. Systems and methods of suppressing sky regions in images
US9756262B2 (en) 2009-06-03 2017-09-05 Flir Systems, Inc. Systems and methods for monitoring power systems
US9292909B2 (en) 2009-06-03 2016-03-22 Flir Systems, Inc. Selective image correction for infrared imaging devices
US9716843B2 (en) 2009-06-03 2017-07-25 Flir Systems, Inc. Measurement device for electrical installations and related methods
US9843743B2 (en) 2009-06-03 2017-12-12 Flir Systems, Inc. Infant monitoring systems and methods using thermal imaging
US10091439B2 (en) 2009-06-03 2018-10-02 Flir Systems, Inc. Imager with array of multiple infrared imaging modules
US9152139B2 (en) * 2009-06-16 2015-10-06 Control4 Corporation Automation Control of Electronic Devices
US9848134B2 (en) 2010-04-23 2017-12-19 Flir Systems, Inc. Infrared imager with integrated metal layers
US9207708B2 (en) 2010-04-23 2015-12-08 Flir Systems, Inc. Abnormal clock rate detection in imaging sensor arrays
US9706138B2 (en) 2010-04-23 2017-07-11 Flir Systems, Inc. Hybrid infrared sensor array having heterogeneous infrared sensors
US10389953B2 (en) 2011-06-10 2019-08-20 Flir Systems, Inc. Infrared imaging device having a shutter
US9706137B2 (en) 2011-06-10 2017-07-11 Flir Systems, Inc. Electrical cabinet infrared monitor
US9058653B1 (en) 2011-06-10 2015-06-16 Flir Systems, Inc. Alignment of visible light sources based on thermal images
US9235023B2 (en) 2011-06-10 2016-01-12 Flir Systems, Inc. Variable lens sleeve spacer
US10169666B2 (en) 2011-06-10 2019-01-01 Flir Systems, Inc. Image-assisted remote control vehicle systems and methods
US9143703B2 (en) 2011-06-10 2015-09-22 Flir Systems, Inc. Infrared camera calibration techniques
US10079982B2 (en) 2011-06-10 2018-09-18 Flir Systems, Inc. Determination of an absolute radiometric value using blocked infrared sensors
US9961277B2 (en) 2011-06-10 2018-05-01 Flir Systems, Inc. Infrared focal plane array heat spreaders
US10841508B2 (en) 2011-06-10 2020-11-17 Flir Systems, Inc. Electrical cabinet infrared monitor systems and methods
EP2719166B1 (en) 2011-06-10 2018-03-28 Flir Systems, Inc. Line based image processing and flexible memory system
US10051210B2 (en) 2011-06-10 2018-08-14 Flir Systems, Inc. Infrared detector array with selectable pixel binning systems and methods
KR101778353B1 (ko) 2011-06-10 2017-09-13 플리어 시스템즈, 인크. 적외선 이미징 장치용 불균일성 교정 기술
US9900526B2 (en) 2011-06-10 2018-02-20 Flir Systems, Inc. Techniques to compensate for calibration drifts in infrared imaging devices
US9509924B2 (en) 2011-06-10 2016-11-29 Flir Systems, Inc. Wearable apparatus with integrated infrared imaging module
JP5849485B2 (ja) * 2011-07-15 2016-01-27 株式会社リコー 印刷制御プログラム、情報処理装置及び記録媒体
US9811884B2 (en) 2012-07-16 2017-11-07 Flir Systems, Inc. Methods and systems for suppressing atmospheric turbulence in images
US9973692B2 (en) 2013-10-03 2018-05-15 Flir Systems, Inc. Situational awareness by compressed display of panoramic views
US11297264B2 (en) 2014-01-05 2022-04-05 Teledyne Fur, Llc Device attachment with dual band imaging sensor

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3243098A1 (de) * 1982-11-22 1984-05-24 Rheinische Braunkohlenwerke AG, 5000 Köln In einen reaktionsbehaelter hineingefuehrtes sondenrohr zur ermittlung des betriebszustandes eines mediums
JP3450387B2 (ja) 1993-10-01 2003-09-22 キヤノン株式会社 カラー情報処理方法及び装置
JP3063957B2 (ja) 1995-03-01 2000-07-12 富士ゼロックス株式会社 画像処理装置
JP3382535B2 (ja) 1997-05-27 2003-03-04 キヤノン株式会社 画像処理方法、画像処理装置、及び、コンピュータ可読メモリ
JP3679253B2 (ja) 1998-11-02 2005-08-03 株式会社リコー カラー画像出力方法、装置および記録媒体
JP2002319018A (ja) 2001-04-20 2002-10-31 Fuji Xerox Co Ltd 描画処理装置、描画処理方法及び描画処理プログラムを記録したコンピュータ読み取り可能な記録媒体
CN1237406C (zh) * 2001-09-27 2006-01-18 佳能株式会社 彩色图像形成装置、彩色图像形成装置的控制方法
JP2004015219A (ja) 2002-06-04 2004-01-15 Canon Inc 画像処理装置及びその制御方法、及び画像処理システム
US20040223173A1 (en) * 2002-10-17 2004-11-11 Seiko Epson Corporation Generating method for color conversion table, method and apparatus for creating correspondence definition data
US7088368B1 (en) * 2003-11-12 2006-08-08 Microsoft Corporation Methods and systems for rendering computer graphics
US7385729B2 (en) * 2004-03-26 2008-06-10 Lexmark International, Inc. Optimization techniques during processing of print jobs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011105877A2 (ko) 2010-02-26 2011-09-01 (주)Lg화학 점착제 조성물

Also Published As

Publication number Publication date
US8355164B2 (en) 2013-01-15
KR100844972B1 (ko) 2008-07-09
EP1732308A2 (en) 2006-12-13
US20060279758A1 (en) 2006-12-14

Similar Documents

Publication Publication Date Title
KR100844972B1 (ko) 촬상 장치, 제어 방법, 및 기억매체
JP3902816B2 (ja) カラー画像処理装置およびその方法
US5822503A (en) Method of manipulating color EPS files
JP4804044B2 (ja) 画像処理装置及び画像処理方法
KR960014180B1 (ko) 양방향 그래픽스 속성 변환 시스템 및 방법
US7782487B2 (en) Image processing apparatus, image forming apparatus, image processing method, computer data signal, and recording medium
US7164494B1 (en) Color separation of pattern color spaces and form XObjects
US7898686B2 (en) System and method for encoded raster document generation
JP4480160B2 (ja) 印刷装置、印刷装置の制御方法、印刷装置の制御プログラム、記憶媒体、並びに、Webサーバ
KR20130054899A (ko) 래스터 이미지 변환 장치, 화상독취장치, 래스터 이미지 변환 방법 및 컴퓨터 판독가능 기록매체
Kuhn et al. An improved contrast enhancing approach for color-to-grayscale mappings
US6690489B1 (en) Color conversion acceleration using lookup tables
US8270722B2 (en) Image processing with preferential vectorization of character and graphic regions
US8259347B2 (en) Image processing apparatus and computer readable medium
JP2006341457A (ja) 印刷装置
JP4818013B2 (ja) 画像処理方法、画像処理装置、及び画像処理プログラム
JP2006215808A (ja) 色変換方法、色変換装置、プログラムおよび記録媒体
JP5257264B2 (ja) 画像形成装置、画像データ処理方法及び制御プログラム
JP5008391B2 (ja) 画像処理装置及びその処理方法
US11423588B2 (en) Color transforms using static shaders compiled at initialization
JP5043512B2 (ja) 色処理装置および方法
JP2011077697A (ja) 画像処理装置、画像形成装置、及び画像処理プログラム
JP2006163463A (ja) ダイレクトプリントシステム、ダイレクトプリントシステムの画像処理方法、記憶媒体及びプログラム
CA2452079A1 (en) Method and system for manipulation of graphics information
AU2007202201B2 (en) Image quality analysis

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130626

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140625

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150625

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160627

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee