KR20140013949A - 화상 형성 장치 - Google Patents

화상 형성 장치 Download PDF

Info

Publication number
KR20140013949A
KR20140013949A KR1020130085094A KR20130085094A KR20140013949A KR 20140013949 A KR20140013949 A KR 20140013949A KR 1020130085094 A KR1020130085094 A KR 1020130085094A KR 20130085094 A KR20130085094 A KR 20130085094A KR 20140013949 A KR20140013949 A KR 20140013949A
Authority
KR
South Korea
Prior art keywords
character
virtual machine
graphic
unit
library
Prior art date
Application number
KR1020130085094A
Other languages
English (en)
Other versions
KR101571595B1 (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
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20140013949A publication Critical patent/KR20140013949A/ko
Application granted granted Critical
Publication of KR101571595B1 publication Critical patent/KR101571595B1/ko

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • 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
    • G06F3/1297Printer code translation, conversion, emulation, compression; Configuration of printer parameters
    • G06F3/1298Printer language recognition, e.g. programme control language, page description language
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • 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/1827Accessing generic data, e.g. fonts
    • 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/1848Generation of the printable image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • 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
    • 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/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00278Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a printing apparatus, e.g. a laser beam 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

투과 처리가 불필요한 경우에도 그래픽 라이브러리가 투과 계산을 실시하는 경우 또는 그래픽 라이브러리가 GPU에 대해 효과적인 묘화 명령을 발행하지 않는 경우, 그래픽 라이브러리와 조합하여 동작하는 가상 머신에서도 만족스러운 묘화 성능을 얻을 수 없었다. 이를 해소하기 위해, 가상 머신은 묘화되는 콘텐츠에 따라 투과 처리를 실시하거나 실시하지 않도록 그래픽 라이브러리를 이용한다. 가상 머신은 GPU에 대해 효과적인 묘화 명령을 발행하기 위해 그래픽 라이브러리를 이용한다.

Description

화상 형성 장치{IMAGE FORMING APPARATUS}
본 발명은, 예컨대, 가상 머신의 그래픽 처리를 향상시키는 화상 형성 장치에 관한 것이다.
최근, 스마트폰, 테블릿 단말 및 화상 형성 장치와 같은 내장형 기기에서 사용자에게 친숙한 조작성(이하, "리치 조작"이라 함)이 실현되었다. 리치 조작을 실현하기 위해서는 높은 프레임 속도가 요구된다.
이와 같은 내장형 기기에는 자바®와 같은 프로그래밍 언어로 기술된 코드를 실행시키기 위해 운영 체계와 같은 소프트웨어 및 하드웨어에 의존하지 않는 실행 환경으로서 가상 머신이 도입되고 있다. 일부 가상 머신은 애플리케이션 소프트웨어(이하, "애플리케이션"이라 함)의 설치를 허용한다. 이는 내장형 기기의 부가가치 향상에 기여한다.
그러나, 가상 머신 상에서 작동하는 애플리케이션도, 예컨대, 터치 패널 상에서 행해지는 제스처에 따라 실행되며, 그 조작 내용을 애니메이션 등을 이용하여 높은 표현력으로 표시하는 리치 조작의 실현이 요구된다. 이를 위해, 가상 머신이 GPU(그래픽 프로세서 유닛)를 이용하여 묘화 영역을 효율적으로 합성한다(일본 특허 공개 번호 제2006-171274호 참조).
일반적으로, GPU의 이용은 표시 처리 능력을 향상시킴으로써, 표시 처리의 프레임 속도를 높이고, CPU(중앙 처리 유닛)에 대한 부하를 경감한다.
묘화 처리를 실현하기 위해, GPU 및 그 드라이버를 추상화시키는 그래픽 라이브러리를 통상적으로 이용한다. 내장형 기기에 탑재되는 가상 머신은 특정 그래픽 라이브러리들의 조합이 제공된 환경에서 동작하는 것이 일반적이다. 그래픽 라이브러리를 이용하면, 묘화 처리를 용이하게 실현할 수 있다. 그러나, GPU 특성을 고려하지 않고 묘화 명령이 발행되거나, 가상 머신에 항상 필요하지 않은 계산이 그래픽 라이브러리 내에서 행해질 수 있다. 그러한 경우, CPU와 GPU 간의 통신의 증가 및 계산량 증가로 인한 CPU의 부하 증대로 인해, GPU의 성능을 극대화할 수 없다.
본 발명은 종래 상황을 감안하여 안출되었으며, 가상 머신으로부터 그래픽 라이브러리를 이용하여 묘화 처리를 실시하는 구성에서도, 그래픽 라이브러리가 GPU를 이용할 때의 오버헤드를 저감할 수 있으며, GPU의 장점을 손상시키지 않고 효율적인 화상 처리를 실현할 수 있는 화상 형성 장치를 제공한다.
본 발명의 일 양태에 따르면, 표시 수단을 포함하는 화상 형성 장치가 제공되며, 상기 화상 형성 장치는, 상기 표시 수단에 의해 표시되는 화상을 묘화하는 그래픽 프로세서를 이용하는 그래픽 드라이버와, API를 통한 처리 요구에 따라 상기 그래픽 드라이버에 대해 묘화 요구를 발행하는 그래픽 라이브러리와, 미리 정해진 프로그래밍 언어로 기술된 프로그램을 실행시키는 가상 머신 수단으로서, 당해 가상 머신 수단은 실행되는 프로그램에 따라 API를 통해 상기 그래픽 라이브러리에 대해 처리 요구를 발행하여 처리를 실시하는 가상 머신 수단을 포함하며, 상기 가상 머신 수단은, 프로그램을 실행하여 묘화를 실시하는 경우에, 프레임 버퍼 내의 화상 데이터의 색이 투과치를 포함하는지의 여부를 판정하고, 상기 색이 투과치를 포함하는 경우에, 상기 그래픽 라이브러리로서 투과 처리 대응 그래픽 라이브러리를 선택하여 당해 그래픽 라이브러리에 대해 묘화 처리 요구를 발행하고, 상기 색이 투과치를 포함하지 않는 경우에, 상기 그래픽 라이브러리로서 투과 처리 비대응 그래픽 라이브러리를 선택하여 당해 그래픽 라이브러리에 대해 묘화 처리 요구를 발행한다.
본 발명의 다른 양태에 따르면, 표시 수단을 포함하는 화상 형성 장치가 제공되며, 상기 화상 형성 장치는, 상기 표시 수단에 의해 표시되는 화상을 묘화하는 그래픽 프로세서를 이용하는 그래픽 드라이버와, API를 통한 처리 요구에 따라 상기 그래픽 드라이버에 대해 묘화 요구를 발행하는 그래픽 라이브러리와, 미리 정해진 프로그래밍 언어로 기술된 프로그램을 실행시키는 가상 머신 수단으로서, 당해 가상 머신 수단은 실행되는 프로그램에 따라 API를 통해 상기 그래픽 라이브러리에 대해 처리 요구를 발행하여 처리를 실시하는 가상 머신 수단을 포함하며, 상기 가상 머신 수단은, 상기 프로그램을 실행하여 래스터 라인에 대해 평행하거나 직교하는 직선을 묘화하는 경우에, 상기 직선의 폭을 단변의 길이로 하고 상기 직선의 길이를 장변의 길이로 하는 직사각형 영역을 채우는 묘화 처리 요구를 상기 그래픽 라이브러리에 대해 발행한다.
본 발명의 또 다른 양태에 따르면, 표시 수단을 포함하는 화상 형성 장치가 제공되며, 상기 화상 형성 장치는, 상기 표시 수단에 의해 표시되는 화상을 묘화하는 그래픽 프로세서를 이용하는 그래픽 드라이버와, API를 통한 처리 요구에 따라 상기 그래픽 드라이버에 대해 묘화 요구를 발행하는 그래픽 라이브러리와, 미리 정해진 프로그래밍 언어로 기술된 프로그램을 실행시키는 가상 머신 수단으로서, 당해 가상 머신 수단은 실행되는 프로그램에 따라 API를 통해 상기 그래픽 라이브러리에 대해 처리 요구를 발행하여 처리를 실시하는 가상 머신 수단을 포함하며, 상기 가상 머신 수단은, 상기 프로그램을 실행하여 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 당해 문자 화상에서 문자를 형성하는 화소들을 각각의 화소에 대해 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행한다.
본 발명에 따르면, 가상 머신은 묘화되는 콘텐츠의 투과치에 기초하여 그래픽 라이브러리 이용 방법을 변경한다. 또한, 가상 머신은 GPU에 대해 매우 효과적인 명령을 발행하기 위해 그래픽 라이브러리를 이용한다. 따라서, 불필요한 계산 처리를 생략할 수 있고, GPU를 효과적으로 이용하므로, 묘화 성능을 향상시킬 수 있다.
첨부 도면을 참조하면, 예시적 실시예에 대한 하기된 설명으로부터 본 발명의 다른 특징들이 명확해질 것이다.
도 1은 실시예가 적용되는 화상 형성 장치를 나타낸 하드웨어 블록도이다.
도 2는 실시예가 적용되는 화상 형성 장치를 나타낸 소프트웨어 블록도이다.
도 3은 실시예가 적용되는 가상 머신의 묘화 기능을 나타낸 소프트웨어 블록도이다.
도 4는 실시예가 적용되는 가상 머신의 묘화 기능의 초기화를 나타낸 흐름도이다.
도 5는 실시예가 적용되는 가상 머신에 의해 관리되는 리소스를 나타낸 개념도이다.
도 6의 (a) 및 (b)는 각각 실시예가 적용되는 가상 머신에 의한 전체 묘화 처리를 나타내는 흐름도와, 묘화 처리의 과정을 나타내는 개념도이다.
도 7은 실시예가 적용되는 가상 머신에 의한 콘텐츠 묘화 처리를 나타낸 흐름도이다.
도 8은 실시예가 적용되는 가상 머신의 라인 묘화 기능을 나타낸 소프트웨어 블록도이다.
도 9는 실시예가 적용되는 가상 머신에 의한 라인 묘화 처리를 나타낸 흐름도이다.
도 10은 실시예가 적용되는 가상 머신의 문자 묘화 기능을 나타낸 소프트웨어 블록도이다.
도 11은 실시예가 적용되는 가상 머신에 의한 문자 묘화 처리를 나타낸 흐름도이다.
도 12는 실시예가 적용되는 가상 머신의 문자 묘화 기능을 나타낸 소프트웨어 블록도이다.
도 13은 실시예가 적용되는 가상 머신에 의한 문자 묘화 처리를 나타낸 흐름도이다.
도 14는 실시예가 적용되는 가상 머신의 문자 묘화 기능을 나타낸 소프트웨어 블록도이다.
도 15는 실시예가 적용되는 가상 머신에 의한 문자 묘화 처리를 나타낸 흐름도이다.
도 16은 실시예가 적용되는 가상 머신의 문자 묘화 기능을 나타낸 소프트웨어 블록도이다.
도 17은 실시예가 적용되는 가상 머신에 의한 문자 묘화 처리를 나타낸 흐름도이다.
이하, 첨부도면을 참조하여, 본 발명의 바람직한 실시예를 설명한다.
[제 1 실시예]
<하드웨어 구성>
도 1은 제 1 실시예에 따른 화상 형성 장치의 내부 구성을 예시한 하드웨어 블록도이다. 도 1에 도시된 화상 형성 장치는, 기본적 구성요소로서, 화상 형성 장치 내의 각각의 유닛을 제어하는 컨트롤러 유닛(100), 조작 유닛(112), 스캐너 유닛(123) 및 프린터 유닛(125)을 포함한다. 조작 유닛(112)은, 숫자를 입력하기 위한 텐-키 패드 및 처리를 실행하기 위한 스타트 키와 같은 하드 키와, 액정 터치 패널로 형성된다. 조작 유닛(112)은 사용자가 화상 형성 장치를 조작할 수 있도록 하는 사용자 인터페이스를 제공한다. 사용자는 조작 유닛(112)의 터치 패널에 표시되어 설정 항목을 나타내는 아이콘과 버튼(또는 하드 키)을 터치(가압)함으로써, 설정과 정보를 입력할 수 있다.
스캐너 유닛(123)은 원고와 같은 화상을 화상 데이터로서 판독한다. 프린터 유닛(125)은 인쇄 용지를 반송하여, 그 인쇄 용지에 화상 데이터를 가시 화상으로서 인쇄한다.
컨트롤러 유닛(100)은 버스(122)를 통해 스캐너 유닛(123)에 접속되며, 버스(124)를 통해 프린터 유닛(125)에 접속된다. 컨트롤러 유닛(100)은, LAN(113), 공중 회선(WAN)(114) 및 무선(115)을 통해 다른 기기에 접속되며, 화상 정보 및 디바이스 정보의 입력/출력을 제어한다.
CPU(101)는 프로그램을 실행시키고 전체 시스템을 제어하는 컨트롤러이다. ROM(102)은 CPU(101)가 작동하기 위해 사용하는 시스템 작업 메모리이며, 화상 데이터를 일시 기억하기 위한 화상 메모리이기도 하다. ROM(103)은 부트 ROM이다. ROM(103)은 시스템의 부트 프로그램을 저장하고 있다. HDD(하드 디스크 드라이브)(104)는 시스템 소프트웨어, 화상 데이터, 후술하는 통신 유닛(111)에 의해 지원되는 모든 무선 통신에 대한 정보(무선 통신의 사양)를 저장하고 있다.
화상 형성 장치는 사용되는 기능을 가진 애플리케이션을 설치함으로써 기능을 증대시킬 수 있다. 애플리케이션을 설치함으로써, 화상 형성 장치에서 각종 기능을 동작시키기 위한 애플리케이션 프로그램이 ROM(102) 또는 HDD(104)에 기억된다.
조작 유닛 I/F(106)는 사용자 인터페이스(UI)로서의 역할을 하는 조작 유닛(112)과의 인터페이스 유닛이며, 조작 유닛(112)에 대해 조작 유닛(112)에 표시될 데이터를 출력한다. 또한, 조작 유닛 I/F(106)는 조작 유닛(112)을 통해 사용자가 입력한 정보를 CPU(101)에 전송한다.
GPU(130)는 ROM(102)에 확보된 화상 메모리의 내용을 DMA 등으로 조작 유닛(112)의 표시 유닛에 출력하는 그래픽 프로세서이다. 화상 데이터를 출력함으로써, 조작 유닛(112)에 표시된 화상이 갱신된다. 화상 데이터는, 화상 데이터가 다시 쓰여질 때마다 출력되거나, 정기적으로 출력될 수 있다. GPU(130)는 화상 메모리에 서로 다른 화상 버퍼의 화상 데이터를 합성하는 기능을 갖고 있다. 일부 GPU들은 불투과율(또는 투과율)을 반영한 합성을 실시하는 알파 블렌딩 기능을 갖고, 즉, 투과 처리에 대응한다. 알파 블렌딩 기능을 가진 GPU도 합성되는 화상 데이터에 따라 투과치(알파 채널)를 갖지 않을 수도 있기 때문에, 투과 처리의 기능을 이용하지 않고 화상 데이터를 합성하는 기능도 갖고 있다. 또한, GPU(130)는 직사각형 영역을 채우는 기능과, 비트 단위의 블록을 전송하는 기능을 갖고 있다. 일부 GPU들은 셰이딩(shading) 처리를 포함한 3D 묘화 기능을 더 갖고 있지만, 본 실시예의 GPU는 3D 묘화 기능을 가질 필요가 없다. 본 실시예의 GPU는 래스터 라인에 대해 평행한 변을 가진 직사각형을 채우는 높은 성능을 갖고 있다. 이는 일반적인 GPU에도 적용된다.
네트워크 유닛(109)은 LAN(113)에 접속되어 정보를 입력/출력한다. MODEM(110)은 공중 회선(WAN)(114)에 접속되어 정보를 입력/출력한다.
통신 유닛(111)은 안테나(미도시)를 통해 무선(WIRELESS)(115)에 접속되어 정보를 입력/출력한다. 통신 유닛(111)은 복수 종류의 무선 통신을 실시할 수 있다. 이 디바이스들은 시스템 버스(107) 상에 배치된다.
이미지 버스(105)는 시스템 버스(107)와 화상 데이터를 고속으로 전송하는 이미지 버스(108)를 접속하여, 데이터 구조를 변환하는 버스 브릿지이다. 이미지 버스(108)는 PCI 버스이거나 IEEE1394 등으로 규정된 버스이다.
이미지 버스(108) 상에 배치된 디바이스들 중, 래스터 화상 프로세서(RIP)(116)는 PDL 코드를 비트맵 이미지로 전개한다. 디바이스 I/F 유닛(117)은 스캐너 유닛(123) 또는 프린터 유닛(125)을 컨트롤러 유닛(100)에 접촉하여, 화상 데이터의 동기계/비동기계 변환을 실시한다.
스캐너 화상 처리 유닛(118)은 입력 화상 데이터를 보정, 가공 또는 편집한다. 프린터 화상 처리 유닛(119)은 프린트 출력 화상 데이터에 대해 프린터 유닛(125)에 부합하는 보정, 해상도 변환 등을 실시한다. 화상 회전 유닛(120)은 화상 데이터를 회전시킨다. 화상 처리 유닛(121)은 화상 데이터에 대해 JPEG, JBIG, MMR, MH 등에 기초한 압축/신장 처리를 실시하고, PDF, TIFF, OCR, 암호화 등에 기초한 포맷 변환 처리를 실시한다.
<소프트웨어 구성>
도 2는 화상 형성 장치의 소프트웨어 구성을 예시한 블록도이다. 도 2의 소프트웨어 구성은 편의상 계층 구조로 표현된 것으로 보이지만, 상위층과 하위층이 항상 명확한 것은 아니며, 기능에 따라 병렬 관계를 취할 수 있다. 즉, 본 실시예의 소프트웨어 구성의 형태는 이에 한정되지 않는다. 화상 형성 장치의 소프트웨어는 HDD(104)에 저장된다.
(애플리케이션 및 라이브러리)
시스템 서비스(264)는 화상 형성 장치에 사전에 등록된 애플리케이션이며, 다른 애플리케이션에 기능을 제공하거나, 단독으로 기능할 수 있다. 다른 애플리케이션에 기능을 제공하는 시스템 서비스의 예에는, 에러 발생시 처리를 대체하는 에러 리커버리 서비스와, 조작 유닛(112)을 제어하는 애플릿 뷰어 서비스(AVS)가 있다. 단독으로 기능하는 시스템 서비스의 예에는, PC로부터 브라우저를 이용하여 액세스되어 소정의 애플리케이션 파일을 수신하는 서비스 매니지먼트 서비스(SMS)가 있다. 애플리케이션 A(265)는 SMS에 의해 설치되는 애플리케이션이며, 화상 형성 장치상에서 각종 기능을 제공한다. 애플리케이션 A(265)는 AVS를 실행할 때 참조될 수 있으며, 조작 유닛(112)을 통해 사용자와 통신한다. 애플리케이션 A(265)는, API(263)를 통해, 화상 형성 장치가 제공하는 시스템 라이브러리(261)와 표준 라이브러리(262)의 기능을 이용할 수 있다. 시스템 라이브러리(261)는 인쇄 처리, 복사 처리 및 스캔 처리와 같은 잡(job)을 제어하는 기능을 포함한다. 애플리케이션 A(265)는 시스템 라이브러리(261)를 이용하여 화상 형성 장치의 네트워크 유닛(109)을 통해 PC 등으로부터 데이터를 수신할 수 있으며, 프린터 유닛(125)을 이용하여 인쇄할 수 있다. 표준 라이브러리(262)는 계산 처리, 문자열 처리, 통신 처리, 화면 제어 처리 및 암호화 처리와 같이 화상 형성 장치에 한정되지 않는 범용적 기능을 제공하기 위한 라이브러리이다. 애플리케이션 프레임워크(260)는 애플리케이션의 라이프사이클을 관리하는 기능을 제공한다.
(가상 머신)
가상 머신(250)은 자바®로 대표되는 소정의 프로그래밍 언어로 기술된 애플리케이션의 실행 환경을 제공하는 프로그램(가상 머신 프로그램)이다. 가상 머신(또는 가상 머신 유닛)(250)은, 애플리케이션 등의 소스 코드를 가상 머신용으로 컴파일링하여 취득한 바이트코드를 해석하는 바이트코드 해석 유닛(251), 해석된 네이티브 커맨드를 제어하는 네이티브 커맨드 제어 유닛(252), 가상 머신(250) 상에서 동작하는 애플리케이션용의 리소스(예컨대, 애플리케이션의 바이트코드 또는 생성된 인스턴스)를 관리하는 가상 머신 리소스 관리 유닛(253), 애플리케이션으로부터 조작 유닛(112)으로의 묘화 명령을 처리하는 그래픽 처리 제어 유닛(254), 컨트롤러 유닛(100), 조작 유닛(112), 스캐너 유닛(123) 및 프린터 유닛(125)의 상태 변화를 애플리케이션에 통지하기 위한 제어를 수행하는 이벤트 제어 유닛(255), 및 가상 머신(250)이 네이티브 제어 유닛(201)의 처리를 요구할 때 필요한 리소스를 관리하는 네이티브 리소스 관리 유닛(256)을 포함한다. 바이트코드 해석 유닛(251)은 해석된 바이트코드를 네이티브 커맨드로 변환하여, 네이티브 커맨드 제어 유닛(252)에 처리를 요구한다. 네이티브 커맨드의 내용에 기초하여, 네이티브 커맨드 제어 유닛(252)은 네이티브 제어 유닛(201), 그래픽 처리 제어 유닛(254), 이벤트 제어 유닛(255), 가상 머신 리소스 관리 유닛(253) 및 네이티브 리소스 관리 유닛(256)에 처리를 요구한다. 예컨대, 네이티브 커맨드 제어 유닛(252)은, 애플리케이션으로부터 신규 오브젝트 생성 요구를 수신하였을 때, 가상 머신 리소스 관리 유닛(253)에 대해 오브젝트의 생성과 오브젝트의 라이프사이클의 관리를 요구한다. 오브젝트는 변수 또는 상수를 저장하는 필드라 호칭하는 영역과, 처리 명령을 저장하는 메소드 에리어로 형성되며, 이들도 가상 머신 리소스 관리 유닛(253)에 의해 관리됨을 유의하여야 한다. 네이티브 커맨드 제어 유닛(252)은, 애플리케이션으로부터 화면 묘화 명령을 수신하였을 때, 그래픽 처리 제어 유닛(254)에 대해 화면 묘화를 요구한다. 그래픽 처리 제어 유닛(254)은 네이티브 라이브러리(220)를 이용하여 묘화의 준비와 제어를 실시하고, 네이티브 그래픽 제어 유닛(210)에 대해 묘화를 요구한다. 그래픽 처리 제어 유닛(254)은 묘화 요구를 발행하고 요구된 처리를 수행한다. 예컨대, 네이티브 커맨드 제어 유닛(252)은, 애플리케이션으로부터 조작 유닛(112)에 대한 입력 조작을 검출하라는 요구를 해석했을 때, 이벤트 제어 유닛(255)에 대해 조작 이벤트의 등록을 요구한다. 이벤트 제어 유닛(255)은 윈도우 시스템(214)로부터 입력 이벤트를 검출하여, 모든 등록된 애플리케이션에 대해 입력 이벤트를 통지한다. 이벤트 제어 유닛(255)은 컨트롤러 유닛(100)이 절전 상태로 변화될 때 발생되는 이벤트와 용지가 스캐너 유닛(123) 상에 세팅될 때 발생되는 이벤트도 제어할 수 있다. 이벤트 제어 유닛(255)은 조작 유닛(112)에 관한 이벤트의 제어에만 한정되지 않는다. 네이티브 커맨드 제어 유닛(252)은 네이티브 리소스 관리 유닛(256)에 대해 가상 머신(250) 자체를 위해 필요한 리소스를 관리하도록 요구한다. 네이티브 리소스 관리 유닛(256)은 네이티브 라이브러리(220)에 대해 가상 머신(250)이 동작하는데 필요한 영역의 확보와 스레드의 확보를 요구한다. 또한, 네이티브 리소스 관리 유닛(256)은 그래픽 처리 제어 유닛(254)에 의해 네이티브 그래픽 라이브러리(211)로부터 확보되어 내부적으로 이용되는 영역을 관리한다.
(네이티브 제어 유닛)
네이티브 제어 유닛(201)은 가상 머신(250)으로부터의 요구를 처리하고, 가상 머신(250)에 대해 이벤트를 통지하는 처리를 수행한다. 네이티브 제어 유닛(201)은 네이티브 그래픽 제어 유닛(210), 네이티브 라이브러리(220), OS(운영 체계)(230) 및 드라이버(240)를 포함한다. 네이티브 그래픽 제어 유닛(210)은 그래픽 라이브러리(211), 원도우 시스템(214), 그래픽 드라이버(215) 및 프레임 버퍼 드라이버(216)를 포함한다. 네이티브 그래픽 제어 유닛(210)은 ROM(102)에 확보된 영역에 화면 정보를 쓰고, 그 정보를 조작 유닛(112)에 출력하는 기능을 주로 제공한다. CPU(101)와 GPU(130) 중 어느 하나 또는 모두가 이 기능들을 실행시킨다.
그래픽 라이브러리(211)는 화면 묘화에 관한 API(애플리케이션 프로그램 인터페이스)를 제공한다. 그래픽 라이브러리(211)는 API를 통해 가상 머신(250)의 그래픽 처리 제어 유닛(254)으로부터 커맨드(또는 기능)에 대한 호출을 수신했을 때, 호출된 커맨드에 따라 화상 처리를 수행하고 윈도우 시스템(214)에 대해 결과를 묘화하도록 요구한다. 그래픽 라이브러리(211)는 복수의 라이브러리들로 형성될 수 있음을 유의하여야 한다. 예컨대, 직선 또는 사각형에 대한 낮은 수준의 묘화 처리에 특화된 라이브러리와, 투과 처리 또는 벡터 묘화와 같은 높은 수준의 묘화 처리에 대응하는 라이브러리가 동일한 환경에 공존할 수 있다. 본 실시예는 투과 처리에 대응하는 높은 수준의 투과 대응 그래픽 라이브러리(212)와, 투과 처리에 대응하지 않는 고속 투과 비대응 그래픽 라이브러리(213)을 채용하고 있다. 주어진 화상 오브젝트를 다른 화상 오브젝트와 합성하여 묘화하는 경우, 화상 오브젝트의 색과 투과도(또는 불투과도)를 반영하는 화상 합성이 투과 처리 대응 묘화 처리이다. 투과도를 전혀 반영하지 않고 덮어쓰기 합성만을 지원하는 묘화 처리가 투과 처리 비대응 묘화 처리이다. 그래픽 라이브러리 내의 함수에 기초한 묘화 요구를 수신했을 때, 윈도우 시스템(214)은 윈도우 시스템(214)의 설정 정보에 기초하여 적절한 화면 출력 드라이버에 대해 묘화 처리 요구를 발행한다. "적절한 화면 출력 드라이버"는 윈도우 시스템(214)의 설정 정보에 따라 미리 결정된다. 드라이버는 설정 정보를 변경함으로써 전환될 수 있다. 기본적으로, 프레임 버퍼 드라이버(216)에 의해 제공되는 기능은 그래픽 드라이버(215)에 의해 제공되는 기능을 포함하거나 그와 동등하다. 이 기능들이 동등하지 않으면, 그래픽 드라이버(215)가 제공할 수 없는 기능에 대해서는 프레임 버퍼 드라이버(216)가 이용된다. 예컨대, 프레임 버퍼 드라이버(216)에 의해 제공되는 기능이 그래픽 드라이버(215)에 의해 제공되는 기능과 동등하면, GPU가 그래픽 드라이버를 포함하여 투과 처리에 대응하는 한, 윈도우 시스템(214)은 그래픽 드라이버(215)에 대해서만 묘화 처리를 요구한다. GPU가 투과 처리에 대응하지 않으면, 프레임 버퍼에서의 묘화를 위해 프레임 버퍼 드라이버(216)가 이용되며, 다른 기능, 예컨대, 조작 유닛(112)의 화상 버퍼에 프레임 버퍼의 화상 데이터를 쓰는 처리를 위해 그래픽 드라이버(215)가 이용된다.
윈도우 시스템(214)은 화면 묘화에 관한 기능뿐만 아니라, 화면을 윈도우 단위로 제어하는 기능과, 조작 유닛(112)으로부터의 입력을 수신한 입력 드라이버(242)로부터의 신호를 제어하는 기능도 갖고 있다. 그래픽 드라이버(215)는 윈도우 시스템(214)으로부터 묘화 요구를 수신했을 때 GPU(130)에 대해 묘화 명령을 발행하는 기능을 갖고 있다. GPU(130)는 묘화 명령에 따라 조작 유닛(112)의 표시 유닛(표시 버퍼)에 대해 묘화 내용(화상 데이터)을 출력한다. 윈도우 시스템(214)으로부터의 묘화 명령에 기초하여, 프레임 버퍼 드라이버(216)는 프레임 버퍼 디바이스라 칭하는 조작 유닛(112)의 표시 유닛에 링크된 ROM(102)에서 관리되는 메모리 영역("프레임 버퍼"라고도 함)에 대해 묘화 내용을 출력한다. 윈도우 시스템(214)은 조작 유닛(112)의 표시 유닛에 대해 묘화 요구의 대상인 화상 데이터를 출력하는 것 이외에, 이를 출력되지 않는 화면(이하, "오프스크린"이라 함)으로서 ROM(102)에 쓸 수도 있다. 그래픽 라이브러리(211)는 윈도우 시스템(214)의 오프스크린 묘화 기능을 이용할 수 있다. 조작 유닛(112)에 출력(즉, 표시)되는 화면(온스크린)은 윈도우 시스템(214)에 의해 제어되는 윈도우들 중 일부 또는 전부로서 할당된다.
OS(230)로서, 실시간 OS가 일반적으로 사용되지만, 리눅스®와 같은 범용 OS가 사용되는 경우도 있다. 네이티브 라이브러리(220)는, OS(230)의 기능을 호출하기 위한 시스템 콜, 파일 시스템 제어, 스레드 제어, 프로세스 제어 및 메모리 제어와 같은 기능을 제공한다. 드라이버(240)는 디바이스를 제어하기 위한 프로그램이다. 일부 드라이버들은 OS(230)의 기동시에 ROM(102)에 로딩되며, 일부 드라이버들은 필요에 따라 로딩된다. 예컨대, 네트워크 드라이버(241)는 통신 유닛(111)을 제어하기 위한 기능을 제공한다. 입력 드라이버(242)는 조작 유닛 I/F(106)를 제어하기 위한 기능을 제공한다. 프린터/스캐너 드라이버는 스캐너 유닛(123)과 프린터 유닛(125)을 제어하기 위한 기능을 제공한다. 설명의 편의상 화면 묘화와 관련된 그래픽 드라이버(215)와 프레임 버퍼 드라이버(216)가 드라이버(240)에 포함되지 않았으나, 드라이버(240)에 포함되는 것으로 해석될 수 있음을 유의하여야 한다. 또한, 드라이버(240)는 전술한 것들 이외의 리소스를 제어하기 위한 드라이버를 포함할 수 있다.
<그래픽 처리 제어 유닛>
도 3은 가상 머신(250) 내의 그래픽 처리 제어 유닛(254)의 세부 사항을 예시한 소프트웨어 블록도이다. 그래픽 초기화 유닛(301)은, 가상 머신(250)의 기동시 또는 오프스크린 생성시, 네이티브 리소스 관리 유닛(256)에 대해 대상 스크린 영역을 관리하도록 요구한다. 스크린은 가상 머신(250)이 묘화할 수 있는 영역임을 유의하여야 한다. 그래픽 초기화 유닛(301)은 그래픽 콘텍스트(이하, "GC"라고도 함)를 생성한다. 그래픽 콘텍스트는 스크린에 링크된 정보이며, 묘화 색 및 묘화 범위와 같은 묘화에 관한 정보(묘화 속성)를 저장하는 리소스이다. 예컨대, 자바®에 있어서, 그래픽 콘텍스트는 이미 정의된 클래스이며, 정보에 추가하여 특정 항목의 값을 변경하는 방법도 정의하고 있다. 1개의 스크린에 대해 복수의 그래픽 콘텍스트를 취득할 수 있음을 유의하여야 한다. 예컨대, 본 발명에서는, 2개의 그래픽 콘텍스트, 즉 투과 처리를 포함하는 그래픽 콘텍스트와 투과 처리를 포함하지 않는 그래픽 콘텍스트가 각 스크린에 대해 생성된다. GC 전환 유닛(304)은 사용되는 그래픽 콘텍스트를 전환한다. 스크린 정보 관리 유닛(302)은 그래픽 초기화 유닛(301)에 의해 생성된 스크린과, 스크린에 수반된 정보(예컨대, 색 및 묘화 범위)를 관리한다. GC 관리 유닛(303)은 그래픽 초기화 유닛(301)에 의해 생성된 그래픽 콘텍스트를 관리한다. 그래픽 묘화 제어 유닛(305)은 콘텐츠를 묘화하기 위한 준비를 실시하고, 라인 묘화 유닛(306), 문자 묘화 유닛(307), 화상 묘화 유닛(308), 직사각형 묘화 유닛(309), 점 묘화 유닛(310) 및 네이티브 그래픽 제어 유닛(210)에 대해 묘화를 요구한다. 콘텐츠는 스크린에 묘화되는 라인, 직사각형, 문자 및 화상을 포함하는 묘화 오브젝트의 총칭이라는 것을 유의하여야 한다. 라인 묘화 유닛(306)은 스크린에 라인을 묘화하는 기능을 갖고 있다. 문자 묘화 유닛(307)은 스크린에 문자를 묘화하는 기능을 갖고 있다. 화상 묘화 유닛(308)은 스크린에 화상을 묘화하는 기능을 갖고 있다. 직사각형 묘화 유닛(309)은 스크린에 직사각형을 묘화하는 기능을 갖고 있다. 점 묘화 유닛(310)은 스크린에 점을 묘화하는 기능을 갖고 있다. 라인 묘화 유닛(306)과 점 묘화 유닛(310)의 조합으로 원과 다각형을 묘화할 수 있음을 유의하여야 한다. 이에 따라, 가상 머신(250)으로 묘화할 수 있는 콘텐츠는 본 실시예에서 언급한 라인, 문자 등에 한정되지 않는다.
<그래픽 초기화 유닛에 의한 초기화 처리>
도 4는 그래픽 초기화 유닛(301)에 의해 실시되는 초기화 처리를 나타낸 흐름도이다. 이 흐름도는 가상 머신(250)이 기동될 때 또는 가상 머신(250)이 오프스크린 생성 처리 요구를 검출했을 때의 처리를 나타낸다. 단계 S401에서, 네이티브 커맨드 제어 유닛(252)은 바이트코드 해석 유닛(251)에 의해 해석된 스크린 초기화에 관한 네이티브 커맨드를 그래픽 초기화 유닛(301)에 대해 통지한다. 단계 S402에서, 그래픽 초기화 유닛(301)은 통지 내용에 부합하는 사이즈의 스크린을 생성하도록 그래픽 라이브러리(211)에 대해 요구한다. 그리고, 그래픽 초기화 유닛(301)은 그래픽 라이브러리(211)에 대해 생성된 스크린을 네이티브 리소스 관리 유닛(256)에 저장하도록 요구한다. 단계 S403에서, 그래픽 초기화 유닛(301)은 그래픽 라이브러리(211)에 대해 생성된 스크린과 연관된 투과 처리를 포함한 투과 그래픽 콘텍스트(투과 GC)를 생성하도록 요구한다. 그래픽 초기화 유닛(301)은 그래픽 라이브러리(211)에 대해 생성된 투과 GC를 GC 관리 유닛(303)에 저장하도록 요구한다. 단계 S404에서는, 단계 S403에서와 마찬가지 방식으로, 생성된 스크린과 연관된 투과 처리를 포함하지 않는 불투과 GC가 생성되어 저장된다. 본 실시예에서, 투과 대응 그래픽 라이브러리(212)는 투과 GC에 기초하여 묘화 처리를 수행하고, 투과 비대응 그래픽 라이브러리(213)는 불투과 GC에 기초하여 묘화 처리를 수행한다. 단계 S402에서 생성된 스크린에 대해, 사이즈뿐만 아니라 색도 지정된다. 색 지정은 투과도 지정을 포함한다. 따라서, 생성된 스크린은 지정된 사이즈와 지정된 색을 갖는다. 전술한 바와 같이, 스크린과 그래픽 콘텍스트는, 예컨대, 자바®에서 미리 정의된 클래스이다. 스크린과 그래픽 콘텍스트의 생성은 그들의 인스턴스의 생성에 의해 실현될 수 있다.
<오브젝트의 예>
도 5는 가상 머신 리소스 관리 유닛(253)에 의해 관리되는 묘화 처리에 관한 오브젝트 정보의 개념을 예시하고 있다. 도 5는 CopyAppletClass 오브젝트의 paint 메소드의 내용을 나타내고 있다. 도 5에 도시된 g1과 g2는 스크린에 해당한다. g1.drawline(0, 0, 100, 100) 처리는 스크린(g1) 상에서 2개의 점((0, 0), (100, 100))들 사이에 라인을 묘화하는 처리이다. 마찬가지로, g2.drawRectangle은 스크린(g2) 상에 직사각형을 묘화하는 처리이며, g2.drawImage는 스크린(g2) 상에 화상 또는 오프스크린을 묘화하는 처리이다. g2.setColor(0, 0, 255) 처리는 후속 처리에 의해 스크린(g2) 상에 묘화되는 콘텐츠의 색을 지정한다. 이 메소드는 그래픽 콘텍스트로서 설정된 묘화 색을 변경하는 메소드이다. 이러한 방식으로, 가상 머신 리소스 관리 유닛(253)은 콘텐츠를 묘화하기 위한 절차(메소드)를 사전에 정의하는 오브젝트를 관리한다. paint 메소드를 실행할 때, 도 5에 나타낸 명령들이 순차적으로 실행되어 스크린(g1, g2) 상에 라인 및 직사각형을 묘화하며, 스크린(g2)은 오프스크린으로서 묘화된다. 도 5의 개념은 단지 설명을 위한 것이며, 가상 머신 리소스 관리 유닛(253)에 의한 오브젝트의 관리 형태는 이 개념도에 한정되지 않음을 유의하여야 한다.
<콘텐츠 묘화 처리>
도 6의 (a)는 콘텐츠 묘화 처리를 나타낸 흐름도이다. 단계 S601에서, 가상 머신(250)은 애플리케이션으로부터 묘화 요구를 수취한다. 묘화 요구를 생성하는 타이밍은, 예컨대, 애플리케이션 기동 타이밍, 조작 유닛(112)에 대한 입력 검출에 기초한 화면 천이 타이밍 및 윈도우 시스템(214)에 의해 관리되는 가상 머신(250)의 윈도우가 최상면이 아닌 상태에서 최상면으로 변하는 타이밍임을 유의하여야 한다. 단계 S602에서, 바이트코드 해석 유닛(251)은 가상 머신 리소스 관리 유닛(253)으로부터 바이트코드의 참조가 완료될 때까지 바이트코드를 순차적으로 해석하고, 단계 S603 내지 단계 S605의 처리를 반복한다. 단계 S603에서, 바이트코드 해석 유닛(251)은 네이티브 커맨드 제어 유닛(252)에 대해 해석된 바이트코드를 네이티브 커맨드로서 통지한다. 단계 S604에서, 네이티브 커맨드 제어 유닛(252)은 그래픽 처리 제어 유닛(254)에 대해 묘화에 관한 네이티브 커맨드를 처리하도록 요구한다. 단계 S605에서, 그래픽 처리 제어 유닛(254)은 콘텐츠를 묘화한다(세부 사항에 대해서는 후술한다).
도 6의 (b)는 콘텐츠를 실제로 묘화하는 과정을 나타낸다. 도 6의 (b)는 화상 형성 장치에 대해 복사를 실행하기 위한 버튼을 스크린에 출력하는 과정을 예시하고 있다. 버튼을 표시하기 위해, 예컨대, 1개의 클래스가 정의되며, 그 클래스에 버튼을 표시하기 위한 메소드가 정의된다. 메소드는, 예컨대, 버튼 프레임을 묘화하는 drawRectangle 명령, 버튼에 문자를 묘화하는 drawString 명령, 및 drawImage 명령을 포함한다. 각 명령의 인수는 직사각형의 대각점의 위치와 문자열을 포함한다. 색, 라인 폭 및 불투명도와 같이 묘화를 위해 필요한 속성으로서 그래픽 콘텍스트에 정의된 속성이 적용된다. 이 메소드를 실행함으로써, 단계 S610에서, 바이트코드 해석 유닛(251)이 가상 머신 리소스 관리 유닛(253)에 저장된 drawRectangle 명령을 해석하여, 그래픽 처리 제어 유닛(254)에 대해 네이티브 커맨드로서 묘화 요구를 발행하며, 이에 따라, 스크린에 직사각형이 묘화된다. 단계 S611에서, 바이트코드 해석 유닛(251)이 가상 머신 리소스 관리 유닛(253)에 저장된 drawString 명령을 해석하여, 그래픽 처리 제어 유닛(254)에 대해 네이티브 커맨드로서 묘화 요구를 발행하며, 이에 따라, 스크린에 문자 "복사"가 묘화된다. 단계 S612에서, 바이트코드 해석 유닛(251)이 가상 머신 리소스 관리 유닛(253)에 저장된 drawImage 명령을 해석하여, 그래픽 처리 제어 유닛(254)에 대해 네이티브 커맨드로서 묘화 요구를 발행하며, 이에 따라, 스크린에 화상이 묘화된다. 이 단계들을 실행함으로써, 스크린에 복사 버튼이 묘화된다. 이 처리를 반복적으로 수행함으로써, 다양한 사용자 인터페이스가 스크린에 실현될 수 있다.
(콘텐츠 묘화 처리(S605))
도 7은 단계 S605에서의 콘텐츠 묘화 처리의 세부 사항을 나타낸 흐름도이다. 단계 S701에서, 그래픽 묘화 제어 유닛(305)은 스크린 정보 관리 유닛(302)으로부터 콘텐츠가 묘화되는 스크린에 설정된 색 정보를 취득한다. 콘텐츠가 묘화되는 스크린에 설정된 색 정보는, 예컨대, 스크린의 배경색의 색 정보이다. 그래픽 묘화 제어 유닛(305)은 취득한 색 정보로부터 투과치의 존재/부재를 판별한다. 색 정보는, 예컨대, R, G 및 B 색 성분을 포함하며, 투과 처리의 대상인 색이면, 투과치(또는 알파 채널)를 더 포함한다. 스크린에 설정된 색이 투과치를 포함하지 않으면, 스크린에 묘화되는 콘텐츠에 대해 투과 처리가 불필요한 것으로 판단할 수 있다. 반면에, 색이 투과치를 포함하고 투과치가 0보다 크면(또는 불투과도가 1보다 작으면), 투과 처리가 필요하다. 따라서, 투과치가 0보다 큰 경우에는 처리가 단계 S702로 이행하고, 투과치가 없는 경우에는 단계 S703으로 이행한다. 단계 S702에서, GC 전환 유닛(304)은 GC 관리 유닛(303)에 대해 투과 GC를 취득하도록 요구한다. 취득된 투과 GC는 현재의 그래픽 콘텍스트로서 설정되며, 이 그래픽 콘텍스트에 스크린의 색 정보가 설정된다. 그래픽 콘텍스트는 이를 이용하여 묘화할 때 참조되므로, 투과 GC를 설정하면, 후속 묘화에서는 투과율을 가진 색으로 묘화된다. 단계 S701에서 취득된 색이 투과치를 포함하지만 그 값이 O이면(즉, 전혀 투과하지 않음), 투과 처리가 불필요한 것으로 판단할 수 있으며, 처리는 단계 S703으로 분지될 수 있다. 단계 S703에서, GC 전환 유닛(304)은 GC 관리 유닛(303)에 대해 불투과 GC를 취득하도록 요구한다. 취득된 불투과 GC는 현재의 그래픽 콘텍스트로서 설정되며, 이 그래픽 콘텍스트에 스크린의 색 정보가 설정된다. 단계 S704에서, 그래픽 묘화 제어 유닛(305)은 묘화되는 콘텐츠의 종류를 판별한다. 콘텐츠가 라인이면, 처리는 단계 S705로 이행하고, 문자이면, 단계 S706으로 이행하며, 화상이면, 단계 S707로 이행하고, 직사각형이면, 단계 S708로 이행하며, 점이면, 단계 S709로 이행한다. 단계 S705에서의 라인의 묘화와 단계 S706에서 문자의 묘화에 대해서는 이하에서 상세하게 후술하기로 한다. 단계 S707에서, 화상 묘화 유닛(308)은 가상 머신 리소스 관리 유닛(253)에 저장된 화상 오브젝트를 바이트코드 해석 유닛(251)을 통해 취득한다. 화상 묘화 유닛(308)은 취득된 화상 오브젝트로부터 화상 사이즈를 취득하고, 그래픽 라이브러리(211)에 대해 화상을 묘화하기 위한 버퍼를 확보하도록 요구한다. 화상 묘화 유닛(308)은 취득된 화상 버퍼를 네이티브 리소스 관리 유닛(256)에 일시 저장한다. 그 후, 화상 묘화 유닛(308)은 화상 오브젝트의 화소 데이터를 화상 버퍼에 저장하고, 그래픽 라이브러리(211)에 대해 현재의 그래픽 콘텍스트에 기초하여 화상 버퍼를 묘화하도록 요구한다. 단계 S708에서, 직사각형 묘화 유닛(309)은 그래픽 라이브러리(211)에 대해 현재의 그래픽 콘텍스트에 기초하여 직사각형을 묘화하도록 요구한다. 단계 S709에서, 점 묘화 유닛은 그래픽 라이브러리(211)에 대해 현재의 그래픽 콘텍스트에 기초하여 점을 묘화하도록 요구한다.
전술한 방식에서, 본 실시예에 따른 가상 머신(250)은 애플리케이션을 컴파일링하여 취득한 바이트코드를 가상 머신 리소스 관리 유닛(253)에 로딩하고, 바이트코드 해석 유닛(251)이 이들을 순차적으로 해석한다. 해석된 네이티브 커맨드에 기초하여, 네이티브 커맨드 제어 유닛(252)이 그래픽 처리 제어 유닛(254)에 대해 처리를 요구하고, 그래픽 처리 제어 유닛(254)이 그래픽 라이브러리(211)에 대해 묘화 요구를 전송하여, 조작 유닛(112)에서 묘화 처리를 실현한다. 묘화 처리의 과정에서, 스크린 색의 투과치의 존재/부재에 따라 그래픽 콘텍스트가 전환되며, 투과 처리의 존재/부재에 따라 그래픽 라이브러리(211)에 대해 콘텐츠를 묘화하도록 요구한다. 투과치가 없는 콘텐츠는 투과 비대응 그래픽 라이브러리(213)를 이용하여 묘화된다. 투과치가 없는 경우에는, 투과를 위한 묘화 처리가 실시되지 않으므로, 투과 대응 그래픽 라이브러리(212)를 이용하여 묘화를 실시하는 경우에 비해 묘화 시간을 단축할 수 있다. 이러한 효과는, GPU(130) 또는 그래픽 드라이버(215)가 투과 처리에 대응하지 않으면, 투과 대응 그래픽 라이브러리(212)가 프레임 버퍼 드라이버(216), 즉, CPU(101)를 이용하여 묘화를 실시해야하기 때문에, 더 현저해진다. 따라서, 가상 머신(250)에서와 같이, 투과 비대응 그래픽 라이브러리(213)를 이용하여 불필요한 투과 처리를 적절하게 생략할 수 있다. 이는 CPU(101)에 대한 부하를 경감하고, 화상 형성 장치의 성능을 향상시킬 수 있다.
(라인 묘화 처리(S705))
도 8은 라인 묘화 유닛(306)의 세부 사항을 나타낸 소프트웨어 블록도이다. 라인 묘화 제어 유닛(801)은 그래픽 묘화 제어 유닛(305)으로부터 콘텐츠 묘화 요구를 취득하며, 라인 종류 판정 유닛(804)의 결과에 기초하여 직선 묘화 요구 유닛(805) 또는 직사각형 묘화 요구 유닛(806)에 대해 콘텐츠를 묘화하도록 요구한다. 콘텐츠 기억 유닛(803)은 라인 묘화 제어 유닛(801)으로부터의 결과에 대응하여 콘텐츠를 저장한다. 라인 종류 판정 유닛(804)은 콘텐츠가 수직선 또는 수평선인지를 판별한다. 직선 묘화 요구 유닛(805)은 그래픽 라이브러리(211)에 대해 적선을 묘화하도록 요구한다. 직사각형 묘화 요구 유닛(806)은 그래픽 라이브러리(211)에 대해 폭이 1인 직사각형을 이용하여 수직선/수평선을 묘화하도록 요구한다.
도 9는 단계 S705에서의 라인 묘화 처리의 세부 사항을 나타낸 흐름도이다. 단계 S901에서, 라인 묘화 제어 유닛(801)은 콘텐츠에 포함된 직선을 형성하는 2개의 점(P1, P2)들의 정보를 콘텐츠 기억 유닛(803)에 P1x, P1y, P2x 및 P2y로서 저장한다. Px는 직교 좌표계에서 수평축인 x-축 상의 점(P)의 x-좌표를 나타내며, Py는 수직축인 y-축 상의 y-좌표를 나타낸다. 단계 S902에서, 라인 묘화 제어 유닛(801)은 라인 종류 판정 유닛(804)에 대해 2개의 점(P1, P2)들에 의해 정의된 선분이 수직선인지 수평선인지를 판정하도록 요구한다. 라인 종류 판정 유닛(804)은 P1x와 P2x가 동일한지를 판정한다. P1x와 P2x가 동일하면, 처리는 단계 S903으로 진행하고, 이들이 다르면, 단계 S906으로 진행한다. 단계 S903에서, 라인 종류 판정 유닛(804)은 P1y가 P2y와 동일한지 또는 그보다 더 큰지를 판정한다. P1y가 P2y와 동일하거나 그보다 더 크면, 처리는 단계 S904로 진행하고, P1y가 P2y보다 작으면, 처리는 단계 S905로 진행한다. 단계 S904에서, 라인 묘화 제어 유닛(801)은 직사각형 묘화 요구 유닛(806)에 대해 직사각형을 묘화하도록 요구한다. 요구를 수취하면, 직사각형 묘화 요구 유닛(806)은 스크린 정보 관리 유닛(302)으로부터 취득한 색 정보를 현재의 그래픽 콘텍스트에 설정하고, 현재의 그래픽 콘텍스트에 기초하여 그래픽 라이브러리(211)에 대해 횡폭이 1이고 종폭이 P1y-P2y+1인 직사각형을 묘화하도록 요구한다. 단계 S905에서, 라인 묘화 제어 유닛(801)은 직사각형 묘화 요구 유닛(806)에 대해 직사각형을 묘화하도록 요구한다. 요구를 수취하면, 직사각형 묘화 요구 유닛(806)은 스크린 정보 관리 유닛(302)으로부터 취득한 색 정보를 현재의 그래픽 콘텍스트에 설정하고, 현재의 그래픽 콘텍스트에 기초하여 그래픽 라이브러리(211)에 대해 횡폭이 1이고 종폭이 P2y-P1y+1인 직사각형을 묘화하도록 요구한다. 단계 S906에서, 라인 종류 판정 유닛(804)은 P1y와 P2y가 동일한지를 판정한다. P1y와 P2y가 동일하면, 처리는 단계 S907로 진행하고, 이들이 다르면, 단계 S910으로 진행한다. 단계 S907에서 P1x가 P2x와 동일하거나 그보다 더 크면, 처리는 단계 S908로 진행하고, P1x가 P2x보다 작으면, 처리는 단계 S909로 진행한다. 단계 S908에서, 라인 묘화 제어 유닛(801)은 직사각형 묘화 요구 유닛(806)에 대해 직사각형을 묘화하도록 요구한다. 요구를 수취하면, 직사각형 묘화 요구 유닛(806)은 스크린 정보 관리 유닛(302)으로부터 취득한 색 정보를 현재의 그래픽 콘텍스트에 설정하고, 현재의 그래픽 콘텍스트에 기초하여 그래픽 라이브러리(211)에 대해 횡폭이 P1x-P2x+1이고 종폭이 1인 직사각형을 묘화하도록 요구한다. 단계 S909에서, 라인 묘화 제어 유닛(801)은 직사각형 묘화 요구 유닛(806)에 대해 직사각형을 묘화하도록 요구한다. 요구를 수취하면, 직사각형 묘화 요구 유닛(806)은 스크린 정보 관리 유닛(302)으로부터 취득한 색 정보를 현재의 그래픽 콘텍스트에 설정하고, 현재의 그래픽 콘텍스트에 기초하여 그래픽 라이브러리(211)에 대해 횡폭이 P2x-P1x+1이고 종폭이 1인 직사각형을 묘화하도록 요구한다. 단계 S910에서, 라인 묘화 제어 유닛(801)은 직선 묘화 요구 유닛(805)에 대해 직선을 묘화하도록 요구한다. 요구를 수취하면, 직선 묘화 요구 유닛(805)은 스크린 정보 관리 유닛(302)으로부터 취득한 색 정보를 현재의 그래픽 콘텍스트에 설정하고, 현재의 그래픽 콘텍스트에 기초하여 그래픽 라이브러리(211)에 대해 P1과 P2를 연결하는 직선을 묘화하도록 요구한다.
직사각형 묘화 요구를 수취하면, 그래픽 라이브러리(211)는 윈도우 시스템(214)을 통해 설정에 대응하는 드라이버에 대해 묘화 요구를 발행한다. 본 실시예에서, 직사각형을 묘화하도록 요구받은 그래픽 라이브러리(211)가 그래픽 드라이버(215)에 대해 묘화를 요구한다. 이에 따라, GPU(130)가 도 9의 직사각형 묘화를 실행하며, 즉, 수평 또는 수직의 직선을 묘화한다. 본 실시예에서와 같이, 직선이 수직선 또는 수평선인 경우에만, 소정 값의 폭을 가진 직사각형의 묘화를 실시한다. 이는 래스터 라인에 대해 평행하거나 직교하는 직선(즉, 조작 패널의 표시 유닛의 변 또는 화소 어레이에 대해 평행한 직선)의 효율적인 묘화를 실현한다. 그 이유는 GPU(130)가 직사각형 묘화를 고속으로 실행할 수 있기 때문이다. 수직선과 수평선은 화상 형성 장치의 사용자 인터페이스의 직선을 90% 이상 형성한다. 따라서, 이 직선들의 묘화 속도가 고속화되면, 화상 표시마다 묘화 시간을 단축하는데 크게 기여한다.
본 실시예에서, 묘화되는 직선의 라인 폭은 1이다. 그러나, 그래픽 콘텍스트로부터 색뿐만 아니라 라인 폭도 취득할 수 있으며, 그 라인 폭을 단변의 길이로서 이용하고 지정된 라인의 길이를 장변의 길이로서 이용하여 직사각형을 묘화함(채움)으로써, 라인을 묘화할 수 있다.
(문자 묘화 처리(S705))
도 10은 문자 묘화 유닛(307)의 세부 사항을 나타낸 소프트웨어 블록도이다. 문자 묘화 제어 유닛(1001)은 그래픽 묘화 제어 유닛(305)으로부터 콘텐츠 묘화 요구를 취득하며, 폰트 데이터 해석 유닛(1002)에 대해 콘텐츠를 폰트 데이터로서 해석하도록 한다. 문자 묘화 제어 유닛(1001)은 문자 묘화 요구 유닛(1010)에 대해 폰트 데이터를 묘화하도록 요구한다. 폰트 데이터 해석 유닛(1002)은 콘텐츠를 판독하고, 이를 폰트 데이터로서 해석하여, 폰트 데이터를 폰트 데이터 기억 유닛(1003)에 저장한다. 콘텐츠를 폰트 데이터로서 해석한다는 것은, 콘텐츠가 문자 "A"인 경우, "A"를 스크린에 출력하기 위해, "A"를 전개된 화소의 세트(폰트 데이터)로서 인식한다는 의미이다. 문자 묘화 유닛(307)은 그래픽 라이브러리(211)에 대해 폰트 데이터 기억 유닛(1003)에 저장된 폰트 데이터를 묘화하도록 요구한다. 점 묘화 요구 유닛(1011)은 폰트 데이터를 형성하는 화소를 분석하여, 그래픽 라이브러리(211)에 대해 불투과 화소를 묘화하도록 요구한다.
도 11은 단계 S706에서의 문자 묘화 처리의 세부 사항을 나타낸 흐름도이다. 단계 S1101에서, 문자 묘화 제어 유닛(1001)은 폰트 데이터 해석 유닛(1002)에 대해 콘텐츠를 해석하도록 요구한다. 단계 S1102에서, 폰트 데이터 해석 유닛(1002)은 콘텐츠를 폰트 데이터로 변환한다. 단계 S1103에서, 문자 묘화 제어 유닛(1001)은 폰트 데이터의 모든 화소에 대해 단계 S1104 및 단계 S1105의 처리를 수행하기 위해 반복 제어를 실시한다. 단계 S1104에서, 문자 묘화 제어 유닛(1001)은 화소가 불투과인지를 판정한다. 화소가 불투과이면, 처리는 단계 S1105로 진행하고, 불투과가 아니면, 다음 화소로 처리를 이행하기 위해 단계 S1103으로 되돌아간다. 불투과 화소는 문자를 형성하며, 투과 화소는 문자의 배경 역할을 한다. 단계 S1105에서, 점 묘화 요구 유닛(1011)은 그래픽 라이브러리(211)에 대해 현재의 그래픽 콘텍스트에 기초하여 화소를 묘화하도록 요구한다. 그 결과, 문자 화상이 화상 메모리에 묘화되고, 문자를 포함한 화상이 조작 패널의 표시 유닛 상에 표시된다.
전술한 바와 같이, 투과 화소에 대한 묘화가 생략된다. 문자를 묘화하기 위해 이용되는 그래픽 엔진이 투과에 대응할 필요가 없으며, 그래픽 드라이버(215)와 GPU(130)가 투과에 대응하는지의 여부에 관계없이 GPU(130)를 이용하여 문자를 묘화할 수 있다.
<제 1 실시예의 작용 효과>
전술한 바와 같이, 가상 머신(250)은 애플리케이션을 컴파일링하여 취득한 바이트코드를 가상 머신 리소스 관리 유닛(253)에 로딩하고, 바이트코드 해석 유닛(251)이 이들을 순차적으로 해석한다. 해석된 네이티브 커맨드에 따라, 그래픽 처리 제어 유닛(254)이 그래픽 라이브러리(211)에 대해 묘화 요구를 전송하여, 조작 유닛(112)에서 묘화 처리를 실현한다. 묘화 처리의 과정에서, 스크린의 투과치에 따라 그래픽 콘텍스트가 전환되며, 적절한 그래픽 라이브러리(211)에 대해 콘텐츠를 묘화하도록 요구한다. 투과치가 없는 콘텐츠는 투과 비대응 그래픽 라이브러리(213)를 이용하여 묘화된다. 이는, 콘텐츠가 투과치를 갖지 않는 경우에도 항상 투과치를 고려하여 묘화 처리를 실시하는 투과 대응 그래픽 라이브러리(212)를 이용하여 묘화를 실시하는 경우에 비해 묘화 시간을 단축할 수 있다. 그 이유는 GPU(130)가 투과 처리에 대응하지 않거나, GPU(130)는 투과 처리에 대응하지만 그래픽 드라이버(215)가 투과 처리에 대응하지 않으면, GPU(130)를 이용하여 투과 처리를 고속으로 실시할 수 없기 때문이다. 또한, 윈도우 시스템(214)이 투과 처리에 대응하는 묘화 커맨드를 그래픽 드라이버(215)에 발행하는 메커니즘을 이용하지 않으면, GPU(130)의 혜택을 수취할 수 없다. 윈도우 시스템(214) 상에서의 동작을 상정한 그래픽 라이브러리(211)는 CPU(101)를 이용하여 투과 처리를 실시한다. 이러한 이유로, 가상 머신(250)은 투과 대응 그래픽 라이브러리(212)를 이용하여 불필요한 투과 처리를 적절하게 생략한다. 이는 CPU(101)에 대한 부하를 경감하고, 화상 형성 장치의 성능을 향상시킨다.
가상 머신(250)에서, 라인 묘화 유닛(306)은 그래픽 라이브러리(211)에 대해 라인을 형성하는 2개의 점들 사이의 위치 관계에 따라 직선 또는 직사각형을 묘화하도록 요구한다. 직선의 묘화에는 직선의 기울기에 기초한 래스터화가 필요하다. 그러나, 래스터화는 전술한 바와 같이 GPU(130)를 이용하여 항상 실시될 수는 없으며, 그래픽 라이브러리(211)가 CPU를 이용하여 계산을 실행할 수 있다. 이 경우, 직선이 수직선 또는 수평선인 경우에도, 래스터화가 일반적인 직선과 동일하게 실시될 가능성이 높다. 이러한 가능성을 배제하기 위해서, 조건 판정의 오버헤드가 증대된다. 이에 따라, 본 실시예에서와 같이, 직선이 수직선 또는 수평선인 경우에만 폭이 1인 직사각형을 묘화함으로써, 래스터화의 부하를 저감할 수 있다. 직사각형 묘화와 관련하여, 그래픽 라이브러리(211)는 많은 경우들에서 GPU(130)를 이용할 수 있다. 또한, 수직선과 수평선은 화상 형성 장치의 사용자 인터페이스의 직선을 90% 이상 형성한다. 따라서, 이 직선들의 묘화 속도가 고속화되면, 사용자 친화성을 크게 향상시킨다.
[제 2 실시예]
제 2 실시예에서는 문자의 묘화에 대해 특별히 설명한다. 제 2 실시예는 GPU(130)와 그래픽 드라이버(215)가 투과 처리에 대응하는 것을 전제한다. 제 1 실시예에서는 문자 묘화 요구 유닛(1010)이 점 묘화 요구 유닛(1011)을 이용하여 조작 유닛(112)에 문자를 묘화한다. 그러나, 그래픽 라이브러리(211)가 GPU(130)를 이용할 수 있는 경우, 점 묘화는 각 화소에 대해 GPU(130)를 호출하는 처리이다. 문자에 포함된 불투과 화소의 수가 증대될수록, CPU(101)와 GPU(130) 간의 통신량이 증대되고, 사용자에 대한 응답 속도가 저하된다. 점 묘화에서 오버헤드를 억제하기 위한 실시예에 대해 설명한다. 도면에 표시된 구성 요소의 참조번호와 단계가 제 1 실시예와 동일한 것들은 동일한 기능과 처리를 지시하므로, 그 설명을 반복하지 않는다.
도 12는 제 2 실시예에 따른 문자 묘화 유닛(307)의 세부 사항을 나타낸 소프트웨어 블록도이다. 도 10과의 차이는, 문자 묘화 요구 유닛(1010)이 점 묘화 요구 유닛(1011)이 아닌 폰트 화상 묘화 요구 유닛(1201)을 포함한다는 것이다. 폰트 화상 묘화 요구 유닛(1201)은 화상 버퍼에서 폰트 데이터를 변환하고, 그래픽 라이브러리(211)에 대해 문자를 화상으로서 묘화하도록 요구한다.
도 13은 제 2 실시예에 따른 문자 묘화 처리의 세부 사항을 나타낸 흐름도이다. 단계 S1301에서, 문자 묘화 제어 유닛(1001)은 그래픽 라이브러리(211)에 대해 폰트 데이터로부터 취득한 포트 사이즈에 기초하여 폰트 데이터를 저장하기 위한 화상 버퍼를 확보하도록 요구한다. 문자 묘화 제어 유닛(1001)은 취득된 화상 버퍼를 네이티브 리소스 관리 유닛(256)에 저장한다. 문자 묘화 제어 유닛(1001)은 스크린 정보 관리 유닛(302)으로부터 색 정보를 취득하고, 폰트 데이터의 불투과 화소와 취득된 색이 할당되는 데이터를 화상 버퍼에 보존한다. 단계 S1302에서, 폰트 화상 묘화 요구 유닛(1201)은 그래픽 라이브러리(211)에 대해 현재의 그래픽 콘텍스트에 기초하여 화상 버퍼를 묘화하도록 요구한다.
제 2 실시예에 따른 가상 머신(250)은 폰트 화상 묘화 요구 유닛(1201)을 이용하여 문자를 화상으로서 묘화한다. 문자를 화상으로서 묘화하는 경우, 문자를 점으로서 묘화하는 경우에 비해, GPU(130)를 이용하는 회수가 감소되므로, 오버헤드를 저감할 수 있다. CPU(101)를 이용하여 화상 버퍼에 폰트 데이터를 저장하는 처리가 더 자주 실시된다. 그러나, 폰트 데이터가 많은 불투과 화소를 포함하는 경우에는, GPU(130)의 저감된 오버헤드로 인하여 문자 묘화 처리의 속도가 증가한다. 특히, 화상 형성 장치의 사용자 인터페이스에 있어서, 1개의 화면에 평균적으로 약 200개의 문자가 있고, 불투과 화소의 수가 10,000개를 초과하므로, 점 묘화 요구 유닛(1011)에 의한 묘화는 GPU(130)를 10,000회 이상 호출한다. 반면에, 폰트 화상 묘화 요구 유닛(1201)에 의한 묘화는 약 200회로 억제된다. 이는 사용자의 체감 속도 향상에 기여한다.
[제 3 실시예]
제 2 실시예는 모든 문자를 화상으로서 묘화하여 고속 문자 묘화 처리를 실현한다. 그러나, "," 또는 "'"와 같이 불투과 화소의 수가 적은 폰트 데이터도 화상으로서 묘화된다. 불투과 화소의 수가 적으면, CPU(101)에 의한 화상 버퍼의 생성과 GPU(130)를 이용한 화상 묘화의 처리 시간이 GPU(130)의 오버헤드를 초과할 수 있다. 화상 묘화에서 오버헤드를 억제하기 위한 실시예에 대해 설명한다. 도면에 표시된 구성 요소의 참조번호와 단계가 제 1 및 제 2 실시예와 동일한 것들은 동일한 기능과 처리를 지시하므로, 그 설명을 반복하지 않는다.
도 14는 문자 묘화 유닛(307)의 세부 사항을 나타낸 소프트웨어 블록도이다. 도 10 및 도 12와의 차이는, 문자 묘화 요구 유닛(1010)이 점 묘화 요구 유닛(1011)과 폰트 화상 묘화 요구 유닛(1201)을 모두 포함하고, 문자 묘화 방법 판정 유닛(1401)과 임계값 저장 유닛(1402)도 포함한다는 것이다. 문자 묘화 방법 판정 유닛(1401)은 폰트 데이터에 포함된 불투과 화소의 수와 임계값 저장 유닛(1402)으로부터 취득한 임계값을 비교하고, 문자 묘화를 위해 점 묘화와 화상 묘화 중 어느 것을 이용할 것인지를 판정한다. 임계값 저장 유닛(1402)은, 가상 머신(250)의 기동시 지정된 파라미터, 외부 파일로부터 취득한 수치 또는 화상 형성 장치에 대응하는 적절한 수치를 저장한다는 것을 유의하여야 한다. 예컨대, 실험적으로 또는 GPU(130)의 처리 능력을 고려하여, 문자가 화상으로서 묘화되는 경우와 문자가 각 화소에 대해 처리되는 경우에서 처리 시간이 동일해지는 화소의 수를 결정한다. 결정된 화소의 수를 임계값으로서 설정한다.
도 15는 제 3 실시예에 따른 문자 묘화 처리의 세부 사항을 나타낸 흐름도이다. 단계 S1501에서, 문자 묘화 방법 판정 유닛(1401)은 폰트 데이터의 불투과 화소의 수를 카운트한다. 단계 S1502에서, 문자 묘화 방법 판정 유닛(1401)은 불투과 화소의 수와 임계값 저장 유닛(1402)으로부터 취득한 임계값을 비교한다. 불투과 화소의 수를 카운팅하면서, 불투과 화소의 수를 임계값과 비교할 수 있음을 유의하여야 한다. 이는 임계값이 작을 경우에 종종 효율적이다. 불투과 화소의 수가 임계값과 동일하거나 그보다 작으면, 처리는 점 묘화를 실시하기 위해 단계 S1103으로 이행하고, 그렇지 않으면, 화상 묘화를 실시하기 위해 단계 S1301로 이행한다.
제 3 실시예에 따른 가상 머신(250)에서는, 문자 묘화 방법 판정 유닛(1401)이 임계값에 기초하여 문자 묘화 방법을 변경한다. 전체 문자를 화상으로서 묘화하는 처리 시간이, 불투과 화소의 수가 작기 때문에 점으로 묘화하는 처리 시간보다 더 긴 경우에, 점 묘화를 실시한다. 그 결과, 문자 묘화 시간이 단축된다.
[제 4 실시예]
제 3 실시예에서는 임계값에 기초하여 문자 묘화 방법이 전환된다. 일반적으로, 가상 머신(250)은 복수의 폰트 사이즈를 지원한다. 폰트 사이즈에 대응하는 임계값이 주어지지 않으면, 묘화 방법을 적절하게 전환할 수 없다. 이는 복수 종류의 폰트 사이즈가 있는 경우, 모든 사이즈에 대해 적절한 임계값을 계산하여야만 한다는 것을 의미한다. 이는 성능 조절을 위한 작업 공수를 증대시킨다. 복수의 폰트 사이즈를 지원하는 가상 머신(250)에서 문자 묘화 전환 방법에 대해 설명한다. 도면에 표시된 구성 요소의 참조번호와 단계가 제 1, 제 2 및 제 3 실시예와 동일한 것들은 동일한 기능과 처리를 지시하므로, 그 설명을 반복하지 않는다.
도 16은 문자 묘화 유닛(307)의 세부 사항을 나타낸 소프트웨어 블록도이다. 도 14와의 차이는, 문자 묘화 요구 유닛(1010)이 임계값 저장 유닛(1402)이 아닌 묘화 시간 예측 유닛(1601)을 포함한다는 것이다. 묘화 시간 예측 유닛(1601)은 1개의 점의 묘화에 필요한 처리 시간과 불투과 화소의 수로부터 점 묘화에 필요한 처리 시간을 점 묘화 처리 시간 예측값으로서 구하는 기능을 갖는다. 또한, 묘화 시간 예측 유닛(1601)은 폰트 사이즈로부터 화상 묘화에 필요한 처리 시간을 폰트 화상 묘화 시간 예측값으로서 구하는 기능을 갖는다.
도 17은 제 4 실시예에 따른 문자 묘화 처리의 세부 사항을 나타낸 흐름도이다. 단계 S1701에서, 묘화 시간 예측 유닛(1601)은 폰트 데이터로부터 불투과 화소의 수를 취득하고, 불투과 화소의 수로부터 점 묘화 처리 시간의 예측값을 취득한다. 단계 S1702에서, 묘화 시간 예측 유닛(1601)은 폰트 사이즈로부터 폰트 화상 묘화 처리 시간의 예측값을 취득한다. 단계 S1703에서, 문자 묘화 방법 판정 유닛(1401)이, 점 묘화 처리 시간의 예측값이 폰트 화상 묘화 시간의 예측값과 동일하거나 그보다 작은 것으로 판정하면, 처리는 점 묘화를 실시하기 위해 단계 S1103으로 이행하고, 그렇지 않으면, 화상 묘화를 실시하기 위해 단계 S1301로 이행한다.
제 4 실시예에 따른 가상 머신(250)에서는, 묘화 시간 예측 유닛(1601)이 폰트 사이즈와 불투과 화소의 수로부터 점 묘화 처리 시간의 예측값과 폰트 화상 묘화 시간의 예측값을 취득한다. 이 예측값들에 기초하여, 문자 묘화 방법 판정 유닛(1401)이 문자 묘화 방법을 변경한다. 사전에 1개의 점의 묘화에 필요한 처리 시간을 예측하고 폰트 사이즈로부터 화상을 묘화하기 위해 필요한 처리 시간을 예측하기 위한 계산식을 구하면, 각 폰트 사이즈마다 임계값을 구하지 않고 적절한 묘화 방법을 선택할 수 있다. 이에 따라, 성능 조절을 위한 작업 공수를 저감하여 문자 묘화 시간을 단축할 수 있다.
[변형예]
제 4 실시예에서와 같이 필요 시간을 예측하면, 예측 처리 자체의 오버헤드가 발생한다. 이를 감안하여, 다음과 같은 구성을 채용할 수도 있다. 예컨대, 도 17의 단계 S1101 내지 단계 S1703의 처리가 미리 실시되어, 각각의 문자 코드와 각각의 사이즈에 대해 화소 단위 처리와 화상 처리 중 어느 처리를 실시할 것인지를 결정한다. 결정 결과를 문자 코드와 사이즈에 따라 보존한다. 묘화시, 처리는 단계 S1101 및 단계 S1102 이후에 단계 S1703으로 진행한다. 처리는 단계 S1703에서 판정 기준으로서 이용된 보존된 결정 결과에 기초하여 단계 S1103 또는 단계 S1301로 분지된다.
[다른 실시예]
본 발명의 양태들은, 전술한 실시예(들)의 기능들을 수행하기 위해 메모리 디바이스에 기록된 프로그램을 판독하고 실행시키는 시스템 또는 장치의 컴퓨터(또는 CPU 또는 MPU와 같은 디바이스들)에 의해, 및 전술한 실시예(들)의 기능들을 수행하기 위해 메모리 디바이스에 기록된 프로그램을, 예컨대, 판독하고 실행시킴으로써, 시스템 또는 장치의 컴퓨터에 의해 단계들이 실시되는 방법에 의해, 실현될 수도 있다. 이 목적을 위해, 예컨대, 네트워크를 통해, 또는 메모리 디바이스와 같은 역할을 하는 다양한 종류의 기록 매체(예컨대, 컴퓨터 판독가능한 매체)로부터, 프로그램이 컴퓨터에 제공된다.
예시적인 실시예들을 참조하여 본 발명을 설명하였으나, 본 발명은 개시된 예시적 실시예들에 한정되지 않음을 이해하여야 한다. 하기된 특허청구범위는 그러한 변형들과 등가의 구조들과 기능들을 모두 포함하도록 최광의로 해석되어야 한다.

Claims (15)

  1. 표시 수단을 포함하는 화상 형성 장치로서,
    상기 표시 수단에 의해 표시되는 화상을 묘화하는 그래픽 프로세서를 이용하는 그래픽 드라이버와,
    API를 통한 처리 요구에 따라 상기 그래픽 드라이버에 대해 묘화 요구를 발행하는 그래픽 라이브러리와,
    미리 정해진 프로그래밍 언어로 기술된 프로그램을 실행시키는 가상 머신 수단으로서, 상기 가상 머신 수단은 실행되는 상기 프로그램에 따라 상기 API를 통해 상기 그래픽 라이브러리에 대해 처리 요구를 발행하여 처리를 실시하는 가상 머신 수단을 포함하며,
    상기 가상 머신 수단은, 상기 프로그램을 실행하여 묘화를 실시하는 경우에, 프레임 버퍼 내의 화상 데이터의 색이 투과치를 포함하는지의 여부를 판정하고, 상기 색이 투과치를 포함하는 경우에, 상기 그래픽 라이브러리로서 투과 처리 대응 그래픽 라이브러리를 선택하여 상기 그래픽 라이브러리에 대해 묘화 처리 요구를 발행하고, 상기 색이 투과치를 포함하지 않는 경우에, 상기 그래픽 라이브러리로서 투과 처리 비대응 그래픽 라이브러리를 선택하여 상기 그래픽 라이브러리에 대해 묘화 처리 요구를 발행하는, 화상 형성 장치.
  2. 제1항에 있어서,
    상기 투과 처리 대응 그래픽 라이브러리는 상기 그래픽 드라이버에 대해 투과 처리를 수반한 묘화 요구를 발행하고, 상기 투과 처리 비대응 그래픽 라이브러리는 상기 그래픽 드라이버에 대해 투과 처리를 수반하지 않는 묘화 요구를 발행하는, 화상 형성 장치.
  3. 제1항에 있어서,
    상기 그래픽 프로세서를 이용하지 않고 상기 표시 수단에 의해 표시되는 화상을 묘화하도록 구성된 프레임 버퍼 드라이버를 더 포함하고,
    상기 그래픽 라이브러리는, 상기 그래픽 프로세서가 대응하지 않는 묘화 처리에 대하여, 상기 그래픽 드라이버 대신 상기 프레임 버퍼 드라이버에 대해 묘화 요구를 발행하는, 화상 형성 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 가상 머신 수단은, 상기 프로그램을 실행하여 래스터 라인에 대해 평행하거나 직교하는 직선을 묘화하는 경우에, 상기 직선의 폭을 단변의 길이로 하고 상기 직선의 길이를 장변의 길이로 하는 직사각형 영역을 채우는 묘화 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  5. 제4항에 있어서,
    상기 직선의 폭은 미리 정해진 값이거나 상기 가상 머신 수단에 의해 생성된 그래픽 콘텍스트에 포함된 라인 폭의 값을 갖는, 화상 형성 장치.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 가상 머신 수단은, 상기 프로그램을 실행하여 문자를 묘화하는 경우에, 상기 문자에 대응한 문자 화상을 생성하고, 상기 문자 화상에서 문자를 형성하는 화소들을 각각의 화소에 대해 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  7. 제6항에 있어서,
    상기 가상 머신 수단은, 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 각 화소에 대한 묘화 처리 요구를 발행하지 않고 상기 문자 화상을 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  8. 제6항에 있어서,
    상기 가상 머신 수단은, 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 상기 문자 화상에서 문자를 형성하는 화소의 수를 임계값과 비교하여, 상기 문자를 형성하는 화소의 수가 상기 임계값보다 크지 않으면, 상기 그래픽 라이브러리에 대해 각 화소에 대한 묘화 처리 요구를 발행하고, 상기 문자를 형성하는 화소의 수가 상기 임계값을 초과하면, 각 화소에 대한 묘화 처리 요구를 발행하지 않고 상기 문자 화상을 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  9. 제6항에 있어서,
    상기 가상 머신 수단은, 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 상기 그래픽 라이브러리에 대해 각 화소에 대한 묘화 처리 요구를 발행하는 경우의 처리 시간의 예측값과, 각 화소에 대한 묘화 처리 요구를 발행하지 않고 상기 문자 화상을 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는 경우의 처리 시간의 예측값을 취득하여 비교하고, 상기 그래픽 라이브러리에 대해 예측값이 더 작은 처리 요구를 발행하는, 화상 형성 장치.
  10. 표시 수단을 포함하는 화상 형성 장치로서,
    상기 표시 수단에 의해 표시되는 화상을 묘화하는 그래픽 프로세서를 이용하는 그래픽 드라이버와,
    API를 통한 처리 요구에 따라 상기 그래픽 드라이버에 대해 묘화 요구를 발행하는 그래픽 라이브러리와,
    미리 정해진 프로그래밍 언어로 기술된 프로그램을 실행시키는 가상 머신 수단으로서, 상기 가상 머신 수단은 실행되는 상기 프로그램에 따라 상기 API를 통해 상기 그래픽 라이브러리에 대해 처리 요구를 발행하여 처리를 실시하는 가상 머신 수단을 포함하며,
    상기 가상 머신 수단은, 상기 프로그램을 실행하여 래스터 라인에 대해 평행하거나 직교하는 직선을 묘화하는 경우에, 상기 직선의 폭을 단변의 길이로 하고 상기 직선의 길이를 장변의 길이로 하는 직사각형 영역을 채우는 묘화 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  11. 제10항에 있어서,
    상기 직선의 폭은 미리 정해진 값이거나 상기 가상 머신 수단에 의해 생성된 그래픽 콘텍스트에 포함된 라인 폭의 값을 갖는, 화상 형성 장치.
  12. 표시 수단을 포함하는 화상 형성 장치로서,
    상기 표시 수단에 의해 표시되는 화상을 묘화하는 그래픽 프로세서를 이용하는 그래픽 드라이버와,
    API를 통한 처리 요구에 따라 상기 그래픽 드라이버에 대해 묘화 요구를 발행하는 그래픽 라이브러리와,
    미리 정해진 프로그래밍 언어로 기술된 프로그램을 실행시키는 가상 머신 수단으로서, 상기 가상 머신 수단은 실행되는 상기 프로그램에 따라 상기 API를 통해 상기 그래픽 라이브러리에 대해 처리 요구를 발행하여 처리를 실시하는 가상 머신 수단을 포함하며,
    상기 가상 머신 수단은, 상기 프로그램을 실행하여 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 상기 문자 화상에서 문자를 형성하는 화소들을 각각의 화소에 대해 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  13. 제12항에 있어서,
    상기 가상 머신 수단은, 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 각 화소에 대한 묘화 처리 요구를 발행하지 않고 상기 문자 화상을 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  14. 제12항에 있어서,
    상기 가상 머신 수단은, 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 상기 문자 화상에서 문자를 형성하는 화소의 수를 임계값과 비교하여, 상기 문자를 형성하는 화소의 수가 상기 임계값보다 크지 않으면, 상기 그래픽 라이브러리에 대해 각 화소에 대한 묘화 처리 요구를 발행하고, 상기 문자를 형성하는 화소의 수가 상기 임계값을 초과하면, 각 화소에 대한 묘화 처리 요구를 발행하지 않고 상기 문자 화상을 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는, 화상 형성 장치.
  15. 제12항에 있어서,
    상기 가상 머신 수단은, 문자를 묘화하는 경우에, 상기 문자에 대응하는 문자 화상을 생성하고, 상기 그래픽 라이브러리에 대해 각 화소에 대한 묘화 처리 요구를 발행하는 경우의 처리 시간의 예측값과, 각 화소에 대한 묘화 처리 요구를 발행하지 않고 상기 문자 화상을 묘화하는 처리 요구를 상기 그래픽 라이브러리에 대해 발행하는 경우의 처리 시간의 예측값을 취득하여 비교하고, 상기 그래픽 라이브러리에 대해 예측값이 더 작은 처리 요구를 발행하는, 화상 형성 장치.
KR1020130085094A 2012-07-27 2013-07-19 화상 형성 장치 KR101571595B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012167648A JP5955148B2 (ja) 2012-07-27 2012-07-27 画像形成装置及び仮想マシンプログラム
JPJP-P-2012-167648 2012-07-27

Publications (2)

Publication Number Publication Date
KR20140013949A true KR20140013949A (ko) 2014-02-05
KR101571595B1 KR101571595B1 (ko) 2015-11-24

Family

ID=49994597

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130085094A KR101571595B1 (ko) 2012-07-27 2013-07-19 화상 형성 장치

Country Status (3)

Country Link
US (1) US8860957B2 (ko)
JP (1) JP5955148B2 (ko)
KR (1) KR101571595B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677858B (zh) * 2012-08-30 2019-09-10 南京中兴新软件有限责任公司 一种云环境中虚拟机软件管理的方法、***及设备
US10127062B2 (en) * 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
JP6494249B2 (ja) * 2014-11-12 2019-04-03 キヤノン株式会社 画像形成装置、画像形成方法、プログラム
JP6771874B2 (ja) * 2015-09-16 2020-10-21 キヤノン株式会社 情報処理装置、その制御方法及びプログラム
JP6700848B2 (ja) * 2016-02-23 2020-05-27 キヤノン株式会社 管理システム、制御方法
JP6812141B2 (ja) * 2016-05-31 2021-01-13 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
KR102671404B1 (ko) 2016-12-12 2024-05-31 삼성전자주식회사 모션 기반 영상을 처리하는 방법 및 장치
US10679314B2 (en) 2017-03-15 2020-06-09 Microsoft Technology Licensing, Llc Techniques for reducing perceptible delay in rendering graphics
KR20210009515A (ko) * 2019-07-17 2021-01-27 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 사용자 정의 서비스 관리
JP7277423B2 (ja) * 2020-09-14 2023-05-19 キヤノン株式会社 アプリケーション実行装置及びその制御方法、並びにプログラム
CN116450363B (zh) * 2023-06-13 2023-11-14 荣耀终端有限公司 一种资源调度方法及电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2606486B2 (ja) * 1991-06-24 1997-05-07 ブラザー工業株式会社 描画装置
US5751289A (en) * 1992-10-01 1998-05-12 University Corporation For Atmospheric Research Virtual reality imaging system with image replay
EP1232434B1 (en) * 1999-09-27 2005-08-24 THOMSON Licensing S.A. Windowing systems
JP2001117750A (ja) * 1999-10-22 2001-04-27 Hitachi Ltd 表示制御装置および表示方法
JP2005165160A (ja) * 2003-12-05 2005-06-23 Yutaka Wada スケーラブルフォントの作成方法および表示方法
JP2006171274A (ja) 2004-12-15 2006-06-29 Matsushita Electric Ind Co Ltd アプリケーション描画端末、アプリケーション描画の表示方法およびアプリケーション描画プログラム
JP2006289851A (ja) * 2005-04-13 2006-10-26 Canon Inc 画像形成装置及び画像形成方法
US20070253006A1 (en) * 2006-04-27 2007-11-01 Xerox Corporation Print user interface
US8149242B2 (en) * 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
US8266618B2 (en) * 2008-11-21 2012-09-11 International Business Machines Corporation Graphics hardware resource usage in a fully virtualized computing environment
US8966477B2 (en) * 2011-04-18 2015-02-24 Intel Corporation Combined virtual graphics device

Also Published As

Publication number Publication date
US20140029029A1 (en) 2014-01-30
JP2014026541A (ja) 2014-02-06
KR101571595B1 (ko) 2015-11-24
US8860957B2 (en) 2014-10-14
JP5955148B2 (ja) 2016-07-20

Similar Documents

Publication Publication Date Title
KR101571595B1 (ko) 화상 형성 장치
JP6569415B2 (ja) 表示入力装置、画像形成装置及び電子機器と表示制御方法並びにプログラム
US8937590B2 (en) Information processing apparatus and pointing control method
US8422105B2 (en) Image forming apparatus including a display apparatus having a memory cofigured to retain settings concerning components forming a display component, a display control method, and a computer-readable recording medium thereof
EP2562637B1 (en) Information processing apparatus that carries out remote operation, control method therefor, and storage medium
US20030210267A1 (en) Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment
JP4450013B2 (ja) 画像形成装置
US20140240740A1 (en) Systems and methods of displaying a printer driver user interface
JP2013077284A (ja) 情報処理装置及びプログラム、制御方法
JP2011019130A (ja) 画像処理装置、表示制御方法、及び表示制御プログラム
WO2016181436A1 (ja) 画像出力制御方法、画像出力制御プログラム及び表示装置
US7212210B2 (en) Method and apparatus for enlarging an output display on a display
US20150007106A1 (en) Information processing apparatus
US20140165011A1 (en) Information processing apparatus
JP2000089892A (ja) 表示制御装置、表示制御方法及び記憶媒体
JP6250110B2 (ja) 情報処理装置、その方法およびプログラム
JP4900955B2 (ja) 遠隔操作システム、制御方法及びプログラム
JP2018022370A (ja) アプリケーション実行装置及びその制御方法、並びにプログラム
JP6004790B2 (ja) 情報処理装置、その方法およびプログラム
JP7277423B2 (ja) アプリケーション実行装置及びその制御方法、並びにプログラム
KR101423234B1 (ko) 전자칠판용 판서프로그램의 메뉴버튼 생성 및 실시간 크기 변환방법
CN110851066B (zh) 一种支持多显示屏触控的方法和装置
US20190187857A1 (en) Touch panel sharing support apparatus, touch panel sharing method, and computer program
JP2016038808A (ja) 情報処理装置、情報処理方法、コンピュータプログラム
JP2023171144A (ja) 情報処理装置、情報処理方法及びプログラム

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: 20191106

Year of fee payment: 5