JP6138088B2 - 情報処理装置、制御方法、及びソフトウェアプログラム - Google Patents

情報処理装置、制御方法、及びソフトウェアプログラム Download PDF

Info

Publication number
JP6138088B2
JP6138088B2 JP2014135175A JP2014135175A JP6138088B2 JP 6138088 B2 JP6138088 B2 JP 6138088B2 JP 2014135175 A JP2014135175 A JP 2014135175A JP 2014135175 A JP2014135175 A JP 2014135175A JP 6138088 B2 JP6138088 B2 JP 6138088B2
Authority
JP
Japan
Prior art keywords
program layer
layer
information
program
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2014135175A
Other languages
English (en)
Other versions
JP2016014917A (ja
Inventor
寛康 國枝
寛康 國枝
尚紀 鷲見
尚紀 鷲見
鈴木 智博
智博 鈴木
梅田 清
清 梅田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2014135175A priority Critical patent/JP6138088B2/ja
Priority to US14/740,752 priority patent/US9671981B2/en
Publication of JP2016014917A publication Critical patent/JP2016014917A/ja
Priority to US15/496,201 priority patent/US10146484B2/en
Application granted granted Critical
Publication of JP6138088B2 publication Critical patent/JP6138088B2/ja
Priority to US16/166,570 priority patent/US10712978B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1206Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1207Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/1232Transmitting printer device capabilities, e.g. upon request or periodically
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1245Job translation or job parsing, e.g. page banding by conversion to intermediate or common format
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1259Print job monitoring, e.g. job status
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1288Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1292Mobile client, e.g. wireless printing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、情報処理技術に関するものである。
モバイルコンピュータは、基本的には3つの要素で成り立っている。即ち、コンピュータ自身であるハードウェアと、該ハードウェア上で動作するオペレーティングシステム(以下、OS)と、該OS上で動作するアプリケーションである。ユーザは、該アプリケーションを用いて、地図やメール、インターネット上のウェブサイトの閲覧等の機能を使用することが可能である。
このようなモバイルコンピュータ上で動作するアプリケーションの形態としては、主に二つのものが存在する。即ち、ネイティブアプリケーションとウェブアプリケーションである。以下、それぞれの特徴を説明する。
まず、ネイティブアプリケーションとは、通常、OS毎に用意される開発環境、及び開発言語を用いて開発される。例えば、A社が提供するOS上ではC/C++言語、B社が提供するOS上ではJava(登録商標)言語、C社が提供するOS上では更に異なる開発言語を用いる、という具合である。通常、ネイティブアプリケーションは、各開発環境において予めコンパイルされ、人間が理解可能ないわゆる高水準言語から、コンピュータのCPUが解釈可能なアセンブラ等の命令セット群に変換される。このように、通常のネイティブアプリケーションでは、命令をCPUが直接解釈するために、高速動作が可能である、というメリットが存在する。
一方、ウェブアプリケーションとは、近年では、各コンピュータ上のOSに標準的に組み込まれているウェブブラウザ上で動作するアプリケーションのことである。アプリケーションはウェブブラウザが解釈できるよう、一般的には、HTML5及びCSS、さらにJavaScript(登録商標)等の言語を用いて開発される。これらはウェブ標準言語であるため、これらのウェブ標準言語でウェブアプリケーションを一旦記述すれば、ウェブブラウザが動作する環境であれば、どこでも動作可能というメリットが存在する。
近年では、このようなモバイルコンピュータの普及とともに、OSの種類も多種多様なものとなっている。そのため、それらの上で動作するアプリケーションを如何に短期間で開発して、ユーザにスピーディに提供できるかがソフトウェア開発において重要になってきている。
このようなソフトウェア開発においては、クロス開発と呼ばれる手法が存在する。クロス開発とは、アプリケーションの大部分を、各種OSに横断的に利用できる共通プログラム言語を用いて開発を行うことである。共通であるため、各OSで個別に開発するための工数が不要となり、有効な開発手法として知られている。
ウェブアプリケーションは、このような各種OSに横断的に利用できる共通プログラム言語を用いて開発されるソフトウェアの1つである。しかし、ウェブアプリケーションは、ブラウザ上で動作するため、ネイティブアプリケーションとして各ベンダーが運営するアプリケーションストア等のウェブサイトから配布することができない。多くの開発者は、ウェブサイトから配布可能なネイティブアプリケーション形式におけるクロス開発手法を求めている。
そして、このような配布可能なソフトウェアにおけるクロス開発手法の一つとして、特許文献1に記載されるハイブリッドアプリケーションが注目されている。ハイブリッドアプリケーションとは、アプリケーション自身は、ネイティブアプリケーションとしてユーザに配布される。しかし、そのユーザインターフェース(UI)の全て、あるいは大部分は、HTML5、CSS3、JavaScript等のウェブ標準言語で記述されていることが特徴となっている。即ち、一つのアプリケーション内部に、ウェブ標準言語によるスクリプト層とネイティブ層の双方を包含する構成となっている。このような構成を取ることにより、ネイティブアプリケーションとウェブアプリケーションの利点を双方保持したソフトウェア構成とすることができる。
特開2013−80470号公報
ウェブアプリケーションでは、全ての処理をスクリプト層で実行するため、処理負荷の大きい画像処理等の処理を実行する場合、処理時間がかかってしまう。そのため、ハイブリッドアプリケーションの構成において、画像処理を高速動作可能なネイティブ層に切り分けて実行させることにより、処理時間を短縮することができる。
しかしながら、スクリプト層とネイティブ層では利用している記述言語が異なるため、スクリプト層とネイティブ層の画像処理に関するやり取りを直接通信することができない。そのため、ネイティブ層における処理状況等の状態がスクリプト層に通知されないため、ユーザに処理の進捗状況を通知できないおそれがあった。
本発明は上記の課題を解決するためになされたものであり、より柔軟かつ利便性の高い装置の使用環境を提供することを目的とする。
上記の目的を達成するための本発明による装置の構成は以下の構成を備える。即ち、プロセッサで翻訳され実行されるための命令セットを含む第1のプログラム層と、前記プロセッサ以外で予め翻訳された命令セットを含み且つ印刷装置と通信可能な第2のプログラム層と、を包含するアプリケーションソフトウェアプログラムを実行可能なコンピュータに、
画像処理の対象となる対象画像の選択指示を受け付けたことに応じて、前記第2のプログラム層が記憶装置から前記対象画像を読み取って記憶保持する画像読み取り工程と、
前記第1のプログラム層が前記画像処理を行うためのパラメータ情報を前記第2のプログラム層へ送信する第1送信工程と、
前記第2のプログラム層が、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行う画像処理工程と、
前記第1のプログラム層が、前記パラメータ情報に応じた画像処理中であることを利用者に認知させるためのインジケータの表示を開始する表示制御工程と、
前記第2のプログラム層が、前記画像処理の経過を示すデータを、前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層へ送信するデータ送信工程と
を実行させ、
前記第2のプログラム層は、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行った後で、前記インジケータの停止を、定義されている関数を用いて前記第1のプログラム層に対して要求し、
前記表示制御工程において、前記第1のプログラム層は、前記データ送信工程で送信されたデータに基づく前記画像処理の経過に関する表示処理および前記停止の要求に応じた処理を実行し、
さらに前記コンピュータに、
前記第1のプログラム層において所定の指示がなされたことを検知した場合、前記第2のプログラム層が、前記印刷装置から印刷機能に関する情報を取得する取得工程と、
前記第2のプログラム層が、前記印刷機能に関する情報を前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層に送信する情報送信工程と、
前記第1のプログラム層が、前記情報送信工程で送信したデータに従って印刷設定画面を表示する設定画面表示工程と、
前記第2のプログラム層が、描画情報が前記印刷設定画面において設定された用紙サイズ情報に基づくサイズとなるようにレンダリング処理を実行するレンダリング工程とを実行させ、
前記表示制御工程では、前記レンダリング工程によるレンダリング処理に対応するインジケータの表示処理を実行する
ことを特徴とする。
本発明によれば、より柔軟かつ利便性の高い装置の使用環境を提供できる。
情報処理装置の構成を示すブロック図である。 情報処理装置のソフトウェアの構成を示すブロック図である。 ユーザ操作に伴う処理を示すフローチャートである。 写真画像選択の詳細を示すフローチャートである。 画像処理の詳細を示すフローチャートである。 スタンプ追加の詳細を示すフローチャートである。 スタンプ特定の詳細を示すフローチャートである。 スタンプ操作の詳細を示すフローチャートである。 プリンタ設定の詳細を示すフローチャートである。 レンダリングの詳細を示すフローチャートである。 プリントの詳細を示すフローチャートである。 アプリケーション画面の一例を示す図である。 設定画面の一例を示す図である。 機能選択画面の一例を示す図である。 機能選択画面の一例を示す図である。 画像処理の詳細を示すフローチャートである。 インジケータの一例を示す図である。 画像処理の詳細を示すフローチャートである。 インジケータの一例を示す図である。 画像処理の詳細を示すフローチャートである。 インジケータの一例を示す図である。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
<実施形態1>
本実施形態では、情報処理装置上で、後述するハイブリッド型アプリケーションを動作させ、ユーザが選択した画像に対して、様々な画像処理を適用した後に、その画像を印刷する構成について説明する。
<ハードウェア構成の説明>
図1は情報処理装置115として、例えば、スマートフォンや携帯電話等の携帯型情報端末の構成例を説明するブロック図である。同図において、100はCPU(中央演算装置/プロセッサ)であり、以下で説明する各種処理をプログラムに従って実行する。図中のCPU100は1つであるが、複数のCPUあるいはCPUコアによって構成されていても良い。101はROMであり、CPU100により実行されるプログラムが記憶されている。102はRAMであり、CPU100によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリである。
103はハードディスクやフラッシュメモリ等の2次記憶装置であり、ファイルや画像解析等の処理結果を保持するデータベース等のデータや、各種プログラムを記憶するための記憶媒体である。104はディスプレイであり、各種処理を実現するための操作を受け付けるためのUI(ユーザインタフェース)や、実行された処理による処理結果等の各種情報を表示する。ディスプレイ104は、タッチセンサ105を備えても良い。
情報処理装置115は、内部撮像デバイス110を備えてもよい。内部撮像デバイス110による撮像によって得られた画像データは、所定の画像処理を経た後、2次記憶装置103に保存される。また、画像データは、外部I/F108を介して接続された外部撮像デバイス111から読み込むこともできる。
情報処理装置115は、外部I/F109を備え、インターネット等のネットワーク113を介して通信を行うことができる。情報処理装置115は、この通信I/F109を介して、ネットワーク113に接続されたサーバ114より画像データを取得することもできる。
情報処理装置115は、加速度センサ106を備え、情報処理装置115自身の位置姿勢に関する加速度情報を取得することができる。情報処理装置115は、外部I/F107を介し、プリンタ112と接続されており、画像データ等のデータを出力することができる。プリンタ112は、ネットワーク113にも接続されており、通信I/F109経由で、画像データを送受信することができる。
外部I/F107〜109は、有線通信と無線通信の内、少なくともいずれかの通信形態を有するインタフェースであり、利用する通信形態に応じて外部デバイス(プリンタ112あるいはサーバ114)との通信を行う。有線通信には、例えば、USB、イーサネット(登録商標)等があり、無線通信には、無線LAN、NFC、ブルートゥース、赤外線通信等がある。また、無線通信として、無線LANを利用する場合には、装置同士が直接接続する形態もあれば、無線LANルータ等の中継装置を介して接続する形態もある。また、外部I/F107〜109は、図では別々に構成されているが、一体となって構成されていても良い。
情報処理装置115の動作に必要な電源は、バッテリ117によって供給される。情報処理装置115が備える各種構成要素は、制御バス/データバス116を介して相互に接続され、CPU100は、この制御バス/データバス116を介して、各種構成要素を制御する。
尚、本実施形態では、情報処理装置115が、その情報処理装置115が備える制御部(CPU100)によって実行されるプログラム等のソフトウェアの実行場所(ソフトウェア実行環境)となる。
<ソフトウェアのブロック図>
図2は情報処理装置115で動作するソフトウェア構成のブロック図である。
情報処理装置115は、スクリプト層217、ネイティブ層218、及びOS層219のプログラムを実行する。これらの各層は、CPU100がROM101あるいは2次記憶装置103に記憶されている対応するプログラムを読み出し実行することにより実現される。
スクリプト層217は、HTML5やCSS3、及びJavaScript等のウェブ標準言語を使って、テキストデータで命令セット(コンテンツの描画や画像の表示、動画の再生等)が記述されているプログラム層である。このスクリプト層217では、アプリケーション実行環境上で、そのアプリケーション実行環境に存在するプロセッサ(例えば、CPU100)を用いて、テキストデータの各種命令セットを翻訳して実行することになる。形態としては、実行の度に命令文を一行ずつ動的に翻訳する場合や、アプリケーションを起動したときに翻訳する場合、アプリケーションを情報処理装置115にインストールしたときに翻訳する場合等が考えられる。
以後、スクリプト層217で処理することや内容をスクリプトと呼ぶ。スクリプトの命令を情報処理装置115内で翻訳する形態の例として、ネイティブ層218やOS層219が備えるインタプリタの機能を使用することが挙げられる。尚、本実施形態においては、アプリケーションのUIの大部分が、このスクリプト層217で記述されていることを想定している。
ネイティブ層218は、アプリケーション実行環境以外で予め翻訳(コンパイル)された命令セットが記述されているプログラム層である。形態としては、CもしくはC++といった高水準言語で記述されたコードが、予めアプリケーションの開発者のPCやサーバ上でコンパイルされ、CPU100が解釈できる命令の集合体となっている。以後、ネイティブ層218で処理することや内容、後述するOS層219の機能をネイティブ層218から呼び出すことを含め、ネイティブと呼ぶこととする。尚、ネイティブ層218の別の実装系として、Javaが挙げられる。Javaは、C/C++と類似の高水準言語であり、予めアプリケーション開発時の開発環境上で中間コードに翻訳される。翻訳された中間コードは、各OSが備えるJava仮想環境上で動作する。本実施形態においては、このようなプログラム形態も、ネイティブ層218の一種に含める。
OS層219は、情報処理装置115のオペレーティングシステム(Operating System:OS)に対応する。OS層219は、ハードウェア機能の使用をアプリケーションに提供する役割及び固有の機能を有する。OS層219は、APIを備え、スクリプト層217やネイティブ層218から機能を使用することができる。
本実施形態では、スクリプト層217からネイティブ層218の呼び出しを可能にすることをバインディング、もしくはバインドと呼ぶ。各種ネイティブの機能は、APIを備え、該APIをスクリプトが呼び出すことでネイティブの機能を使用することができる。このようなバインディング機能は、通常、各種OSが標準的に備えている機能である。
尚、本実施形態では、スクリプト層217とネイティブ層218を含むアプリケーションのことをハイブリッド型アプリケーションと呼ぶ。
スクリプト層217の画像取得部201は、ネイティブ層218に対し画像データの取得を依頼する。取得依頼時に、画像取得部201は、一意なIDを生成し、ネイティブ層218に送信する。このIDと、ネイティブ層218の画像読込部202で読み込まれた画像データは、対となって、ネイティブ層218のデータ保持部204に記憶される。これ以外にも、例えば、絶対パスを指定する方法や、ダイアログ表示を促す方法等が挙げられる。
ネイティブ層218の画像読込部202は、画像データ群215から画像データを取得する。画像データ群215からの画像データの取得方法は、スクリプト層217の画像取得部201の依頼に依存する。依頼方法は、UI上に提供されているダイアログボックスから選択する、ファイルのパスから直接画像を選択する等が挙げられる。
ネイティブ層218のデータ変換部203は、ネイティブ層218のデータ(例:バイナリ形式の画像データ)をスクリプト層217で利用できる形式のデータ(例:テキスト形式(BASE64)の画像データ)に変換する。一方で、データ変換部203は、スクリプト層217から送られてきたデータ(例:テキスト形式(BASE64)の画像データ)をネイティブ層218で利用できる形式(例:バイナリ形式の画像データ)に変換する。
スクリプト層217のデータ変換部207は、スクリプト層217のデータ(例:テキスト形式の処理パラメータ)をネイティブ層218で利用できる形式のデータ(例:テキスト形式(JSON形式)の処理パラメータ)に変換する。一方で、データ変換部207は、ネイティブ層218から送られてきたデータをスクリプト層217で利用できる形式にする変換も行う。
ネイティブ層218のデータ保持部204は、画像読込部202で読み込んだ画像データ、画像処理部208で画像処理が施された画像データを保持する。保持される画像データは、例えば、RGB画像信号に展開されており、すぐに画像処理が実行できる形式になっている。また、保持されている画像データは、スクリプト層217の画像取得部201で生成されたIDと対になっており、このIDを指定することで、データ保持部204から対応する画像データを取得することができる。
スクリプト層217のコンテンツ描画部205は、ネイティブ層218のデータ変換部203を経由して取得した画像データをディスプレイ104に表示する。また、コンテンツ描画部205は、コンテンツ操作部210で操作された画像データの再描画も行う。コンテンツ操作部210は、スクリプト層217で画像データを操作する。この操作には、画像データの拡大、移動、回転等が挙げられる。また、コンテンツ描画部205は、プリントのためのコンテンツをウェブ標準言語を利用して記述する。この記述には、コンテンツ操作部210で操作されたスクリプトも反映される。コンテンツ描画部205で記述されたコンテンツのスクリプトは、OS層219の第1のインタプリタ214で解釈され、ディスプレイ104に表示される。
画像処理制御部206は、画像処理に用いる補正パラメータを決定し、ネイティブ層218の画像処理部208に画像処理を依頼する。まず、画像処理制御部206は、スクリプト層217で補正パラメータを設定する。設定された補正パラメータは、データ変換部207でネイティブ層218へ送信できる形式へ変換される。その後、変換された補正パラメータは、処理対象となる画像データのIDと共にネイティブ層218へ送信される。
スクリプト層217の画像処理部208は、画像処理制御部206で指定されたIDと対応する画像をネイティブ層218のデータ保持部204から取得し、画像処理を施す。その際、どのような画像処理を施すかは、画像処理制御部206で設定された補正パラメータにより決定される。
OS層219のタッチイベント209は、ディスプレイ104のタッチに関する情報を取得する。タッチに関する情報とは、ディスプレイ104のタッチ検知、タッチされた位置情報等が挙げられる。取得したタッチに関する情報は、ネイティブ層218経由でスクリプト層217のコンテンツ操作部210に送信される。
スクリプト層217のプリンタ制御部211は、レンダリング部216へのレンダリング開始依頼、プリンタ検知の依頼、プリンタ設定画面の表示、プリント情報の生成と送信を制御する。プリンタ設定画面では、用紙のサイズ、用紙の種類、カラー・モノクロ等のプリンタ設定がなされる。ここで設定された項目を基に、プリンタデータ生成部212でプリンタデータが生成される。
プリンタデータ生成部212は、プリンタ制御部211からの依頼を基に、プリンタ通信に必要なデータ、コマンドを生成する。プリンタ通信に必要なデータとは、通信プロトコルに則ったデータであり、コマンドとは、印刷やスキャン等、プリンタの動作を決定するためのデータである。
OS層219のプリンタ通信部213は、プリンタデータ生成部212から受信したプリンタデータを接続しているプリンタ112に送信したり、プリンタ112からプリンタ112に関する情報を受信する。OS層219の第1のインタプリタ214は、スクリプト層217で生成された命令を解釈・実行する。例えば、画像の描画等の命令は、インタプリタ214を通して実行され、ディスプレイ104に表示される。
また、ネイティブ層218の中にも、第2のインタプリタ221が存在する。第2のインタプリタ221は、詳細は後述するが、スクリプト層217で描画されたコンテンツを翻訳し、プリント解像度にレンダリングし、画像データをRGB画素値で出力する。
画像データ群215は、画像データを保持している領域である。画像保存部220は、必要に応じて、データ保持部204が保持する画像データを画像データ群215に保存する。
レンダリング部216は、コンテンツ描画部205、画像処理制御部206、及びコンテンツ操作部210を制御して、処理対象の画像データのレンダリングを行う。このレンダリングには、例えば、スクリプト層217で出力解像度の画像を生成することが含まれる。また、スクリプト層におけるレンダリング結果、及び、スクリプト層が生成途中の画像はディスプレイ104に表示しない。レンダリング結果は、ネイティブ層218のデータ変換部203に送信され、プリンタ112が利用できる形式の画像データに変換される。
<ユーザ操作に伴う処理>
図3はユーザ操作を含む処理を示すフローチャートである。まず、図3を用いて、S21からS28の各処理の概要を説明し、詳細は後述する。尚、フローチャートの各ステップの処理は、情報処理装置115のCPU100が、ROM101あるいは2次記憶装置103に記憶されているプログラムを実行することにより実現される。また、図3に示す各ステップは、UIの1つである図12に示すアプリケーション画面1200に対するユーザ操作に従って遷移する。このアプリケーション画面1200は、スクリプト層217によって生成される。このアプリケーション画面1200の操作は、例えば、タッチセンサ105を介して実現される。
S21で、CPU100は、アプリケーション画面1200の写真画像選択ボタン1201に対するユーザ操作(タッチ操作も含む。以後も同様)を検知すると、その操作に応じて、任意の画像を選択する。画像を選択すると、CPU100は、アプリケーション画面1200の描画領域1206の全体に選択された画像を表示する。
S22では、CPU100は、表示されている画像の輝度を調整するためのスライドバー1202に対するユーザ操作を検知すると、そのユーザ操作に応じて、画像処理時に利用する補正パラメータを設定する。そして、CPU100は、設定した補正パラメータに従って、表示されている画像に画像処理を施し、その処理内容及び処理結果を描画領域1206に表示する。
S23は、CPU100は、スタンプ追加ボタン1203に対するユーザ操作を検知すると、スタンプ一覧1207を表示する。スタンプ一覧1207に対するユーザ操作によってスタンプの選択を検知すると、CPU100は、描画領域1206に選択されたスタンプを追加・表示する。
S24で、CPU100は、アプリケーション画面1200に対するユーザ操作に応じて、スタンプを特定する。スタンプの特定とは、ディスプレイ104にユーザ操作によってタッチされた座標とスタンプの座標より、スタンプがタッチされたか否かを判断するものである。スタンプがタッチされた場合、そのスタンプは操作受付状態となる。ここでは、ユーザ操作に応じて、スタンプが操作受付状態になっているものとする。操作受付状態については後述する。
S25で、CPU100は、操作受付状態になっているスタンプを回転するためのスライドバー1204に対するユーザ操作を検知すると、そのユーザ操作に応じて、スタンプ操作として、操作受付状態にあるスタンプを回転する。
S26で、CPU100は、プリントボタン1205に対するユーザ操作を検知すると、プリントに必要な情報を設定するための設定画面1301(図13)を表示する。プリントに必要な情報とは、例えば、図13の設定画面1301に示されるように、用紙サイズ、用紙種類、印刷品位、縁あり/なしの設定項目がある。これ以外にも、両面/片面、モノクロ・カラー等、使用するプリンタが有する機能に応じて、設定可能な設定項目が構成される。
S27で、CPU100は、設定画面1301の設定完了ボタン1302に対するユーザ操作を検知すると、描画領域に表示されている画像を、プリンタ112に出力するためのプリント解像度に変換するためのレンダリングを実行する。
S28で、CPU100は、プリント解像度に変換された画像を、プリンタ制御のコマンドと共にプリンタ112に送信する。以上の処理により、ユーザにより選択された画像がプリンタ112でプリントされる。
尚、図3に示す処理は、一例であり、処理内容はこれに限定されず、ステップ群の処理順序もこれに限定されるものではない。また、本実施形態において、プロセッサで翻訳され実行されるための命令セットを含む第1のプログラム層をスクリプト層217、プロセッサ以外で予め翻訳された命令セットを含む第2のプログラム層をネイティブ層218と定義する。そして、これらの第1のプログラム層と第2のプログラム層とを包含するプログラムがハイブリッド型アプリケーションを実現する。文字列データを第1の形式、バイナリデータを第2の形式と定義する。尚、スクリプト層217は、テキスト形式のデータを保持することが可能であり、ネイティブ層218は、バイナリ形式のデータを保持することが可能である。
<プリンタの選択>
最初に、ユーザ操作によって、図3に示す処理を実現するアプリケーションが起動される際には、アプリケーションは、まず、接続可能な外部デバイス(プリンタ112)のディスカバリ処理(不図示)を行う。ディスカバリ処理とは、情報処理装置115が存在するネットワーク113内において、接続可能なプリンタ112のIPアドレスを特定する処理のことである。
情報処理装置115は、ディスカバリ処理によって取得したIPアドレス(場合によっては、複数個)に対して、各種プリンタの属性情報取得の命令を送信して、その返信を取得することができる。
より具体的には、ネイティブ層218において、各プリンタの情報を取得するためのコマンドを生成する。コマンドとは、プリンタの動作を指定する命令であり、下記のようなXMLで表現される。
<?xml version="1.0" encoding="utf-8" ?>
<cmd xmlns:trans="http://www.trans/example/">
<contents>
<operation>GetInformation</operation>
</contents>
</cmd>
生成されたプリンタ情報を取得するためのコマンドは、プリンタの通信プロトコルに従った形式で、ネットワーク上のネットワーク機器(例えば、Wi−Fi(登録商標)接続されたルータ)に対しブロードキャストされる。尚、プリンタ情報を取得するためのコマンドは、ディスカバリで見つかったプリンタのみに送信されても良い。ここで、通信方法は、Wi−Fiダイレクトや電話回線を利用する形態が考えられるが、これに限定されるものではない。コマンドの送信の結果、ネイティブ層218は、プリンタからの応答を受信する。受信する応答の例としては、下記のようなXMLで表現される。
<?xml version="1.0" encoding="utf-8" ?>
<cmd xmlns:trans="http://www.trans/example/">
<contents>
<PrinterName>PrinterA</PrinterName>
<ImageProcGrp>A</ImageProcGrp>
<ResolutionX>400</ResolutionX>
<ResolutionY>400</ResolutionY>
</contents>
</cmd>
上記は、簡単な例であるが、PrinterNameタグによって、それぞれのプリンタ名称を取得することができる。また、ImageProcGrpタグによって、それぞれのプリンタが利用可能な画像処理グループを取得することもできる。この画像処理グループの内容によって、図15の画像処理のプルダウンメニュー1501の選択肢が決定される。尚、後述するように図15の画像処理のプルダウンメニュー1501の選択肢は別の方法を用いて決定されても良い。また、ResolutionX及びResolutionYは、このプリンタのエンジンが必要とする画像の解像度であり、例えば、単位はdpiである。
ネイティブ層218で取得された機種名は、スクリプト層217に伝達されて、以下の仮想コードにより、プリンタのリストを表示することができる。
<form name=”frmPrinter”>
<select name=”selPrinter”>
</select>
</form>
<script type=”text/javascript”>
Function fAddPrinter(PrinterName, count){
var sObj=document.forms[“frmPrinter”].elements[“selPrinter”];
for (var i=0;i<count;i++){
var idx=sObj.length;
sObj.options[idx]=new Option(PrinterName[i]);
}
}
</script>
上記において、selectタグは、リストを表示するための記述であり、scriptタグ内に記載したJavaScriptコードによって、リストに取得したプリンタの名称(PrinterNameに配列として格納)を追加することができる。
図14は、スクリプト層217において生成した仮想コードがインタプリタ214で解釈され、ディスプレイ104で表示されたプリンタのリストを含むプルダウンメニュー1401を示している。ユーザが所望のプリンタを選択すると、何番目のリストを選択したかというIDを取得することができる。プリンタを選択すると、次に、ユーザは、写真画像の選択操作に遷移する。
<写真画像選択の詳細>
図3のS21の写真画像選択の詳細について、図4を用いて説明する。尚、S301−S302、S309−S311は、CPU100がスクリプト層217のプログラムを用いて実行する処理であり、S303−S308は、CPU100がネイティブ層218のプログラムを用いて実行する処理である。
S301で、CPU100は、一意なIDを生成する。このIDは、数値、文字列等、スクリプト層217からネイティブ層218へ送信できる形式であればどのような形でも良い。S302で、CPU100は、生成したIDとともに、ネイティブ層218に、写真画像選択ボタン1201に対するユーザ操作に応じて画像選択を依頼する。依頼方法は、バインディング機能によりスクリプト層217からネイティブ層218固有の画像選択APIを呼び出す。ネイティブ層218には、スクリプト層217から直接呼び出せる関数もしくはその関数を間接的に呼び出す、いわゆる、ラッパーが予め用意してある。
S303で、CPU100は、デバイス固有の画像選択UIをディスプレイ104に表示する。表示された画像選択UIに対するユーザ操作に基づいて、任意の画像を1枚選択する。画像の選択は、例えば、情報処理装置115内で管理されるフォルダから画像を1枚選択するものとするが、これに限定されるものではない。例えば、インターネット上の画像や、脱着可能な記憶媒体内の画像を選択しても良いし、情報処理装置115の内部撮像デバイス110を利用して撮影した画像を取得しても良い。
S304で、CPU100は、選択された画像を取得する。例えば、選択した画像が画像ファイルの状態であれば、CPU100は、ファイルを開き、その内容を読み取る。S305で、CPU100は、取得した画像をRGB展開する。S306で、CPU100は、展開したRGB画像を、スクリプト層217から取得したIDと関連付けてデータ保持部204に保持する。関連付け方法は、例えば、IDとRGB画像を有するオブジェクトを作成することで、IDによりRGB画像の特定を可能にするという方法が考えられる。ここで、関連付け方法は、これに限らず、IDと選択された画像のアクセス先であるパスや、IDとRGB展開に応じて実行される関数やクラス等も考えられる。
S307で、CPU100は、展開したRGB画像をスクリプト層217でサポート可能な形式のデータに変換する。本実施形態では、S307において、RGB画像がJPEG(Joint Photography Expert Group)形式のデータに変換される。S308で、CPU100は、JPEG形式のデータをBASE64データに変換し、スクリプト層217へ送信する。これは、スクリプト層217では、RGB画像のデータ配列をそのまま利用できないため、ネイティブ層218において、スクリプト層217で利用できる形式に変換する必要があるためである。JavaScript(登録商標)では、文字列しか扱えないため、本実施形態では、文字列としてデータを表現するBASE64の形式を利用する。
S309で、CPU100は、ネイティブ層218で変換されたBASE64データを受信するとともに、そのBASE64データを表示するための描画領域をRAM102に確保する。本実施形態では、描画領域の確保の一例としてHTMLのCanvas機能を利用し、画像の描画は、Canvasの有するContextオブジェクトのAPIを利用する。
S310で、CPU100は、補正パラメータを生成し、初期化する。ここで、補正パラメータとは、S22の画像処理の内容を決定するパラメータ群を保持するオブジェクトである。JavaScript(登録商標)で保持する補正パラメータの一例として、下記のような形態が考えられる。
var CorrectionParam = function(){
this.brightness = 0;
}
この補正パラメータは、CorrectionParamオブジェクトの中に、明るさ補正用にbrightnessという名前の変数が設けられており、0という値を格納するということを表している。
本実施形態では、説明の簡略化のために、補正パラメータは明るさ(輝度)補正用のみであるが、その他の補正処理用のパラメータ(ぼかしフィルタの強度、セピア変換のオン・オフ等)を追加しても良い。
S311で、CPU100は、描画領域で描画するデータにBASE64データを指定し、それに従って、その描画領域に画像を描画する。具体的には、インタプリタ214がBASE64データのスクリプトを解釈し、描画領域に画像として表示する。ここで、描画領域に、BASE64データを反映させるサンプルコードの一例を示す。
--------------------------------------------------
var base64Data = ネイティブ層からのBASE64データ
var canvas = document.createElement("canvas"); //画像の描画領域確保
canvas.setAttribute("width", 100); //描画領域の大きさ設定
canvas.setAttribute("height", 100);
var context = canvas.getContext("2d"); //描画領域に描画するAPIを持つオブジェクトの生成
var img = new Image(); //Imageオブジェクトの生成
img.src = base64Data; //画像のURIを受け取ったBASE64データとする
img.onload = function(){ //画像のロードが終わってから処理を開始する
context.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); //contextオブジェクトのメソッドを用いて画像を描画領域に描画
document.getElementById("div").appendChild(canvas);
//本フローチャートではCanvasが何層にもなるレイヤー構造を想定している。これらのCanvasは至る所好き勝手に存在するわけではなく、描画、移動、拡大等の操作は、特定の領域内(図12の描画領域1206)で完結する。その領域を指定しているものが「div」であり、Canvasはそのdivに追加されてゆく形態をとる。

--------------------------------------------------
<画像処理の詳細>
図3のS22の画像処理の詳細について、図5を用いて説明する。尚、S401−S403、S409、S411は、CPU100がスクリプト層217のプログラムを用いて実行する処理であり、S404−S408、S410はCPU100がネイティブ層218のプログラムを用いて実行する処理である。
S401で、CPU100は、補正パラメータを設定する。ここでは、図3のS310で生成した補正パラメータのbrightnessの値が、スライドバー1202に対するユーザ操作に応じて設定される値に更新される。S402で、CPU100は、スクリプト層217で、インジケータを起動し、ディスプレイ104に表示する。つまり、ユーザが画像処理の実行を指示することでインジケータが起動される。ここで、インジケータとは、ユーザに処理中である旨を伝える表示であり、一般には、プログレスバーや、時計マーク、図形の点滅や回転等の指標画像で表現する。その一例を図21に示す。
本実施形態におけるインジケータは、例えば、以下に示すスクリプトにより、画像処理中の作業状態を表す画像アイコンとしてディスプレイ104に表示される。尚、インジケータは、OSに搭載されているアニメーション等の所定の画像を利用してもよい。以下に、処理中の画像アイコン表示用スクリプトの一例を記述する。
<html>
<header>
<h2>ImageProcess</h2>
<img src = "path/sunadokei.jpg" id="sunadokei">
<script>
function removeSunadokei(){
var sunadokei = document.getElementById("sunadokei");
var parent = sunakei.parentNode;
parent.removeChild("sunadokei");
}
</script>
</header>
</html>
JaveScriptにより画像処理が終了した時点で、処理中の画像アイコンを消去することで、画像処理実行中に処理中のアイコンの表示を制御することができる。
S403で、CPU100は、設定した補正パラメータをネイティブ層218で利用できる形式に変換する。ここで、補正パラメータはオブジェクトの形態を取っており、そのままではネイティブ層218で利用できないため、設定した補正パラメータをJSON文字列に変換する。そして、CPU100は、JSON文字列に変換された補正パラメータを、図3のS301で生成したIDと共にネイティブ層218へ送信する。
S404で、CPU100は、JSON文字列に変換された補正パラメータをデコードし、補正パラメータを取得する。より具体的には、補正パラメータをOS層219に備えられているパーサを利用してパースする。パース後に、上記の例の場合、補正パラメータ内のbrightnessが取得される。
S405で、CPU100は、スクリプト層217から取得したIDを基に、図3のS305で展開されたRGB画像を特定する。尚、上述のように、IDと画像の対応付けは、IDとRGB画像と対にすることに限定されるわけではなく、例えば、IDと画像のパスを関連付ける方法を用いてもよい。その他にIDと関連付ける例として、ネイティブ層218のオブジェクト、画像データの先頭アドレス、画像を呼び出す関数等、様々なものが考えられる。
S406で、CPU100は、取得した補正パラメータから施すべき画像処理を判断し、S405において特定されたRGB画像に対して画像処理を行う。本実施形態では、明るさ補正のパラメータにより、全ての画素のRGBの値に10が加算される。
S407で、CPU100は、画像処理が施されたRGB画像をスクリプト層217でサポート可能な形式のデータに変換する。ここでは、図3のS307と同様に、JPEG形式のデータに変換する。S408で、CPU100は、スクリプト層217にインジケータの停止を依頼する。これは、ネイティブ層218が、スクリプト層217で定義されているインジケータ停止の関数を呼び出すことで実現する。
S409で、CPU100は、インジケータを停止して、ディスプレイ104からインジケータを消去する。
一方、S410で、CPU100は、変換されたJPEG形式のデータをBASE64データに変換し、スクリプト層217へ送信する。
S411で、CPU100は、ネイティブ層218で変換されたBASE64データを受信し、それに従って、図3のS309で確保した描画領域に画像を描画する。この画像がOS層219で解釈されることで、指定した表示領域内に画像として表示される。
画像処理機能の選択においては、本実施形態では、図15に示すように、プルダウンメニュー1501を含む機能選択画面1500によって、利用できる画像処理機能の一覧を表示し、ユーザが所望の処理を選択することができる。
ここで、プルダウンメニュー1401中の「ImageFix」とは、写真画像を、人物顔検出やシーン解析部を用いて自動で解析し、適切な明るさ・ホワイトバランス調整を行う機能(顔検出機能)である(特開2010−278708号公報参照)。また、「RedeyeFix」とは、画像中から自動で赤目画像を検出して補正する機能(赤目検出機能)である(特開2006−350557号公報参照)。また、「SmartSkin」とは、写真画像から人物の顔を検出して、該顔の肌領域を好適に加工する機能である(特開2010−10938号公報参照)。また、「Mono」は、公知のモノクロ変換を行うモノクロ化処理機能である。「Sepia」は公知のセピア色変換を行うセピア化処理機能である。尚、画像処理機能の種類には、図15に示すものに限定されるものではなく、用途や目的に応じて、様々な画像処理を利用することができる。
この時に、本実施形態では、JavaScriptからバインド機能によってOS層219が通常備えているシステム関数を呼び出し、このシステム関数から、情報処理装置115の属性情報であるデバイス属性情報を取得する。ここで、このデバイス属性情報は、アプリケーションが動作する様々な異なる性能の端末機器(情報処理装置115)や、その動作状況に関する情報である。
そして、本実施形態では、このデバイス属性情報として、情報処理装置115は、自身が備えるCPU100のクロック速度Clk[MHz]を取得する。そして、このクロック速度Clkから、予め定められた閾値Th1を用いて、利用できる画像処理機能を含む画像処理グループを特定する。画像処理グループの特定のための仮想コードは、以下のようになる。
If ( Clk > Th1 ) ImageProcGrp = “A”;
Else ImageProcGrp = “B”
尚、この判定は、通常、アプリケーションが起動した際に、スクリプト層217において行われる。画像処理グループを特定できたら、スクリプト層217において、以下のコードによって利用可能な画像処理の表示用スクリプトを制御する。
<form name=”frmIProc”>
<select name=”selIProc”>
</select>
</form>

<script type=”text/javascript”>
Function fAddImageProc(Grp){
var sObj=document.forms[“frmIProc”].elements[“selIProc”];
if( Grp =”A” ){
var idx=sObj.length;
sObj.options[idx]=new Option(“ImageFix”);
var idx=sObj.length;
sObj.options[idx]=new Option(“RedEyeFix”);
var idx=sObj.length;
sObj.options[idx]=new Option(“SmartSkin”);
var idx=sObj.length;
sObj.options[idx]=new Option(“Mono”);
var idx=sObj.length;
sObj.options[idx]=new Option(“Sepia”);
}
Else if (Grp=”B”){
var idx=sObj.length;
sObj.options[idx]=new Option(“Mono”);
var idx=sObj.length;
sObj.options[idx]=new Option(“Sepia”);
}
}
</script>
上記スクリプト操作においては、情報処理装置115のCPU100のクロック数が所定値(閾値)より大きく、複雑な画像処理を実行可能と判断した場合には(Grp=A)、より多くの画像処理機能を選択可能なものとしている。一方、情報処理装置115のCPU100のクロック数が所定値以下の場合には、処理としては負荷の軽いモノクロ変換、セピア変換という処理しか選択できないようになる。
上記スクリプトは、図2の第1のインタプリタ214で翻訳され、ディスプレイ104上に描画される。
ユーザが所望の画像処理機能を選択すると、HTMLの機能によって、選択された画像処理機能を識別する画像処理IDが判別できる。この画像処理IDは、ネイティブ層218に伝達され、画像処理部208において、選択した画像処理機能に相当する画像処理が適用される。尚、ここでは各画像処理の詳細に関する説明は割愛する。
尚、上記スクリプトでは、情報処理装置115の性能に適さない画像処理を除外し、ユーザが選択可能な画像処理を絞り込んで表示する例を示している。但し、表示方法はこれに限らず、例えば、情報処理装置115の性能に適さない画像処理を選択可能に表示するものの、警告マーク等の表示アイテムや警告文書を表示させ、ユーザに処理が遅くなる可能性があることを警告してもよい。上記の表示アイテムや警告文書は、ユーザが当該画像処理を選択する前に表示されてもよいし、ユーザによる選択に応じて表示されてもよい。
また、例えば、特定の画像処理に必要なプログラムがインストールされていない場合等、情報処理装置115が実行できない画像処理についてはユーザによる選択肢から除外し、情報処理装置115に適さない画像処理については警告を行ってもよい。
また、上記のように情報処理装置115の性能ではなく、情報処理装置115の状態に応じて画像処理の選択画面が制御されてもよい。あるいは、情報処理装置115の性能と状態の両方に基づいて選択画面が制御されてもよい。情報処理装置115の状態については実施形態5で後述する。
尚、情報処理装置115の性能や状態は、ユーザが画像処理機能の選択開始を指示した場合に取得される。情報処理装置115の性能であれば当該指示の前に予め取得されてもよい。但し、「状態」であれば新しい情報である方が適切な表示制御を行えるため、画像処理機能の選択が開始されるときに情報処理装置115の状態が取得される。
<スタンプ追加の詳細>
図3のS23のスタンプ追加の詳細について、図6を用いて説明する。ここでは、ユーザ操作によって、図12のアプリケーション画面1200のスタンプ追加ボタン1203が押下されてスタンプ一覧が表示された後、ハートスタンプ1208が選択された場合を例に挙げて説明する。尚、S501−S502、S508−S510は、CPU100がスクリプト層217のプログラムを用いて実行する処理であり、S503−S507はCPU100がネイティブ層218のプログラムを用いて実行する処理である。
S501で、CPU100は、一意なIDを生成する。このIDは、図3のS301で生成するIDと同等の性質を有する。S502で、CPU100は、S501で生成されたIDととともに、スタンプとして利用される画像のアクセス先(絶対パス)をネイティブ層218に送信することで、スタンプに対応するスタンプ画像の画像選択を依頼する。
S503で、CPU100は、スクリプト層217から受信したスタンプ画像の絶対パスとデバイス固有の画像選択APIを利用して、スタンプ画像を取得する。S504で、CPU100は、取得したスタンプ画像をRGB展開する。S505で、CPU100は、展開したRGB画像を、スクリプト層217から取得したIDと関連付けてデータ保持部204に保持する。関連付け方法は、図3のS306と同様である。S506で、CPU100は、展開したRGB画像をスクリプト層217でサポート可能な形式のデータに変換する。ここでの変換は、図3のS307と同様に、JPEG形式のデータに変換する。S507で、CPU100は、JPEG形式のデータをBASE64データに変換し、スクリプト層217へ送信する。
S508で、CPU100は、ネイティブ層218で変換されたBASE64データを受信するとともに、そのBASE64データを表示するための描画領域をRAM102に確保する。S509で、CPU100は、オブジェクトパラメータを生成し、初期化する。ここで、オブジェクトパラメータとは、図3のS27のレンダリングの際、レンダリング後のスタンプの回転角度を決定するために用いられるパラメータを保持するオブジェクトである。JavaScript(登録商標)で保持するオブジェクトパラメータの一例としては、下記のような形態が考えられる。
var ObjectParam = function(){
this.theta = 0;
this.posX = 0;
this.posY = 0;
this.width = 100;
this.height = 100;
}
このオブジェクトパラメータは、ObjectParamオブジェクトの中に、回転角度を示すthetaという変数名と、thetaには0という値が格納されているということを表している。同様に、posXは描画領域の左上を基準点とした時のx座標、posYは描画領域の左上を基準点とした時のy座標、widthは描画領域の横幅、heightは描画領域の縦幅を表している。尚、本実施形態では、説明を簡単にするため、オブジェクトパラメータは必要最小限であるが、その他のパラメータ(平行移動量、拡大倍率等)を追加し、描画時やレンダリング時に利用できることは明らかである。
S510で、CPU100は、BASE64データを、生成したオブジェクトパラメータを基に、描画領域1206に画像として表示する。具体的には、CPU100は、選択されたスタンプに対応するBASE64データをOS層219のインタプリタ214に送信する。そして、インタプリタ214がBASE64データのスクリプトを解釈し、描画領域にスタンプ画像として表示する。尚、本実施形態では、説明を簡単にするために、スタンプを1つ選択した場合を例に挙げているが、複数個のスタンプを選択できる。また、本実施形態では、スタンプに予め用意した画像を利用しているが、Contextオブジェクトを利用して描画物をスクリプト層で生成する方法を用いても良い。
<スタンプ特定の詳細>
図3のS24のスタンプ特定の詳細について、図7を用いて説明する。尚、S602−603は、CPU100がスクリプト層217のプログラムを用いて実行する処理であり、S601はCPU100がネイティブ層218のプログラムを用いて実行する処理である。
S601で、CPU100は、ディスプレイ104上でタッチされた座標を取得し、スクリプト層217に送信する。
S602で、CPU100は、ネイティブ層218から受信した座標と、図5のS509で生成したオブジェクトパラメータの情報より、図3のS23で追加したスタンプがタッチされたかどうかを判断する。追加したスタンプにおいて、オブジェクトパラメータは初期値のままである。そのため、上記のオブジェクトパラメータの一例に従えば、スタンプは、描画領域1206の左上を(0,0)とし、そこからx方向に100、y方向に100の領域に描画されていることになる。これより、受信した座標の座標(x,y)の内、」x座標から描画領域1206のx座標分を差し引いた値が0〜100の範囲、かつ、y座標から描画領域1206のy座標分を差し引いた値が0〜100の範囲であれば、スタンプはタッチされたと判断できる。スタンプがタッチされたと判断された場合、そのスタンプは、操作受付状態となる。以降の説明では、S23で追加したスタンプがタッチされたものとして説明する。
S603で、CPU100は、判断結果に応じて、スタンプを操作受付状態に設定する。ここで、操作受付状態に設定することは、タッチされたスタンプのIDを注目スタンプIDとして、一時的にスクリプト層217に記録しておくことである。これは、データ保持部204には、画像とIDが対となって記憶されているため、IDさえ把握しておけば一意な画像を特定できるためである。
<スタンプ操作の詳細>
図3のS25のスタンプ操作の詳細について、図8を用いて説明する。尚、図8の各ステップは、CPU100がスクリプト層217のプログラムを用いて実行する処理である。
S701で、CPU100は、スタンプのオブジェクトパラメータのrotateの値を更新する。例えば、図12のスライドバー1204で設定した値に更新する。S702で、CPU100は、オブジェクトパラメータを用いて、図7のS603で操作受付状態に設定されたスタンプを描画領域1206に再描画する。例えば、スタンプ画像の描画をHTMLのCanvasで行っている場合、CanvasのContextオブジェクトのrotateメソッドを利用することで、Canvas内の画像を回転することが可能である。
尚、本実施形態では、スタンプの操作は回転のみであるが、拡大・縮小、平行移動等の他の操作も考えられる。また、写真画像に対してオブジェクトパラメータを持たせれば、スタンプ操作と同様の操作が可能となることも、明らかである。
<プリンタ設定の詳細>
図3のS26のプリンタ設定の詳細について、図9を用いて説明する。尚、S801、S807−S809は、CPU100がスクリプト層217のプログラムを用いて実行する処理であり、S802−S806、S810はCPU100がネイティブ層218のプログラムを用いて実行する処理である。
S801で、CPU100は、スクリプト層217からネイティブ層218へデバイス情報としてのプリンタ情報取得を依頼する。これは、プリンタ112と通信を行うためのスクリプト層217からの要求にあたる。依頼の方法は、画像選択時と同様に、バインディング機能によりスクリプトからネイティブ固有のAPIを呼び出す。ネイティブ層218には、スクリプト層217から直接呼び出せる関数もしくはその関数を間接的に呼び出す、いわゆる、ラッパーが予め用意してある。例えば、GetPrinterInfoというネイティブ関数を用意しておき、スクリプト側からその関数を呼び出す。このように、ネイティブ層はスクリプトからの外部デバイスとの通信の要求を取得する。
通常、スクリプト層217からはセキュリティ上の制限で外部デバイスと直接通信することはできない。そのため、上記のように、スクリプト層217から、一旦、ネイティブ層218へ外部デバイス情報の取得を依頼し、ネイティブ層218を介して外部デバイスと通信を行う。ここで、ネイティブ層218は、OS層219を介して、外部デバイス(例えば、プリンタ112)と通信する機能を備えている。
S802で、CPU100は、スクリプト層217からの依頼に従って、プリンタ情報取得のための関数を呼び出し、プリンタの検知、いわゆる、ディスカバリを行う。この検知には、例として、同一の無線LANルータで接続しているプリンタを検知するという方法がある。ここでは、通信可能なプリンタの検知を行うため、例えば、Bonjour等のプロトコルにより、ブロードキャストやマルチキャスト等の方法で応答の要求を行い、プリンタからの応答を待機することでプリンタを検知する。
S803で、CPU100は、プリンタ112からの応答に含まれるIPアドレスを記憶する。S804で、CPU100は、記憶したIPアドレスに対応するプリンタ112へ、デバイス情報取得コマンドとしてプリンタ情報取得コマンドを送信する。ここで、応答したプリンタ112が複数である場合、CPU100は、全てのプリンタ112に対して、プリンタ情報取得コマンドを送信する。プリンタ情報取得コマンドとは、プリンタの動作を指定する命令であり、その一例としては、以下のようなXMLで表現される。
----------------------------------------------
01: <?xml version="1.0" encoding="utf-8" ?>
02: <cmd xmlns:trans="http://www.xxxx/yyyyy/">
03: <contents>
04: <operation>GetInformation</operation>
05: </contents>
06: </cmd>
----------------------------------------------
上記各行の左側に書かれている「01:」等の数値は説明を行うために付加した行番号であり、本来のXML形式のテキストには記載されない。
1行目はヘッダであり、XML形式で記述していることを表している。
2行目のcmdはコマンドの開始を意味する。xmlnsで名前空間を指定し、コマンドの解釈の定義を指定している。尚、6行目の</cmd>でコマンドの終了を示している。
3行目は以後に内容を記載する宣言であり、5行目でその終了を示している。
4行目には要求する命令が記載されており、<operation>と</operation>の間に実際の命令文言が存在する。命令文言であるGetInformationは、外部デバイスであるプリンタの情報を取得する命令である。例えば、プリンタが対応している用紙種類、サイズ、縁なし印刷機能の有無、印刷品位、等のケーパビリティ情報を提供するよう要求する。
尚、プリンタ情報取得コマンドの生成は、例えば、ROM101に予め記憶した固定のテキストを読み込んでも構わない。また、XML等のテキスト形式に限らず、バイナリ形式で記述し、それに沿ったプロトコルで通信しても良い。また、生成したプリンタ情報取得コマンドは、HTTP、IPP等のプリンタが対応している通信プロトコルに従った形式で、プリンタ通信部213を介してプリンタ112へ送信される。
また、通信方法はこれに限定されるものではない。Wi−Fi(登録商標)ダイレクトやBluetooth(登録商標)、赤外線通信、電話回線、有線LAN、USBを用いた接続でも良く、その方法に沿ったプロトコルで通信を行えば同様の効果を得ることができる。
図9では、ネイティブ層218で、プリンタ情報取得コマンドを生成する構成としているが、スクリプト層217で、プリンタ情報取得コマンドを生成する構成でも、同様の効果が得られる。その場合、スクリプト層217で、例えば、上記のXML形式の命令文を含むプリンタ情報取得コマンドを作成し、ネイティブ層218へ渡す。それを受けて、ネイティブ層218は、通信プロトコルに従った形式でプリンタ112へプリンタ情報取得コマンドを送信する。
プリンタ112は、情報処理装置115からプリンタ情報取得コマンドを受信すると、デバイス情報であるプリンタ情報をXML形式で通信プロトコルに沿って、情報処理装置115へ送信する。以下に、プリンタの情報の一例を示す。
----------------------------------------------
01: <?xml version="1.0" encoding="utf-8" ?>
02: <cmd xmlns:trans="http://www.xxxx/yyyyy/">
03: <contents>
04: <device id=”Printer001” />
05: <mode = 1>
06: <media>GlossyPaper</media>
07: <size>A4</size>
08: <quality>1</quality>
09: <border>no</border>
10: </mode>
11: <mode = 2>
〜中略〜
</mode>
<mode = 3>
〜中略〜
</mode>

〜中略〜

</contents>
</cmd>
----------------------------------------------
1行目はヘッダであり、XML形式で記述していることを表している。
2行目のcmdはコマンドの開始を意味する。xmlnsで名前空間を指定し、コマンドの解釈の定義を指定している。尚、最下行の</cmd>でコマンドの終了を示している。
3行目は以後に内容を記載する宣言であり、下の</contents>までその内容は継続する。
4行目でデバイスIDを示している。ここでは、プリンタ112の機種名が「Printer001」であることを表している。
5行目以降はプリンタ112が有する各モードについての記述である。<mode>から</mode>までで、1つのモードにおける情報が記述されている。5行目では、モードの番号が1である。以降の<media>は印刷用紙の種類、<size>は用紙サイズ、<quality>は印刷品位、<border>は縁あり/なしの情報をそれぞれ記述している。
11行目以降は他のモードであるモード2についての情報が記述されている。このように、プリンタ112の機種名と、そのプリンタが対応している全てのモードがこのXMLに記述されている。
尚、プリンタ情報の記述方法はこれに限定されることはなく、タグ形式でないテキストや、バイナリ形式等の他の形式であっても構わない。また、上記では、プリンタの印刷機能の情報を受け渡しているが、それに限定されるものではない。例えば、プリンタが処理可能な画像処理や解析処理、サイレントモードの有無、メモリカードの利用有無、インク残量等のステータス情報でも良い。また、画像処理の例としては、モノクロやセピア、彩度強調等の色変換、複数画像のレイアウト、ホワイトバランス補正、ノイズ除去、その他自動で写真を適切な色や輝度に補正する処理が挙げられる。
S805で、CPU100は、プリンタ112からプリンタ情報を受信し、そのプリンタ情報からプリンタ112の機能一覧を取得する。例えば、プリンタ112が有する全てのモードにおける印刷用紙の種類、サイズ、印刷品位、縁あり/なしの項目と項目数等を含むプリンタ機能一覧が取得される。
S806で、CPU100は、取得したプリンタ機能の一覧に関するプリンタ情報をスクリプト層217が解釈できる形式に変換して、スクリプト層217へ送信する。つまり、プリンタ112との通信によって得られた情報をスクリプト層217へ渡す。具体的には、バインディング機能を用いてネイティブ層218からスクリプト層217にプリンタ機能の一覧に関するプリント情報が送信される。スクリプト層217からそのネイティブ関数を呼び出し、戻り値として情報を受け渡す。取得するモード等を引数とし、スクリプト層217はそのモードの戻り値を受け取るようにしても良い。その他の例として、受け取ったXML形式のプリンタ情報で送信したり、タグなしのテキスト形式に変えて送信する等の方法がある。加えて、上述のJSON文字列を用いた受け渡しや、データ変換部207及び203を用いてBASE64等の文字列で受け渡しを行ってもよい。
S807で、CPU100は、ネイティブ層218から受信したプリンタ情報に基づいて、プリンタ112で利用できる機能を含む設定画面(図13)を形成し、表示する。これを、本実施形態では、表示制御と呼ぶ。本実施形態では、最初に、プリンタを選択している。しかし、接続可能なプリンタが複数ある場合は、CPU100が、このタイミングでプリンタ名を表示し、ユーザに印刷するプリンタを選択させるための表示画面を生成する(表示内容を制御する)。尚、プリンタの選択は、上記に限定されず、一番早く応答してきたプリンタや、より機能が多いプリンタ、印刷ジョブが混んでいないプリンタを選択する、等の方法も考えられる。
このように、CPU100は、印刷用紙の種類・サイズ、印刷品位、縁あり/なし等のプリンタで利用できる機能を選択させる設定画面1301(図13)を表示する。設定画面の形成方法の一例として、以下に、HTML記述のサンプルを示す。
------------------------------------------------
<!DOCTYPE html>
<head>
<title>印刷設定 </title>
<script>
<!-- 用紙サイズ -->
var PaperSizeNum = GetPaperSizeNum();
var p = document.getElementById("PaperList");
var i;
for(i=0; i<PaperSizeNum; i++){
p.options[i] = new Option(GetPaperSizeT(i), GetPaperSizeV(i));
}

<!-- 用紙種類-->
var MediaTypeNum = GetMediaTypeNum();
var m = document.getElementById("MediaList");
var j;
for(j=0; j<MediaTypeNum; j++){
m.options[i] = new Option(GetMediaTypeT(j), GetMediaTypeV(j));
}

<!-- 印刷品位 -->
var QualityNum = GetQualityNum();
var q = document.getElementById("QualityList");
var k;
for(k=0; k< QualityNum; k++){
q.options[i] = new Option(GetQualityT(k), GetQualityV(k));
}

<!-- 縁あり/なし-->
var BorderNum = GetBorderNum();
var b = document.getElementById("BorderList");
var l;
for(l=0; l<BorderNum; l++){
b.options[i] = new Option(GetBorderT(l), GetBorderV(l));
}

<!-- 印刷関数-->
function printer() {
SetPrint(document.getElementById("PaperList").value,
document.getElementById("MediaList").value,
document.getElementById("QualityList").value,
document.getElementById("BorderList").value);
}
</script>
</head>

<!-- 表示部 -->
<body>
用紙サイズ <select id="PaperList"></select><br />
用紙種類 <select id="MediaList"></select><br />
印刷品位 <select id="QualityList"></select><br />
縁あり/なし <select id="BorderList"></select><br />
<br />

<button id="btn1" onclick="printer()">設定完了</button>
</body>
</html>
------------------------------------------------
上記のGetPaperSizeNum( )、GetMediaTypeNum( )、GetQualityNum( )、GetBorderNum( )はネイティブ関数であり、それぞれの項目数を取得する機能を備える。例えば、プリンタが対応している用紙サイズがA4、A5、B5、L判の4種類である場合、GetPaperSizeNum( )は4を返す。
GetPaperSizeT(n)、GetMediaTypeT(n)、GetQualityT(n)、GetBorderT(n)もネイティブ関数であり、引数nの値番目の文字列を返す。例えば、用紙サイズのテキストを返す関数のGetPaperSize(0)の返り値は「A4」、GetPaperSize(1)の返り値は「A5」となる。これらの値は、プリンタから受信するプリンタ情報からネイティブ関数が取り出す。
GetPaperSizeV(n)、GetMediaTypeV(n)、GetQualityV(n)、GetBorderV(n)もネイティブ関数であり、引数nの値に対応する値を返す。例えば、用紙種類のテキストを返す関数のGetMediaTypeT(0)の返り値は「光沢紙」のように、表示してユーザに示す文言である。一方、GetMediaTypeV(0)の返り値は「GlossyPaper」と、プリンタが解釈できる文言となっている。これらの文言は、プリンタ情報と結び付けてネイティブ関数が決定する。例えば、プリンタ情報より取り出した値が「GlossyPaper」である場合、表示するテキストは「光沢紙」と決定する。決定方法として、ネイティブ関数はこれらの対応表を予め保持しておき、その対応表に沿ってテキストを決定すれば良い。
尚、上記では、例として、用紙サイズ、用紙種類、印刷品位、縁あり/なしの設定を行う仕様であるが、これに限定されるものではない。他の例として、両面/片面、カラー/モノクロ、画像補正のオン/オフ等の他の設定項目が挙げられる。また、印刷機能のみではなく、プリンタが処理可能な画像処理や解析処理、サイレントモードの有無、メモリカードの利用有無、インク残量等のステータス等の情報を表示しても良い。
S808で、CPU100は、設定画面1301に対するユーザ操作に基づいて、プリンタに設定する機能を選択する。上記の例で示したHTML記述を、レンダリング部216を用いてレンダリングしてディスプレイ104に表示した例が、図13の設定画面1301である。ネイティブ層218を介してプリンタ情報を要求し、プリンタ情報から、上記のネイティブ関数を用いて取得した情報を基に設定画面1301が形成されている。
尚、上記では、HTML記述はスクリプト層217で形成する構成で説明しているが、これに限定されるものではない。例えば、ネイティブ層218でHTML記述を形成し、スクリプト層217でそれをレンダリングしてディスプレイ104に表示するようにしても良い。
また、設定画面1301の用紙サイズ等の設定項目はそれぞれプルダウンメニューになっており、ユーザ操作によって各設定項目を選択することができる。ここで、設定画面1301は、プルダウンメニューによって、用紙サイズの設定項目として選択可能な項目の一覧が表示されている状態を示しており、ユーザ操作によってA4やA5等の用紙サイズを選択することができる。
S809で、CPU100は、設定完了ボタン1302に対するユーザ操作を検知すると、ユーザ操作によって選択された設定項目を含む設定情報を作成して、ネイティブ層218へ送信する。上記HTML記述の例にあるSetPrint( )もバインディング機能を有するネイティブ関数である。上記の例では、SetPrint( )を用いて、用紙サイズ、用紙種類、印刷品位、縁あり/なしの設定を文字列としてネイティブ層218へ渡している。
S810で、CPU100は、バインディング機能によりスクリプト層217から設定情報を受信する。ネイティブ層218では、後に、受信した設定情報、印刷対象の画像データ、さらにはスタンプの画像データを基に、プリンタ112の通信プロトコルに従って、プリントコマンドを生成する。そして、プリンタコマンドは、プリンタ通信部213を介してプリンタ112へ送信される。
以上のように、CPU100は、スクリプト層217からの要求によりネイティブ層218を介してプリンタ112から情報を取得する通信制御を行う。これにより、CPU100は、プリンタ112の性能を取得して、スクリプト層217で表示されるUIを制御することができる。
<レンダリングの詳細>
図3のS27のレンダリングの詳細について、図10を用いて説明する。尚、S27のレンダリングは、第2のインタプリタ221で実行される。ここで、第2のインタプリタ221も、第1のインタプリタ214と同様、ウェブ標準言語を翻訳し、描画・実行できるプログラムモジュールである。尚、S901−S903、S908は、CPU100がスクリプト層217のプログラムを実行することで実現され、S904−S907は、CPU100がネイティブ層218のプログラムを実行することで実現される。
S901で、CPU100は、インジケータを起動して、ディスプレイ104に表示する。ここで、インジケータとは、アプリケーション内部での処理状態(例えば、所定の処理が進行中であること)を示すUI表示のことである。例えば、プログレスバー等がそれに相当する。レンダリング処理には、通常、数秒から数十秒の時間がかかることが考えられるため、このようなインジケータの表示は必須となる。
S902で、CPU100は、レンダリングに必要な解像度情報(レンダリング解像度)を算出する。具体的には、S809で作成した設定情報で設定されている用紙種類と、GetInformationで取得したResolutionXとResolutionYの値から、レンダリング解像度を算出する。例えば、本実施形態では、スクリプト層217で、以下のような対応表を保持しているものとする。
<表1>
用紙サイズ PaperH[mm] PaperW[mm]
4x6 101.6 152.4
A4 297 210
L判 89 127
上記表1において、PaperH、PaperWは、用紙の高さ(長さ)、幅のサイズを示している。レンダリング解像度ResX及びResY(単位は画素)は、以下の式によって算出することができる。
ResX = PaperH / 25.4 × ResolutionX
ResY = PaperW / 25.4 × ResolutionY
S903で、CPU100は、ネイティブ層218の第2のインタプリタ221のAPIをバインド機能によって呼び出し、該APIに必要な情報を伝達する。必要な情報とは、具体的には、算出したレンダリング解像度と、さらに、印刷コンテンツを描画したスクリプト情報(Canvasによる記述情報)を伝達する。
S904で、CPU100は、レンダリング処理に必要な画像領域のメモリを確保する。確保すべきメモリのメモリサイズMは、例えば、以下のようにして算出する。
M = ResX × ResY × 要素数[Byte]
上記において要素数は、1画素あたりの色成分の数であり、通常はRGB成分を保持するため3となる。また、ここで、メモリサイズとは、例えば、RAM102で確保できるメモリサイズとするが、例えば、スワップ機能を利用して、2次記憶装置103にスワップ領域を増やすことができる場合には、そのスワップ領域で確保されるメモリサイズも加味する。
S905で、CPU100は、印刷コンテンツの描画情報を必要解像度(レンダリング解像度)に変換するための、拡大率ExpX,ExpYを次式によって算出する。
ExpX = ResX / CanX
ExpY = ResY / CanY
上式において、CanX及びCanYは、元々、表示のために用意されたCanvasエリアのサイズ(単位は画素)を示している。
拡大率を算出できたら、CPU100は、その拡大率を用いて、描画情報のスケーリングを含むレンダリングを行う。このスケーリングは、具体的には、CanvasのContextに用意されているscale関数を用いて、描画情報のスケーリングを行う。
S906で、CPU100は、RGB情報としてレンダリングによって得られる描画情報を確保したメモリ内に描画する。レンダリングに成功したら、S907で、CPU100は、インジケータ停止依頼をスクリプト層217へ送信する。
S908で、CPU100は、インジケータを停止して、ディスプレイ104の表示から消去する。
<プリントの詳細>
図3のS28のプリントの詳細について、図11を用いて説明する。尚、S1001−S1003は、CPU100がネイティブ層218のプログラムを実行することで実現される。
S1001で、CPU100は、S809で作成した設定情報、S906で変換した画像情報(RGB画像)をプリンタ112で利用可能な形式に変換する。プリンタが利用可能な形式は、RGBやJPEG、CMYK、PDF等のプリンタベンダーの独自フォーマット等の画像データである。S1002で、CPU100は、S1001の変換結果を用いてプリンタ112へ送信するプリンタコマンドを生成する。S1003で、CPU100は、プリンタの利用できる通信プロトコルに則り、S1002で生成したコマンドを、印刷用に選択されたプリンタ112に対し、プリンタ通信部213を利用して送信する。
S1004で、プリンタ112は、情報処理装置115から受信したコマンドに従って、プリントを実行する。
以上説明したように、本実施形態によれば、ハイブリッドアプリケーションにおいて、ネイティブ層での画像処理が処理中であることを示す指標(インジケータ)を、スクリプト層によって提示することができ、ユーザの利便性を向上させることができる。
<実施形態2>
実施形態1では、画像処理の実行中にインジケータを表示する構成としている。これに対して、実施形態2では、画像処理中に処理状態として、その処理経過をインジケータに表示する構成について説明する。ネイティブ層218の処理状況に応じた処理経過が表示される点が、実施形態1とは異なる。
画像処理中に、インジケータで処理経過を表示する処理を、図16を用いて説明する。尚、この処理は、図5の画像処理の一部として実行され、図5の処理と同一の処理については同一のステップ番号を付加して、その詳細説明は省略する。尚、S1602、S1612は、CPU100がスクリプト層217のプログラムを実行することで実現され、S1606は、CPU100がネイティブ層218のプログラムを実行することで実現される。
S401の処理後、S1602で、CPU100は、インジケータを起動して、ディスプレイ104に表示する。起動するインジケータは、あらかじめ登録されており、例えば、図17に示すようなインジケータ1700を表示する。尚、インジケータ1700は、OSに搭載されているアニメーション等の所定の画像を利用してもよい。
図17に示すインジケータ1700は、画像処理部208での処理経過を取得し、それに基づいて表示する。1701は、処理経過表示部であり、画像処理部208から取得した処理経過を表示するステータスバーである。本例では、処理経過を画像処理部208から割合で取得し、それに基づいて処理経過表示部1701の表示を制御する。
以下に、インジケータ1700の表示用スクリプトの一例を記述する。
<section>
<h2>ImageProcess</h2>
<p><progress value="70" max="100"></progress></p>
</section>
上記例は、処理が70%まで進行した例を示しており、S1602の起動直後は0%で表示する。
S403〜S405の処理後、S1606で、CPU100は、取得した補正パラメータから施すべき画像処理を判断し、RGB画像に対して画像処理を行う。この時、ネイティブ層218は、画像処理の処理経過をスクリプト層217に送信し、インジケータ1700に表示する処理経過を更新して表示する。
更新タイミングは、画像処理部208で一定量の画像処理が実行された場合に、ネイティブ層218からスクリプト層217に処理経過を送信する。
処理経過を算出する方法は、以下を例とする。
Rate = y / H × 100
S405で特定されたRGB画像の高さをHとし、処理中の高さをyとすると、画像処理が処理対象のRGB画像の高さHのどこまで処理したかを割合Rateとして算出する。もちろん、画像の面積等、他の指標によって処理経過を算出する構成としてもよい。ここでは、算出した割合Rateが10%の倍数になったタイミングで、インジケータ1700の処理経過を更新する。もちろん、他のタイミングであってもよい。
S407で、CPU100は、インジケータ1700の表示を更新する際に、割合Rate、つまり、処理経過をスクリプト層217で解釈できるBASE64データに変換する。ここで、割合Rateをスクリプト層217で解釈できるBASE64データに変換したものをRate’とすると、このRate’を、ネイティブ層218はスクリプト層217へ送信する。
S1612で、CPU100は、ネイティブ層218から受信した処理経過(Rate’)に基づいて、インジケータの表示を更新する。スクリプト層217では、画像処理部208から送信された処理経過Rate’に基づいて、インジケータ表示用のスクリプトを更新する。以下に、インジケータをRate’で更新したスクリプトの一例を記述する。
<section>
<h2>ImageProcess</h2>
<p><progress value=Rate' max="100">処理中</progress></p>
</section>
ここでは、画像処理部208の処理経過のタイミングで、スクリプト層217に処理経過を送信する方法に関して説明しているが、これに限定されない。例えば、スクリプト層217から画像処理部208に処理経過を問合せ、その問い合わせ結果を表示するようにしても良い。
また、画像処理部208で処理経過を算出して、その処理経過を変換してスクリプト層217で表示する構成としているが、これに限定されない。例えば、スクリプト層217で設定されたプログレス表示用の関数を変換部を通してネイティブ層218から操作する構成としても良い。
以上説明したように、本実施形態によれば、ハイブリッドアプリケーションにおいて、ネイティブ層での画像処理の処理状況を示す指標を、スクリプト層によって提示することができ、ユーザの利便性を向上させることができる。
<実施形態3>
実施形態3では、画像処理中に、インジケータから処理の中断を指示する構成について説明する。これは、例えば、インジケータに対するユーザ指示により、スクリプト層217から中断指示を発行し、ネイティブ層218で実行している画像処理を制御する点が、実施形態1及び2とは異なる。
画像処理中に、インジケータから処理の中断を指示する処理を、図18を用いて説明する。この処理は、図5の画像処理の一部として実行され、図5の処理と同一の処理については同一のステップ番号を付加して、その詳細説明は省略する。尚、S1802、S1812、S1813は、CPU100がスクリプト層217のプログラムを実行することで実現され、S1806は、CPU100がネイティブ層218のプログラムを実行することで実現される。
S401の処理後、S1802で、CPU100は、インジケータを起動して、ディスプレイ104に表示する。起動するインジケータは、あらかじめ登録されており、例えば、図19に示すようなインジケータ1903を表示する。尚、図19において、図17と同一の構成要素については、同一の参照番号を付加して、その詳細説明は省略する。
図19に示すインジケータ1903は、処理経過表示部1701に加えて、画像処理の中断を指示するための指示部として、キャンセルボタン1902を有している。このキャンセルボタン1902を押下すると、ネイティブ層218で実行されている画像処理を中断するための指示が発行される。
以下、インジケータ1903の表示用スクリプトの一例を記述する。
<header>
function cancel_process(){
cancel_baind();
}
</header>
<section>
<h2>ImageProcess</h2>
<p><progress value=Rate' max="100">処理中</progress></p>
<p><input type="button" value="cancel" onclick="cansel_process()"></p>
</section>
ここで、cancel_baind関数は、JavaScriptからバインドされており、ネイティブ層218の割込処理を実行する。この関数では、ネイティブ層218に送信する中断信号を変換する。
また、割込処理は、画像処理部208が以下のような信号受信部を備えることで実現する。信号受信部は、cancel_baind関数から送信される中断信号により、画像処理を中断する。
int imageProcess(void)
{
if (signal(SIGINT, (中断処理関数) ) == ERROR)
{
// 画像処理実行部
}
}
S402〜S405の処理後、S1806で、CPU100は、取得した補正パラメータから施すべき画像処理を判断し、RGB画像に対して画像処理を行う。画像処理実行中は、インジケータ1903がディスプレイ104上に表示されている。
S1812で、CPU100は、インジケータ1903のキャンセルボタン1902の押下を検知する。これを受けて、スクリプト層217は、画像処理の中断指示を発行する。S1813で、CPU100は、発行した中断信号をネイティブ層218で利用できる形式に変換する。その後、スクリプト層217は、変換した中断信号をネイティブ層218へ送信する。これを受けて、ネイティブ層218の画像処理部208は、受信した中断信号に基づき画像処理を中断する。
尚、画像処理の実行と画像処理の中断の指示の監視を、マルチプロセスで行っても良い。マルチプロセスで実行する際には、実行環境の情報を取得して、それに応じてプロセス分割数を変更しても良い。また、中断した画像処理を再開するために、その再開の指示を行うための指示部を更にインジケータ1903上に設けても良い。
以上説明したように、本実施形態によれば、ハイブリッドアプリケーションにおいて、スクリプト層からユーザ指示によってネイティブ層の処理を制御することができ、ユーザの利便性を向上させることができる。
<実施形態4>
実施形態4では、画像処理中に、画像処理部208とは異なる処理部で問題が発生した場合に、エラーメッセージを表示する例に関して説明する。処理中のインジケータとは、別にネイティブ層218で発生したタイミングでエラーメッセージを表示する点が、実施形態1乃至3とは異なる。
画像処理中に発生したエラーをスクリプト層217で表示する処理を、図20を用いて説明する。尚、この処理は、図5の画像処理の一部として実行され、図5の処理と同一の処理については同一のステップ番号を付加して、その詳細説明は省略する。尚、S2010の処理は、CPU100がスクリプト層217のプログラムを実行することで実現され、S2006は、CPU100がネイティブ層218のプログラムを実行することで実現される。
S401〜S405の処理後、S2006で、CPU100は、画像処理の実行時にエラーが発生した場合には、その旨を示すエラー情報を生成する。例として、以下のプログラムのように、ネイティブ層218での画像処理の実行時にメモリが不足していることがOSから通知された場合、CPU100は、メモリ不足を示すエラーメッセージをスクリプト層217に返す。一方、メモリ不足とは異なるエラーがOSから通知された場合、CPU100は、予期せぬエラーを示すメッセージをスクリプト層217に返す。
int image_process( (画像データ), (画像処理パラメータ) )
{
// 画像処理パラメータのチェック
if( 画像処理パラメータが不正? )
{
return ERROR_PARAM;

}

// メモリ確保
// メモリ確保処理を実行しエラーチェック
if( メモリ確保失敗? )
{
return ERROR_MEMORY;
}

// 画像処理部

if( 予期せぬエラー発生? )
{
return ERROR_INVARID;
}
}
プログラム中に記述されているエラーは、予め定数と対応づけてある。ERROR_PARAMは、画像処理パラメータが不正な場合のエラーである。ERROR_MEMORYは、画像処理の実行時に必要なメモリを確保する際に確保できない場合のエラーである。ERROR_INVARIDは、予期せぬ問題が発生した場合のエラーである。もちろん、上記以外のエラーをハンドリングしてもよい。
ネイティブ層218では、発行したエラー定数に基づいて、対応するエラーメッセージに置き換える。更に、S407で、CPU100は、エラーメッセージをスクリプト層217で解釈できる形式のデータ(例えば、BASE64データ)に変換してスクリプト層217に送信する。
S2010で、CPU100は、受信したデータ(エラーメッセージ)に基づいて、ディスプレイ104にエラー表示を行う。以下、エラー表示のスクリプト例を記述する。
<html>
<head>
<script type="text/javascript" language="javascript">
function error() {
window.alert(ERROR_MESSAGE \n);
}
</script>
</head>
</html>
スクリプト内のERROR_MESSAGEは、ネイティブ層218から受信するエラーメッセージに応じて変更する。
ここでは、ネイティブ層218で、エラー定数をエラーメッセージに変換する構成としているが、これに限定されない。スクリプト層217で、エラーメッセージを変換する構成としても良い。その場合、ネイティブ層218でエラー定数がBASE64データに変換されて、スクリプト層217に送信される。そして、スクリプト層217では、予め対応付けされたエラー定数と対応するBASE64データに基づいて、BASE64データをエラーメッセージに変換して表示する。
以上説明したように、本実施形態によれば、ハイブリッドアプリケーションにおいて、ネイティブ層での画像処理の実行中のエラーを示す指標を、スクリプト層によって提示することができ、ユーザの利便性を向上させることができる。
<実施形態5>
上記実施形態のインジケータは一例に過ぎず、ユーザに対して、処理経過を通知することができる形態であれば、どのようなものでも良い。
上記実施形態においては、ネイティブ層218で、画像処理を実行する構成を示しているが、これに限定されない。例えば、画像処理以外の処理、またはプリンタ等のデバイスを制御するためのデバイス制御処理についても、適用することができる。
また、アプリケーションを起動した最初にプリンタを選択する構成としているが、これに限定されるものではない。例えば、印刷設定を行う過程において、プリンタを設定し、そのプリンタに情報取得コマンドを送信する構成とすることもできる。
また、上記実施形態における表示1で示す情報や閾値等のデータは、アプリケーション内部に予め保持されていてもよいし、プリンタ本体に含まれており、それをGetInformationコマンドで取得する構成としてもよい。また、図1のサーバ114に保持しておき、アプリケーションを起動した際に、ネットワーク113を用いて、これらのデータを取得する構成としても良い。
加えて、上記実施形態のプリンタは、インクジェットプリンタ、レーザープリンタ、昇華型プリンタ、ドットインパクトプリンタ等を利用することができる。これらには、プリンタ機能、スキャナ機能等を有する、単一機能ではない、いわゆる、複合機の場合もある。
また、上記実施形態では、スクリプト層の命令を翻訳・実行するためのインタプリタを2つ備える場合を示しているが、これに限定されるものではない。例えば、UIに使用する言語や、印刷の目的に応じて、ネイティブ層218内部で更に複数個のインタプリタを保持し、利用する構成としてもよい。
また、上記実施形態では、情報処理装置115として、携帯型情報端末上でハイブリッド型アプリケーションを動作させる場合を例に挙げて説明しているが、これに限定されるものではない。例えば、ハイブリッド型アプリケーションが動作する環境は、スマートフォンやタブレットPCを始めとする情報端末の他に、PCやサーバ、ゲーム機、デジタルカメラ等の他の電子機器とすることもできる。
加えて、上記実施形態では、外部デバイスとしてプリンタを例に挙げて説明しているが、これに限定されるものではない。例えば、外部デバイスとして、他のスマートフォンやタブレットPC、PCやサーバ、ゲーム機、スキャナ等の、自身に関する情報を提供可能な他の電子機器も対象となる。例えば、スクリプト層から他の携帯型情報端末のバッテリ残量、通信状態、無線LANの接続有無、GPSや温度、湿度、加速度等、その電子機器が有する機能等の電子機器に関する情報を取得することも可能となる。
また、外部デバイスの例として、電化製品や自動車も含まれる。例えば、携帯型情報端末上のスクリプト層から外部の冷蔵庫、洗濯機、エアコン、照明、掃除機、ポット等の電化機器の情報を取得したり、その電子機器の機能のオン/オフや出力の調整等も可能となる。
加えて、上記実施形態では、コンテンツ(写真画像やスタンプ画像)の描画として、JavaScriptのCanvas機能で例に挙げて説明しているが、コンテンツの描画は、これに限定されるものではない。例えば、SVG(Scalable Vector Graphics)を利用して、コンテンツを描画することも可能である。
尚、以上の実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
また、本実施形態の機能を実現するためのプログラムコードを、1つのコンピュータ(CPU、MPU)で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。
217:スクリプト層、218:ネイティブ層、219:OS層

Claims (17)

  1. プロセッサで翻訳され実行されるための命令セットを含む第1のプログラム層と、前記プロセッサ以外で予め翻訳された命令セットを含み且つ印刷装置と通信可能な第2のプログラム層と、を包含するアプリケーションソフトウェアプログラムを実行可能なコンピュータに、
    画像処理の対象となる対象画像の選択指示を受け付けたことに応じて、前記第2のプログラム層が記憶装置から前記対象画像を読み取って記憶保持する画像読み取り工程と、
    前記第1のプログラム層が前記画像処理を行うためのパラメータ情報を前記第2のプログラム層へ送信する第1送信工程と、
    前記第2のプログラム層が、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行う画像処理工程と、
    前記第1のプログラム層が、前記パラメータ情報に応じた画像処理中であることを利用者に認知させるためのインジケータの表示を開始する表示制御工程と、
    前記第2のプログラム層が、前記画像処理の経過を示すデータを、前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層へ送信するデータ送信工程と
    を実行させ、
    前記第2のプログラム層は、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行った後で、前記インジケータの停止を、定義されている関数を用いて前記第1のプログラム層に対して要求し、
    前記表示制御工程において、前記第1のプログラム層は、前記データ送信工程で送信されたデータに基づく前記画像処理の経過に関する表示処理および前記停止の要求に応じた処理を実行し、
    さらに前記コンピュータに、
    前記第1のプログラム層において所定の指示がなされたことを検知した場合、前記第2のプログラム層が、前記印刷装置から印刷機能に関する情報を取得する取得工程と、
    前記第2のプログラム層が、前記印刷機能に関する情報を前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層に送信する情報送信工程と、
    前記第1のプログラム層が、前記情報送信工程で送信したデータに従って印刷設定画面を表示する設定画面表示工程と、
    前記第2のプログラム層が、描画情報が前記印刷設定画面において設定された用紙サイズ情報に基づくサイズとなるようにレンダリング処理を実行するレンダリング工程とを実行させ、
    前記表示制御工程では、前記レンダリング工程によるレンダリング処理に対応するインジケータの表示処理を実行する
    ことを特徴とするコンピュータが読み取り可能なソフトウェアプログラム。
  2. プロセッサで翻訳され実行されるための命令セットを含む第1のプログラム層と、前記プロセッサ以外で予め翻訳された命令セットを含み且つ印刷装置と通信可能な第2のプログラム層と、を包含するアプリケーションソフトウェアプログラムを実行可能な情報処理装置の制御方法であって、
    画像処理の対象となる対象画像の選択指示を受け付けたことに応じて、前記第2のプログラム層が記憶装置から前記対象画像を読み取って記憶保持する画像読み取り工程と、
    前記第1のプログラム層が前記画像処理を行うためのパラメータ情報を前記第2のプログラム層へ送信する第1送信工程と、
    前記第2のプログラム層が、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行う画像処理工程と、
    前記第1のプログラム層が、前記パラメータ情報に応じた画像処理中であることを利用者に認知させるためのインジケータの表示を開始する表示制御工程と、
    前記第2のプログラム層が、前記画像処理の経過を示すデータを、前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層へ送信するデータ送信工程と
    備え
    前記第2のプログラム層は、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行った後で、前記インジケータの停止を、定義されている関数を用いて前記第1のプログラム層に対して要求し、
    前記表示制御工程において、前記第1のプログラム層は、前記データ送信工程で送信されたデータに基づく前記画像処理の経過に関する表示処理および前記停止の要求に応じた処理を実行し、
    さらに、
    前記第1のプログラム層において所定の指示がなされたことを検知した場合、前記第2のプログラム層が、前記印刷装置から印刷機能に関する情報を取得する取得工程と、
    前記第2のプログラム層が、前記印刷機能に関する情報を前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層に送信する情報送信工程と、
    前記第1のプログラム層が、前記情報送信工程で送信したデータに従って印刷設定画面を表示する設定画面表示工程と、
    前記第2のプログラム層が、描画情報が前記印刷設定画面において設定された用紙サイズ情報に基づくサイズとなるようにレンダリング処理を実行するレンダリング工程とを備え、
    前記表示制御工程では、前記レンダリング工程によるレンダリング処理に対応するインジケータの表示処理を実行する
    ことを特徴とする制御方法。
  3. プロセッサで翻訳され実行されるための命令セットを含む第1のプログラム層と、前記プロセッサ以外で予め翻訳された命令セットを含み且つ印刷装置と通信可能な第2のプログラム層と、を包含するアプリケーションソフトウェアプログラムを実行可能な情報処理装置であって、
    画像処理の対象となる対象画像の選択指示を受け付けたことに応じて、前記第2のプログラム層によって記憶装置から前記対象画像を読み取って記憶保持する画像読み取り手段と、
    前記第1のプログラム層によって、前記画像処理を行うためのパラメータ情報を前記第2のプログラム層へ送信する第1送信手段と、
    前記第2のプログラム層によって、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行う画像処理手段と、
    前記第1のプログラム層によって、前記パラメータ情報に応じた画像処理中であることを利用者に認知させるためのインジケータの表示を開始する表示制御手段と、
    前記第2のプログラム層によって、前記画像処理の経過を示すデータを、前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層へ送信するデータ送信手段とを有し、
    前記第2のプログラム層は、前記第1のプログラム層から受信したパラメータ情報に応じた画像処理を、前記第2のプログラム層が記憶保持している対象画像に対して行った後で、前記インジケータの停止を、定義されている関数を用いて前記第1のプログラム層に対して要求し、
    前記表示制御手段は、前記第1のプログラム層によって、前記データ送信手段で送信されたデータに基づく前記画像処理の経過に関する表示処理および前記停止の要求に応じた処理を実行し、
    さらに、
    前記第1のプログラム層において所定の指示がなされたことを検知した場合、前記第2のプログラム層によって、前記印刷装置から印刷機能に関する情報を取得する取得手段と、
    前記第2のプログラム層によって、前記印刷機能に関する情報を前記第1のプログラム層が解釈できるデータに変換して前記第1のプログラム層に送信する情報送信手段と、
    前記第1のプログラム層によって、前記情報送信手段が送信したデータに従って印刷設定画面を表示する設定画面表示手段と、
    前記第2のプログラム層によって、描画情報が前記印刷設定画面において設定された用紙サイズ情報に基づくサイズとなるようにレンダリング処理を実行するレンダリング手段とを備え、
    前記表示制御手段は、前記レンダリング手段によるレンダリング処理に対応するインジケータの表示処理を実行する
    ことを特徴とする情報処理装置。
  4. 前記表示制御手段は、前記第1のプログラム層によって、前記第2のプログラム層から送信された前記変換されたデータに基づいて前記インジケータの表示を更新する
    ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記表示制御手段は、更に、前記第2のプログラム層が行っている画像処理の中断を指示する指示部を前記第1のプログラム層によって表示する
    ことを特徴とする請求項3又は4に記載の情報処理装置。
  6. 前記表示制御手段は、前記第1のプログラム層により、前記第2のプログラム層から画像処理のエラーを示すデータを受信した場合には前記エラーに関する情報を表示する
    ことを特徴とする請求項3乃至5のいずれか1項に記載の情報処理装置。
  7. 前記第1送信手段は、前記第1のプログラム層により、前記パラメータ情報を前記第2のプログラム層が解釈可能な形式に変換してから前記第2のプログラム層に対して送信する
    ことを特徴とする請求項3乃至6のいずれか1項に記載の情報処理装置。
  8. 前記表示制御手段は、前記第1のプログラム層によって、前記停止の要求に応じた処理として前記インジケータを非表示にすることを特徴とする請求項3乃至7のいずれか1項に記載の情報処理装置。
  9. 前記第2のプログラム層によって、前記レンダリング処理の結果に基づく印刷データを生成して前記印刷装置に送信する印刷データ送信手段を更に有し、
    前記表示制御手段は、前記第1のプログラム層によって、前記描画情報のレンダリング処理の進捗を示すためのインジケータを表示し、前記レンダリング処理の完了に応じた処理を実行することを特徴とする請求項3乃至8のいずれか1項に記載の情報処理装置。
  10. 前記印刷データ送信手段は、前記第2のプログラム層によって、前記印刷設定画面において設定された設定情報と前記レンダリング処理の結果に基づく印刷データとを前記印刷装置に送信することを特徴とする請求項に記載の情報処理装置。
  11. 前記表示制御工程において、前記第1のプログラム層は、前記第2のプログラム層から送信された前記変換されたデータに基づいて前記インジケータの表示を更新する
    ことを特徴とする請求項1に記載のソフトウェアプログラム。
  12. 前記表示制御工程において、更に、前記第2のプログラム層が行っている画像処理の中断を指示する指示部を前記第1のプログラム層によって表示する
    ことを特徴とする請求項1又は11に記載のソフトウェアプログラム。
  13. 前記表示制御工程において、前記第1のプログラム層は、前記第2のプログラム層から画像処理のエラーを示すデータを受信した場合には前記エラーに関する情報を表示する
    ことを特徴とする請求項1,1112のいずれか1項に記載のソフトウェアプログラム。
  14. 前記第1送信工程において、前記第1のプログラム層が、前記パラメータ情報を前記第2のプログラム層が解釈可能な形式に変換してから前記第2のプログラム層に対して送信する
    ことを特徴とする請求項1,11乃至13のいずれか1項に記載のソフトウェアプログラム。
  15. 前記表示制御工程において、前記第1のプログラム層が、前記停止の要求に応じた処理として前記インジケータを非表示にすることを特徴とする請求項1,11乃至14のいずれか1項に記載のソフトウェアプログラム。
  16. 前記第2のプログラム層が、前記レンダリング処理の結果に基づく印刷データを生成して前記印刷装置に送信する印刷データ送信工程を更に有し、
    前記表示制御工程において、前記第1のプログラム層が、前記描画情報のレンダリング処理の進捗を示すためのインジケータを表示し、前記レンダリング処理の完了に応じた処理を実行することを特徴とする請求項1,11乃至15のいずれか1項に記載のソフトウェアプログラム。
  17. 前記印刷データ送信工程において、前記第2のプログラム層が、前記印刷設定画面において設定された設定情報と前記レンダリング処理の結果に基づく印刷データとを前記印刷装置に送信することを特徴とする請求項16に記載のソフトウェアプログラム。
JP2014135175A 2014-06-30 2014-06-30 情報処理装置、制御方法、及びソフトウェアプログラム Active JP6138088B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2014135175A JP6138088B2 (ja) 2014-06-30 2014-06-30 情報処理装置、制御方法、及びソフトウェアプログラム
US14/740,752 US9671981B2 (en) 2014-06-30 2015-06-16 Information processing apparatus, control method for information processing apparatus, and non-transitory computer-readable storage medium for controlling and stopping display of an indicator for causing a user to recognize that image processing is in progress
US15/496,201 US10146484B2 (en) 2014-06-30 2017-04-25 Information processing apparatus, control method for information processing apparatus, and non-transitory computer-readable storage medium for controlling display of an indicator
US16/166,570 US10712978B2 (en) 2014-06-30 2018-10-22 Information processing apparatus, control method for information processing apparatus, and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014135175A JP6138088B2 (ja) 2014-06-30 2014-06-30 情報処理装置、制御方法、及びソフトウェアプログラム

Publications (2)

Publication Number Publication Date
JP2016014917A JP2016014917A (ja) 2016-01-28
JP6138088B2 true JP6138088B2 (ja) 2017-05-31

Family

ID=54930509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014135175A Active JP6138088B2 (ja) 2014-06-30 2014-06-30 情報処理装置、制御方法、及びソフトウェアプログラム

Country Status (2)

Country Link
US (3) US9671981B2 (ja)
JP (1) JP6138088B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6378645B2 (ja) 2014-06-13 2018-08-22 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
JP6463914B2 (ja) 2014-06-30 2019-02-06 キヤノン株式会社 情報処理装置、処理方法、及びプログラム
JP6363888B2 (ja) 2014-06-30 2018-07-25 キヤノン株式会社 情報処理装置、およびプログラム
JP6649832B2 (ja) * 2016-03-30 2020-02-19 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
US9904537B2 (en) * 2016-04-19 2018-02-27 Dropbox, Inc. Providing a hybrid application
JP6799396B2 (ja) 2016-07-01 2020-12-16 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP6786342B2 (ja) 2016-10-18 2020-11-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP6914749B2 (ja) * 2017-06-29 2021-08-04 キヤノン株式会社 サーバ装置、情報処理装置、および制御方法
EP3676635A4 (en) * 2017-08-31 2021-09-01 AVEVA Software, LLC OBJECT INDEXING DATA NETWORK
JP7383420B2 (ja) * 2019-08-09 2023-11-20 キヤノン株式会社 画像処理装置、記録装置、画像処理方法、及びプログラム
JP7328266B2 (ja) * 2019-09-18 2023-08-16 キヤノン株式会社 通信装置、制御方法およびプログラム
JP7547106B2 (ja) * 2020-07-30 2024-09-09 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292273B1 (en) * 1998-08-07 2001-09-18 Hewlett-Packard Company Appliance and method of using same having a delete capability for saved data
JP3917343B2 (ja) * 2000-02-25 2007-05-23 株式会社東芝 マルチプラットフォーム環境における文字コード変換方式および文字コード変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003037719A (ja) * 2001-05-17 2003-02-07 Sharp Corp 画像処理装置
US20080123130A1 (en) * 2005-01-05 2008-05-29 Akira Matsumoto Distributed Printing System and Distributed Printing Control Device
JP4405942B2 (ja) 2005-06-14 2010-01-27 キヤノン株式会社 画像処理装置およびその方法
US20090103124A1 (en) * 2005-08-31 2009-04-23 Canon Kabushiki Kaisha Image forming apparatus, mobile device, and control method therefor
JP4870621B2 (ja) * 2006-09-15 2012-02-08 株式会社リコー 情報処理装置、方法、システム、プログラム及びその記録媒体
JP2008130060A (ja) * 2006-11-27 2008-06-05 Oki Data Corp 画像処理装置制御プログラムのインストール方法、通信プログラム、及び、画像処理装置
JP5127592B2 (ja) 2008-06-25 2013-01-23 キヤノン株式会社 画像処理装置および画像処理方法、プログラム並びに、コンピュータ読み取り可能な記録媒体
JP5300595B2 (ja) 2009-05-28 2013-09-25 キヤノン株式会社 画像処理装置及び方法、及びコンピュータプログラム
JP5565197B2 (ja) * 2010-08-18 2014-08-06 富士通株式会社 Webアプリケーションの連携方法、連携装置、および連携プログラム
KR101350661B1 (ko) 2011-09-30 2014-01-10 엔에이치엔엔터테인먼트 주식회사 웹 기술을 이용한 하이브리드 어플리케이션 구동 장치 및 방법
JP6378645B2 (ja) 2014-06-13 2018-08-22 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
JP6386803B2 (ja) 2014-06-13 2018-09-05 キヤノン株式会社 装置、方法、及びプログラム
JP6438218B2 (ja) 2014-06-13 2018-12-12 キヤノン株式会社 装置、方法、及びプログラム
JP6478487B2 (ja) 2014-06-13 2019-03-06 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
JP5901704B2 (ja) 2014-06-30 2016-04-13 キヤノン株式会社 情報処理装置、情報処理方法、プログラム
JP6463914B2 (ja) 2014-06-30 2019-02-06 キヤノン株式会社 情報処理装置、処理方法、及びプログラム
JP6381319B2 (ja) 2014-06-30 2018-08-29 キヤノン株式会社 情報処理装置、処理方法、及びプログラム
JP6525517B2 (ja) 2014-06-30 2019-06-05 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
JP6363888B2 (ja) 2014-06-30 2018-07-25 キヤノン株式会社 情報処理装置、およびプログラム

Also Published As

Publication number Publication date
US20170228199A1 (en) 2017-08-10
JP2016014917A (ja) 2016-01-28
US10712978B2 (en) 2020-07-14
US20190056891A1 (en) 2019-02-21
US9671981B2 (en) 2017-06-06
US20150378645A1 (en) 2015-12-31
US10146484B2 (en) 2018-12-04
US20200167100A9 (en) 2020-05-28

Similar Documents

Publication Publication Date Title
JP6138088B2 (ja) 情報処理装置、制御方法、及びソフトウェアプログラム
JP6386803B2 (ja) 装置、方法、及びプログラム
JP6381319B2 (ja) 情報処理装置、処理方法、及びプログラム
JP6478487B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP6378645B2 (ja) 情報処理装置、制御方法、及びプログラム
JP6363888B2 (ja) 情報処理装置、およびプログラム
US10075620B2 (en) Information processing apparatus, control method for information processing apparatus, and non-transitory computer-readable storage medium
JP5901704B2 (ja) 情報処理装置、情報処理方法、プログラム
JP6463914B2 (ja) 情報処理装置、処理方法、及びプログラム
JP6438218B2 (ja) 装置、方法、及びプログラム
JP6008897B2 (ja) 装置、方法、及びプログラム
JP6360370B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP7395334B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP6757368B2 (ja) 情報処理装置、処理方法、及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160920

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170221

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170327

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170425

R151 Written notification of patent or utility model registration

Ref document number: 6138088

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151