CN110109558B - 墨水数据输出方法及墨水数据输出装置 - Google Patents

墨水数据输出方法及墨水数据输出装置 Download PDF

Info

Publication number
CN110109558B
CN110109558B CN201910047465.5A CN201910047465A CN110109558B CN 110109558 B CN110109558 B CN 110109558B CN 201910047465 A CN201910047465 A CN 201910047465A CN 110109558 B CN110109558 B CN 110109558B
Authority
CN
China
Prior art keywords
data
stroke
ink
ink data
stroke object
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
CN201910047465.5A
Other languages
English (en)
Other versions
CN110109558A (zh
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.)
Wacom Co Ltd
Original Assignee
Wacom Co Ltd
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 Wacom Co Ltd filed Critical Wacom Co Ltd
Publication of CN110109558A publication Critical patent/CN110109558A/zh
Application granted granted Critical
Publication of CN110109558B publication Critical patent/CN110109558B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0414Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means using force sensing means to determine a position
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/044Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by capacitive means
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/044Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by capacitive means
    • G06F3/0447Position sensing using the local deformation of sensor cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/42Global feature extraction by analysis of the whole pattern, e.g. using frequency domain transformations or autocorrelation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/14Image acquisition
    • G06V30/142Image acquisition using hand-held instruments; Constructional details of the instruments
    • G06V30/1423Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/32Digital ink
    • G06V30/333Preprocessing; Feature extraction
    • G06V30/347Sampling; Contour coding; Stroke extraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0383Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/041Indexing scheme relating to G06F3/041 - G06F3/045
    • G06F2203/04105Pressure sensors for measuring the pressure or force exerted on the touch surface without providing the touch position
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/041Indexing scheme relating to G06F3/041 - G06F3/045
    • G06F2203/04106Multi-sensing digitiser, i.e. digitiser using at least two different sensing technologies simultaneously or alternatively, e.g. for detecting pen and finger, for saving power or for improving position detection

Abstract

本发明提供一种墨水数据输出方法及墨水数据输出装置。一种生成笔画对象以形成墨水数据的方法通常包括两个步骤。首先,顺序地接收指示下笔事件、笔移动事件和抬笔事件的笔事件数据以生成共同地形成笔画对象的点对象。所述点对象用作用于根据定义曲线插值算法来对曲线段进行插值的控制点。其次,定义要在所述笔画对象被呈现时显示的所述笔画对象内的范围的两个参数作为所述笔画对象的属性被生成。当呈现所生成的笔画对象时,与整体上显示所述笔画对象不同,系统将所述笔画对象的显示限于由所述两个参数所指示的范围。

Description

墨水数据输出方法及墨水数据输出装置
本申请为2016年5月17日提交的、申请号为201480062786.8的、发明名称为“用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统”的申请的分案申请。
技术领域
本发明涉及墨水数据输出方法及墨水数据输出装置。
背景技术
允许用户通过使用笔形装置来输入手绘(或徒手画的)数据的各种手写输入系统是已知的。例如,允许输入包括关联的笔压力和笔倾斜数据的手绘数据的电磁谐振型笔平板输入系统是已知的。作为另外的示例,类似于如何在手指与传感器表面之间产生电容地在工具与(平板)传感器表面之间生成电容的静电型笔输入系统是已知的。更进一步地,输出诸如从确定的位置的合集得到的手势信息的相对较简单的信息的输入系统也是已知的。
通常,由笔形工具所输入的手绘数据或笔画(路径或迹线)数据可用在单个绘图应用中以生成诸如像素数据或图像数据的栅格数据。存在对于允许通过操作各种类型的装置和应用,诸如墨水消息传送、墨水归档和检索应用、电子邮件、照片调绘、远程视频会议应用等,而生成的手绘数据或笔画数据在各种装置之中共享的方法和系统的需要。数字墨水或墨水数据(在下文中“墨水数据”)被提出来解决这样的需要。通常使用诸如直接像素数据或图像数据的栅格数据,所述栅格数据是根据用来支持用户对输入装置的笔画输入操作的特定应用的设定来生成的。墨水数据另一方面是中间数据,所述中间数据存在于笔画数据的栅格化之前并且形式为可由各种应用使用的向量数据。在以下非专利文献文档(D1)至(D4)中描述了简单的墨水数据类型:
(D1)W3C,Recommendation 20,September 2011,"Ink Markup Language(InkML)"
(URL-http://www.w3.org/TR/2011/REC-InkML-20110920/)
(D2)微软公司等,"Ink Serialized Format Specification"2007
(URL-http//download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/InkSerializedFormat(ISF)Specification.pdf)
(D3)W3C Working Draft 11,February 2014,"Scalable Vector Graphics(SVG)2"
(URL-http://www.w3.org/TR/SVG2/);W3C Recommendation,16August 2011,"Scalable Vector Graphics(SVG)1.1(Second Edition)"(URL-http://www.w3.org/TR/2011/REC-SVG11-201110816/)
(D4)W3C,"HTML5A vocabulary and associated APIs for HTML and XHTML W3CRecommendation 28October 2014"
(URL-http://www.w3.org/TR/html5/)
(D5)Slate Corporation等,"JOT-A Specification for an Ink Storage andInterchange Format",Version 1.0,Sep.1996
简要地,InkML(D1)和ISF(D2)数据结构表示由笔型装置以可在不同应用之中共享的方式输入的笔画数据。SVG(D3)提供不管什么类型的笔装置被用作输入装置都允许绘制通过用户输入的控制点定义为向量数据的路径的Web标准。
(D1)至(D4)中所描述的墨水数据全部定义再现通过笔或手指的移动而形成的迹线(或路径)所需的几何信息。这样的信息在本文中被统称作“笔画对象”。
(D1)描述当前最广泛地知道的墨水数据。(D1)定义被称作“迹线”的对象如下:“<迹线>是用来随着用户写下数字墨水而记录笔的轨迹的基本元素”。
例如,
<ink><trace>x1 y1,x2y2,.....xn yn</trace></ink>
描述从点x1、y1向点xn、yn延伸的笔画对象的路径。
(D2)描述通过可在MicrosoftTM WindowsTM应用上使用的墨水功能生成的墨水数据。(D2)将被称作“笔画”的对象定义如下:“如在简单示例中早前所描述的,笔画是ISF中的最基本且重要的特性。笔画包含标记笔画中的单独点以及也潜在地标记其它每笔画特性的分组数据。”
(D3)描述由各种浏览器和绘图软件所支持的向量数据的标准,但是(D3)未假定笔输入。(D3)将被称作“路径”的信息定义如下:“路径表示能够被填充、画、用作为裁切路径或三种的任何组合的形状的轮廓。”在SVG(D3)中,基于诸如本领域中众所周知的Poly-Bezier(三次Bezier、二次Bezier)曲线的插值曲线对路径对象进行插值。
例如,
<path stroke="green"stroke-width="5"d="M100,200C100,100 300,100300,200"/>描述使用两个控制点(100,100)和(300,100)并且具有路径宽度“5”和颜色绿色的从开始控制点(100,200)起始到结束控制点(300,200)的路径。
(D4)定义被称作“画布路径”的类,其能够利用例如二次曲线命令和Bezier曲线命令来生成插值曲线。
在本描述中,术语“笔画对象”被用作涵盖以上(D1)至(D4)的“迹线”、“笔画”、“路径”以及“画布路径”的一般术语。
笔画对象是其数据结构包括被共同地用来再现通过笔或手指的移动而形成的迹线(或路径)的一组点或控制点坐标的向量数据信息。根据各种实施例,本发明提供用于在各种应用上并在各种应用之间生成、操作(例如,切片)、呈现并传递表示手绘(徒手画的)笔画数据的墨水数据的方法和系统。这些实施例中的每一个提供在以上(D1)-(D5)的现有技术中不可用的技术解决方案。应该注意,虽然以下描述被组织来通常公开本发明的四(4)个实施例,但是如将对于本领域的技术人员而言显而易见的,可以在实施例之中并在实施例之间组合、补充、交换、切换或者修改实施例的各种方面以产生另外的实施例。例如,每个实施例的各种方法和系统可以采用墨水数据的定义以及生成、再现、绘制(呈现)、操纵并传递如连同本文中所公开的其它实施例中的一个或多个一起所描述的墨水数据和墨水数据结构(数据对象和数据格式)的方法。
以下实施例1-4中的每一个在各种示例中解决在下面所描述的方面中的一个或多个。
发明内容
[方面一]在数个计算机中部分地或者整个地变换原有笔画对象的操纵对象的介绍。
根据一个方面,本发明致力于提供操纵对象。上面所描述的先前已知的墨水数据模型包括仅可用于处理静态笔画数据以将一个笔画对象作为一个聚合体来处理的语义和语法。因此,先前已知的墨水数据模型不能够选择笔画对象的一部分或者将笔画对象的一部分切片。并且,先前已知的墨水数据模型允许在一个处理器上操纵笔画对象,而不能允许多个处理器实时地共享对笔画对象执行的操纵(例如,编辑)操作。
图91图示根据本发明的实施例的操纵对象270(“切片”对象)的示例。能够操纵(切片)笔画对象的一部分的切片对象274被生成并发送。在所图示的示例中,一个笔画对象9101在一个计算机上的一部分被切片,并且指示经切片的部分的操纵数据9103被其它计算机共享,使得也能够以相同的方式操纵其它计算机上的笔画对象9101。将在下面在本发明的第一实施例和第四实施例中详细地描述笔画对象的一部分的修改或操纵(例如,切片)。将在下面在本发明的第一实施例、第二实施例和第四实施例中详细地描述在多个计算机之中共享一个操纵对象270以在它们之中共享墨水数据的经编辑的最新状态。
[方面二]使笔事件输入信息的定义抽象化以吸收装置差异(并且使SVG成为更面向笔输入的以改进SVG的笔输入表达能力)。
根据另一个方面,本发明致力于使手绘输入数据抽象化以便吸收存在于不同的输入装置之中的任何差异。这通过使笔画的原有输入属性,诸如笔压力和笔角度信息,抽象化为新颖模型中所定义的高级概念属性来实现。一般而言,需要基于手绘输入数据再现的信息不是手绘数据如何被输入,诸如以什么角度保持笔(触针)、在什么时间点获得了什么坐标以及施加了多少笔压力等。替代地,需要被捕获的信息是能够再现利用特定笔压力、笔速度等执行的这样的笔(风格)操作或绘图操作的“结果”的向量数据。
当前,存在范围从能够获得笔压力、笔角度、笔旋转角度数据等的高性能输入装置(例如,图92中的9202C)到能够接收通过手指的输入但是不能获得笔压力、笔倾斜角度等的广泛使用的静电平板或其它更简单的输入装置(例如,图92中的9202A)变动的各种手绘输入装置。因此,期望将手绘输入数据(例如,被示出为图92中的9202A-9202C的“装置相关的笔事件数据”)的任何装置相关的属性转换为能够被用来再现笔事件的“结果”的装置无关的抽象向量数据(图92中的9204)。可以在向量数据中组织以这样的抽象形式定义的墨水数据,以最终产生如图92中的9208中所示出的栅格数据(图像数据)。上面所讨论的SVG11(D3)定义向量数据,并且作为图92中的9206被示出。SVG11(D3)不允许变化或者调整笔画宽度、颜色和透明度(不透明度),结果,不特别适合于再现笔事件的“结果”。并且,SVG包括除笔画对象路径坐标数据以外的数据,诸如用来生成Bezier曲线的控制点,并因此不适合于与除专门的绘图应用以外的各种应用9220一起使用。
除产生栅格图像数据(9208,图92)之外,还期望在向量中以更抽象的形式组织墨水数据,以用于在签名验证应用中、在调绘应用等中使用。在这方面,抽象优选地是不太面向图像的,而是应该导致可以被用来既以栅格形式又以向量形式定义墨水数据的抽象属性。将在下面在本发明的第一实施例和第三实施例中详细地描述使类型1(包括笔压力数据)的和类型2(不包括笔压力数据)的装置相关的笔事件数据9202抽象化为作为图92中的中间数据9204的一般化墨水数据。
[方面三]通过使语言(信息模型)与格式分开来延长墨水数据生态系统的生存期。
例如,诸如数字照片的栅格数据的内容常常不仅被单个服务或在单个应用上使用,而且被多个服务和应用使用,并且被特定“生态系统”共享或者在特定“生态系统上”以链接方式在全体之中传送(但是可以以诸如JPEG、GIF、TIFF等的各种格式对它们进行处理)。可以使用这些各种格式,因为栅格数据包括在概念上描述许多像素值的公共信息模型。
根据再一个方面,本发明致力于基于公共语言(笔画语言(SL))的采用来促进不同格式之间的墨水数据交换和传送。与墨水数据的格式不同,笔画语言(SL)是定义本发明的墨水数据的语义的信息模型。也就是说,通过抽象属性如此定义的墨水数据可以被处理成不同的栅格图像格式(PNG、JPEG等),在不同的向量图形格式(SVG、InkML、HTML5等)之间交换,或者以定义笔画结构的不同流格式(ISF、InkML等)产生。图93在概念上描述本发明的这个方面。为了将灵活性添加到输出格式类型以及输入格式类型,并且为了适应各种输出和输入格式类型,公共语言(或定义公共语言的信息模型)优选地驻留在生成该语言的装置驱动程序级与所生成的语言被输出到文件、分组等中所在的输出级之间的中介物中。特别地,根据本发明的各种实施例的墨水数据处理部100包括基于抽象语言(笔画语言)来生成墨水数据的墨水数据生成部120以及以各种格式处理墨水数据的输入和输出的墨水数据格式化部140作为两个单独的组件。因为墨水数据生成的功能以及用于输入/输出目的的墨水数据格式化的功能是分开的,所以墨水数据处理部100适合于被用作墨水数据生态系统扩展墨水数据在各种装置之中的使用的构件。将在下面在第四实施例中详细地描述本发明的这个方面。
将在下面在本发明的第一至第四实施例的描述之后再次讨论如图91-93中所描述的本发明的这三个方面。
附图说明
图1是图示根据本发明的各种实施例的在其中生成并利用墨水数据的总体系统的图。
图2是适合于在本发明的实施例中使用的墨水数据结构的实体关系图。
图3A图示由多个点对象所定义的笔画对象。
图3B和图3C图示根据两个不同的绘图风格对象的图3A的笔画对象的两种呈现(绘图)结果。
图4A图示用来选择并变换(例如,旋转)笔画对象的“选择”操纵对象的操作。
图4B图示用来将笔画对象切片的“切片”操纵对象的操作。
图5是根据本发明的第一实施例的墨水数据处理装置的功能框图。
图6是根据本发明的第一实施例的图5的墨水数据处理装置的墨水数据处理部(100)的功能框图。
图7是根据本发明的第一实施例的图6的墨水数据处理部的笔画对象处理部(122)的功能框图。
图8图示在图7的笔画对象处理部中的点“A”至“D”处执行的处理。
图9是图示由图6的墨水数据处理部执行的示例例行程序的流程图。
图10图示可以在图5的墨水数据处理装置的点“E”处输出的用接口定义语言(IDL)编写的示例笔画文件格式(SFF)文件。
图11图示可以在图5的墨水数据处理装置的点“E”处输出的笔画文件格式(SFF)的示例笔画对象文件。
图12图示可以在图5的墨水数据处理装置的点“F”处输出的笔画消息格式(SMF)的三个消息以及在图5的墨水数据处理装置的点“G”处输出的一个分组。
图13A图示可以在图5的墨水数据处理装置的点“D”处输出以被输入到图形处理部(300)或者输入到墨水数据格式化部(140)的经受Catmull-Rom曲线插值操作的笔画对象。
图13B图示在图5的墨水数据处理装置的点“H”处从图形处理部(300)输出的图13A的笔画对象的呈现(显示)结果。
图14是根据本发明的第一实施例的应用于笔画对象的切片操作的流程图。
图15A图示在图14的步骤S1409中执行的确定两个笔画之间的单个(中间)交点(P_intersect_Mid)的过程。
图15B图示在图14的步骤S1413中执行的得到具有宽度的切片笔画对象与原有笔画对象之间的两个(边缘)交点(P_intersect_L和P_intersect_R)的过程。
图16A图示在图14的步骤S1415中得到的由将笔画对象切片产生的两个切片中的第一切片。
图16B图示定义图16A的第一切片的参数的数据结构。
图16C图示重新创建的第一笔画对象的呈现路径。
图17A图示在图14的步骤S1415中得到的由将笔画对象切片产生的两个切片中的第二切片。
图17B图示定义图17A的第二切片的参数的数据结构。
图17C图示重新创建的第二笔画对象的呈现路径。
图18A图示为图16A的第一切片得到新结束点的过程以及为图17A的第二切片得到新起始点的过程。
图18B图示根据本发明的第一实施例的定义孔段对象的参数的数据结构。
图19图示包含表示由将笔画对象切片产生的两个切片的两个重新创建的笔画对象的笔画文件格式(SFF)的示例文件。
图20是在图14的步骤S1422中执行的墨水数据传输处理的详细流程图。
图21A-21D图示可以被用来连同切片操作一起发送墨水数据的不同的传输消息类型(类型A、类型B、类型C和类型D)。
图22是根据本发明的第一实施例的被配置成经由网络远程接收墨水数据的墨水数据接收装置的功能框图。
图23是图示根据本发明的第一实施例的在接收侧的操纵(切片)对象的接收处理的流程图。
图24A和图24B图示与现有技术相关联的技术问题。
图25是适合于在本发明的第二实施例中使用的墨水数据结构的实体关系图。
图26是适合于在第二实施例中使用的总体通信系统图。
图27图示图26的通信系统的传输装置(10-1)。
图28图示适合于在本发明的第二实施例中存储公共绘图区域(画布)的更新状态的示例记录格式。
图29图示图26的通信系统的中继服务器(10-2)。
图30A-30C分别图示共同地描述或者定义传输装置的通信和图形环境的通信参数、绘图参数和用户策略参数。
图31图示图26的通信系统的接收装置(10-3)。
图32是图示根据本发明的第二实施例的传输装置(10-1)、中继服务器(10-2)与接收装置(10-3)之间的墨水数据通信的序列图。
图33是查找用于发送墨水数据的定义单位T的示例过程的流程图。
图34图示根据本发明的第二实施例的适合于在多个装置之中发送(传递)墨水数据的通信分组和消息的示例传输格式。
图35A图示包括数据重传方案的通信协议中使用的通信分组,并且图35B图示不包括数据重传机制的通信协议中使用的通信分组。
图36A是适合于在不包括数据重传机制的通信协议中使用的使用序列ID的示例数据重传过程的序列图。
图36B是在其中不执行数据重传的适合于在不包括数据重传机制的通信协议中使用的数据传输过程的序列图。
图36C-36E图示用于计算消息的控制位置的方法。
图36F和图36G图示用于在图36B的序列中使用的使用图36C-36E中计算出的控制位置的插值(错误隐藏)处理。
图37是图示由传输装置发出的用于更新公共绘图区域的请求被中继服务器拒绝的墨水数据通信的序列图。
图38是图32的序列图的第一修改示例,其中,中继服务器从传输装置接收笔画对象的分段数据并且组合每个笔画对象的所有的已分段数据以被中继到接收装置。
图39A是用于在图38的第一修改示例中使用的数据传输格式,其中,一个笔画对象的所有的墨水数据被组合并包括。
图39B图示作为在笔画ID已知时请求整个笔画的笔画对象数据的消息的DATA_INK_ALLOS_REQ的示例数据传输格式。
图40是图32的序列图的第二修改示例,其中,笔画对象被“照原样”(即,不分段)从传输装置经由中继服务器向接收装置发送。
图41是图32的序列图的第三修改示例,其中,中继服务器从传输装置接收笔画对象并且将所接收到的笔画对象分段成多片分段数据以被中继到接收装置。
图42是图示相对于公共绘图区域的原点的用户特定笔画起始点的概念的图。
图43和图44图示大于笔画单位的语义单位的墨水数据传输的第二实施例。
图45图示根据本发明的第三实施例的一方面在墨水数据处理部处并在生成方法中以及另一方面在墨水数据处理部处并在再现方法中的数据输入/输出。
图46A-46C图示根据本发明的第三实施例的墨水数据生成方法的三个配置示例。
图47A和图47B图示根据本发明的第三实施例的墨水数据再现方法的两个配置示例。
图48A是根据本发明的第三实施例的依据墨水数据模型(笔画语言(SL))的墨水数据结构的实体关系图。
图48B是图48A的墨水数据结构的详细实体关系图。
图48C是笔画对象的图形表示。
图48D是说明画布对象的图。
图48E是说明元数据对象的图。
图48F是图示如在屏幕上看到的三个不同的绘图风格对象的演绎结果的图。
图48G是说明操纵(切片)对象的操作的图。
图48H是说明操纵(擦除)对象的操作的图。
图48I是说明如应用于原有笔画对象的操纵(选择并转换)对象的操作的图。
图48J-48L图示根据本发明的第三实施例的以笔画文件格式(SFF)布置的墨水数据结构的语法。
图49是根据本发明的第三实施例的墨水数据处理部的功能框图。
图50A是图示根据本发明的第三实施例的在图49的“墨水数据生成部”中执行以将半径和alpha信息作为点对象的属性来输出的过程的流程图。
图50B图示可以被用来定义有关笔事件数据的上下文信息的应用或操作系统的示例GUI。
图51是图示根据本发明的第三实施例的在图50的步骤S1205中得到速率的过程的图。
图52是图示根据本发明的第三实施例的在图50的步骤S1207中得到半径的过程的流程图。
图53是图示根据本发明的第三实施例的如图52的步骤S1207_01中所使用的笔画的“阶段”的定义的图。
图54是图示根据本发明的第三实施例的如图52的步骤S1207_05和S1207_07中所使用的用于从参数(速率)得到半径的三个函数的曲线图。
图55是图示根据本发明的第三实施例的在图50的步骤S1209中得到指示透明度(或不透明度)的alpha的过程的流程图。
图56是图示根据本发明的第三实施例的如图55的步骤S1209_05和1209_07中所使用的用于从参数(速率)得到alpha(透明度/不透明度)的两个函数的曲线图。
图57是图示根据本发明的第三实施例的将半径和alpha值以及X和Y坐标数据格式化成墨水数据格式(数据结构)的过程的流程图。
图58图示根据本发明的第三实施例的图57的步骤S1411和S1413的实现示例。
图59图示根据本发明的第三实施例的图57的步骤S1411和S1413中所使用的浮点数据类型到整数数据类型的转换。
图60图示根据本发明的第三实施例的由图59的数据类型转换产生的压缩的增加效率。
图61是图示根据本发明的第三实施例的可以在图49的“墨水数据格式化部”中执行以对所生成的墨水数据进行压缩的过程的流程图。
图62是图示根据本发明的第三实施例的在图49的“墨水数据生成部”中执行以将半径信息作为墨水数据属性来输出的过程的流程图(图52的替代方案)。
图63是图示根据本发明的第三实施例的在图49的“墨水数据生成部”中执行以将alpha信息作为墨水数据属性来输出的过程的流程图(图55的替代方案)。
图64是图示根据本发明的第三实施例的墨水数据处理部与各种应用之间的关系的图。
图65是图示根据本发明的第三实施例的用于在墨水数据中提取(再现)半径和alpha信息以及X和Y坐标数据的墨水数据再现过程并且响应于来自绘图应用的请求而输出所提取的信息和数据的流程图。
图66图示根据本发明的第三实施例的图65的步骤S2011和S2013的实现示例。
图67是图示根据本发明的第三实施例的对要绘制的笔画对象应用选择的绘图风格对象的绘图过程的流程图。
图68图示根据本发明的第三实施例的由基于图54的衰减(阻尼)函数而生成的墨水数据的输入产生的绘图呈现示例。
图69图示根据本发明的第三实施例的由基于图56的幂函数而生成的墨水数据的输入产生的绘图呈现示例。
图70图示根据本发明的第三实施例的由基于图54的衰减函数和图56的幂函数两者而生成的墨水数据的输入产生的绘图呈现示例。
图71图示根据本发明的第三实施例的示出图54的其它函数(S形和周期函数)的效果的绘图呈现示例。
图72图示根据本发明的第三实施例的示出将特殊值用作要绘制的笔画的起始点和结束点的半径的效果的绘图呈现示例。
图73是图示根据本发明的第四实施例的在其中利用墨水数据的总体系统的图。
图74是根据本发明的第四实施例的墨水数据处理部的功能框图。
图75是根据本发明的第四实施例的图74的墨水数据处理部的更详细的功能框图。
图76是图75的笔画对象处理部(122)的功能框图。
图77A和图77B是图示生成笔画对象的方法的流程图。
图78是图75的元数据对象处理部(124)的功能框图。
图79是图示生成元数据对象的方法的流程图。
图80是图75的呈现(绘图风格)对象处理部(126)的功能框图。
图81是图示得到(绘图)风格对象及其级联特性的方法的流程图。
图82是图75的操纵对象处理部(128)的功能框图。
图83A和图83B是图示得到诸如切片对象的操纵对象的方法的流程图。
图84是图75的墨水数据墨水数据格式化部(140)的功能框图。
图85是图示在图84的墨水数据墨水数据格式化部中执行的过程的流程图。
图86是图示输出笔画文件格式(SFF)数据的方法的流程图。
图87是图示输出JPEG格式数据的方法的流程图。
图88是图示输出笔画消息传送格式(SMF)数据的方法的流程图。
图89是说明已经以各种文件格式和消息传送格式输出的数据(SFF/JPEG和SMF)的输入处理的功能框图。
图90A是用于解释并再现布置在SFF文件中的对象的处理的流程图。
图90B是用于基于InkML的输入来解释并再现对象的处理的流程图。
图90C是图示在SMF中接收并执行操纵(切片)对象的过程的流程图。
图91是说明使用图75的墨水数据处理装置(101)来解决方面一的效果的图。
图92是说明使用图75的墨水数据处理装置(101)来解决方面二的效果的图。
图93是说明使用图75的墨水数据处理装置(101)来解决方面三的效果的图。
具体实施方式
如本文中所使用的,并且除非在仅适用于特定实施例的特定上下文中另外具体地定义,否则以下术语在本文中所描述的各种实施例中自始至终具有以下含义。
“笔事件数据”(INPUT1)意指基于用户的手绘图运动而输入的数据。笔事件数据可以是如由给定输入装置所输入的原始数据,或已根据原始数据处理过的数据。虽然所有笔事件数据预期至少具有由用户绘制的每个笔画的位置信息(例如,XY坐标),但是笔事件数据是装置相关的并且包括特定于每种类型的输入装置的属性(例如,笔压力数据、笔旋转或倾斜角度数据等)。例如,从能够检测笔压力的输入装置接收的笔事件数据与从不能检测笔压力的输入装置接收的笔事件数据不同。
“墨水数据”(200)意指从笔事件数据得到的对象的合集。墨水数据200捕获基于笔事件数据而形成的路径(笔画)并且形式为向量数据,所述向量数据是描述每个路径的特性(颜色、笔类型等)的一种中间数据。墨水数据200是装置无关的,因为它能够被支持笔压力和/或笔旋转/倾斜角度属性的那些装置并且被不支持这些属性的那些装置共享。根据本发明的实施例的墨水数据200包括笔画对象210、元数据对象250、绘图风格对象230和操纵对象270。将在下面在图2、图3A-4B、图25、图48A-48I等中详细地描述墨水数据200。
“笔画对象”(210)是包括在墨水数据200中的一种对象或数据。以上(D1)至(D4)中所描述的“笔画”、“路径”、“迹线”和“画布路径”全部都是笔画对象210。笔画对象210描述通过用户对输入装置的操作所获得的路径(笔画)的形状。
“元数据对象”(250)是包括在墨水数据200中的一种对象,并且包括描述笔画对象210的非绘图相关信息,诸如原作者、笔ID、在本地获得的日期和时间信息、由GPS获得的位置信息等。
“绘图风格对象”(230)是包括在墨水数据200中的一种对象,并且包括控制笔画对象210在被呈现(绘制、表达、栅格化)在显示器上时的形状(笔画宽度、笔画风格/模式)和颜色所必需的信息。简单地说,绘图风格对象控制笔画对象210的呈现(绘图)。
“操纵对象”(270)是包括在墨水数据200中的一种对象并且对一个或多个原有笔画对象210的全体、一部分、或每一个执行操纵/修改操作(例如,切片操作)。将在下面在第一实施例中详细地描述对笔画对象的一部分应用操纵对象270。
“笔画语言(SL)”是定义形成墨水数据200的各种对象的属性和含义的信息模型。
“笔画文件格式(SFF)”是以记录格式使要输出的墨水数据200序列化的一种记录格式。将在下面参考图10、图11、图19、图28、图48J、图48K、图48L、图57、图65和图86描述SFF的细节。
“记录格式”意指适合于存留墨水数据200的格式,诸如SFF格式和SVG格式。记录格式的墨水数据200能够作为文件或数据库被存储在存储部(HDD、网络存储部等)中,并且能够从其中检索并反序列化其序列化的数据流。
“笔画消息格式(SMF)”是用于在使用定义的传输协议来发送墨水数据200时使用的包括在传输分组或帧中的一种消息传输格式。将在下面参考图12、图21、图34、图35A、图35B、图39A、图39B和图88描述SMF的细节。
“传输格式”意指适合于通过网络发送(消息传送)墨水数据200的消息格式,诸如SMF格式。
“图像数据”意指能够基于墨水数据200产生(绘制)的包含像素数据的栅格化图像,诸如GIF和JPEG图像。不能够使不是中间的图像格式数据回复到墨水数据200。
以下术语被用来描述如例如图5所示的、用来处理墨水数据200的数个主要结构和组件。
“墨水数据处理部”(100)意指生成、存储并处理墨水数据200的处理器。在本描述中,被用来基于笔事件数据来生成墨水数据200并且以定义格式布置墨水数据200的墨水数据处理部可以由附图标记100T来指示,而被用来在计算机内再现已经以定义格式生成和布置的墨水数据200的墨水数据处理部可以由附图标记100R来指示。将在下面参考图5和图75并且附加地参考图6、图22、图27、图31、图49和图74描述墨水数据处理部100的细节。墨水数据处理部100通常输入/包括/接收三种类型的信息:1)笔事件(类型输入)信息(“输入1”)、2)上下文信息(“输入2”)以及3)操纵信息(“输入3”)。
“墨水数据生成部”(120)产生墨水数据200或者提取墨水数据200。在本描述中,基于从输入传感器接收的输入信号来生成墨水数据200的墨水数据生成部可以由附图标记120T来指示,并且提取已经生成的墨水数据200并在存储器中恢复它的墨水数据生成部可以由附图标记120R来指示。
“墨水数据格式化部”(140)出于输入和输出的目的对以记录格式或者以传输格式布置的墨水数据200进行处理。在本描述中,以定义格式输出墨水数据200的墨水数据格式化部可以由附图标记140T来指示,并且以定义格式输入墨水数据200的墨水数据格式化部可以由附图标记140R来指示。
第一实施例
本发明的第一实施例致力于生成、呈现、操纵(例如,切片)并传递形成墨水数据200的笔画对象210。特别地,将描述如参考图91上面所描述的笔画对象210的一部分的操纵以及操纵操作在多个处理器之中的共享(传输)。
第一实施例的背景
(D1)至(D4)中所描述的笔画对象包括通过使用预定插值曲线算法来生成插值曲线或路径所必需的点或控制点。
(D1)和(D2)未指定任何特定插值曲线算法,即,能够使用任何适合的插值曲线算法。
(D3)和(D4)使用Poly-Bezier(三次Bezier)曲线。在Poly-Bezier曲线中,单个曲线段(路径段)的起始点Pi和结束点Pi+1被用作控制点。此外,需要至少又一个控制点来定义点Pi与点Pi+1(起始点与结束点)之间的曲线段的曲率,其中,控制点与Pi或Pi+1不同并且不在包括曲线段的曲线上(即,在曲线外部)。例如,三次Bezier曲线需要位于曲线外部的两个控制点来定义曲线段。
例如,用于三次Bezier曲线的XML表示法<stroke-width="5"d="M100,200C100,100 300,100 300,200"/>意指:
起始点(100,200)被用作控制点;
结束点(300,200)被用作另一控制点;并且
两个更多的控制点(100,100)和(300,100)被用来定义曲线段(在起始点与结束点之间但是在曲线段外部)。
最近,负责以上SVG(D3)的W3C SVG工作组一直在讨论Catmull-Rom曲线对曲线进行插值的可能使用。与Poly-Bezier曲线不同,Catmull-Rom曲线不具有在曲线外部(即,不在曲线上)的控制点。Catmull-Rom曲线利用四个控制点:起始点(Pi)、结束点(Pi+1)、在起始点“之前”的点(Pi-1)以及“在”结束点“之后”的点(Pi+2)来定义每个曲线段。所有的控制点在曲线上。换句话说,Catmull-Rom曲线通过它所有的控制点。(但是,因为每个曲线段需要在该曲线段“之前”和“之后”的两个控制点,所以在笔画对象的两个最末端的曲线段未被定义。)
第一实施例的概要
图24A和图24B图示在现有技术D1至D5中的墨水数据定义中遇到的技术问题。图24A图示由应用有切片操作2403的笔画对象所表示的曲线2401S。表示曲线2401S的笔画对象包括经由输入传感器输入的一组点坐标(p1~p10)。
在图24A中,切片操作2403被应用来沿着通过交叉点2405的划分线将笔画对象在点坐标p5与点坐标p6之间的曲线段切片。图24B图示由切片操作2403产生的两个分段曲线2411 S1和2415 S2。曲线2411 S1包括点坐标p1至p5,而曲线2415 S2包括点坐标p6至p10。如所示,作为实线显示的分段曲线2411 S1在点坐标p5处结束,并且因此,比延伸到交叉点2405的实际分段曲线短。类似地,作为实线显示的分段曲线2415 S2在点坐标p6处起始并且比在交叉点2405处起始的实际分段曲线短。在图24B中,用虚线示出的部分曲线段2413指示曲线的由于切片操作2403而丢失的那些段。
能够在交叉点2405处添加新控制点并且添加另外的控制点以在p5与交叉点2405之间并在交叉点2405与p6之间定义重新创建的部分曲线段2413。计算新控制点的位置以表示部分曲线段2413到结束点2405的精确形状是计算密集的并且不是容易的任务。例如,当使用了诸如三次Bezier曲线的插值曲线时,需要计算在该曲线(或路径)外部的两个控制点来定义每个新段。当使用了Catmull-Rom曲线时,需要计算沿着该曲线的两个控制点来定义每个新段,这将导致所有先前的控制点的级联再计算以便维持实际曲率。两种类型的计算高度复杂且太费时而无法支持切片操作在图形或绘图应用中的实时实现。
存在对于允许用户将形成墨水数据的笔画对象切片的方法和系统的需要,其中,由切片操作产生的两个切片中的每一个表示从原始笔画对象切片的实际分段曲线。优选地,所述方法和系统不需要计算用于对曲线进行插值的控制点的新位置,因为这样的计算是复杂且常常太计算密集的而无法支持实时应用。
根据一个方面,本发明提供用于生成、绘制、操纵(例如,切片)并传递包括笔画对象210的墨水数据的方法和系统,其中,笔画对象210包括或者与定义要呈现(显示)的笔画对象210的特定部分的范围信息相关联。当范围信息指示完全显示时,笔画对象210被整体地显示,而当范围信息指示部分显示时,笔画对象210的一端或两端被部分地指定为不显示。当对原始笔画对象210应用切片操作以产生两个新笔画对象210时,第一新笔画对象210与指定该第一新笔画的栅格化(或呈现或因此显示)结束的新“结束”点的范围信息相关联。相应地,第二新笔画对象210与指定该第二新笔画的显示开始于的新“起始”点的范围信息相关联。第一新笔画对象210和第二新笔画对象210两者保持(即使部分地)与原始笔画对象相同的结构以及与原始笔画对象相同的控制点,并且因此,第一新笔画对象210和第二新笔画对象210的显示精确地遵循原始笔画对象210的形状,并且另外,不必计算新控制点。
根据另一方面,提供了输出笔画对象210以形成墨水数据200的方法和系统。笔画对象包括表示多个坐标点的多个点对象。点对象中的至少一些用作用来生成一起形成笔画对象210的路径的插值曲线段的控制点。笔画对象210还包括定义在笔画对象210的显示开始的起始曲线段中的起始点以及在笔画对象210的显示结束的结束曲线段中的结束点的范围信息。当原始笔画对象210被切片以生成两个新笔画对象210时,这两个新笔画对象210中的每一个包括从原始笔画对象210复制的点对象的部分集合以及它自己的范围信息,即,指示它自己的起始点和它自己的结束点的参数。
根据另一方面,提供了绘制(在显示器上呈现)如上所构造的墨水数据的方法和系统,其中,每个笔画对象210包括多个点对象和范围信息。这些点对象中的至少一些是用来生成插值曲线段的控制点。所述方法和系统通过基于控制点对曲线段进行插值以生成笔画对象210的路径并且通过显示笔画对象210的由范围信息所指定的一部分来在显示器上绘制每个笔画对象210。换句话说,所述方法和系统在范围信息中指示的起始点处开始显示笔画对象210并且在范围信息中指示的结束点处停止显示笔画对象210。
根据另一个方面,提供了允许用户将如上所构造的墨水数据的笔画对象210切片的方法和系统。当用户对笔画对象210执行切片操作时,所述方法和系统计算切片路径与笔画对象210之间的交叉点的位置。(参见图24A中的2405)。所述方法和系统生成由切片操作产生的两个新笔画对象210:第一笔画对象210和第二笔画对象210。第一笔画对象210包括第一组点对象以及指示显示开始点和显示结束点的第一范围信息,其中,显示结束点是从所计算出的交叉点得到的。第二笔画对象210包括第二组点对象以及包括显示开始点和显示结束点的第二范围信息,其中,显示开始点是从所计算出的交叉点得到的。通常第一笔画对象210的第一范围信息保持与原始笔画对象210的显示开始点相同的显示开始点,并且第二笔画对象210的第二范围信息保持与原始笔画对象210的显示结束点相同的显示结束点。
可以在能够处理墨水数据的不同装置或应用之间容易地传递如上所构造的墨水数据,使得多个用户能够实时地共享在公共绘图区域(公共“画布”)上绘制并操纵(切片)笔画的体验。
根据本发明的各种方法和系统,如上所构造的墨水数据被生成/输出、绘制在显示器上、用来允许用户把笔画对象210切片,并且在不同的用户之中共享。使用范围信息来仅显示包括在笔画对象210中的实际曲线段的一部分使得有可能显示精确地遵循原始笔画对象210的形状直至其结束的切片的(重新创建的)笔画对象210。并且,因为经切片的笔画对象210保持(即使部分地)与原始笔画对象210相同的结构以及相同的控制点,所以不需要连同切片操作一起计算或者再计算新控制点。
可以在其中根据各种类型曲线插值算法,诸如本领域中已知的Poly-Bezier曲线(三次Bezier、二次Bezier)算法和Catmull-Rom曲线算法,对曲线段进行插值的墨水数据中应用本发明的方法和系统。
第一实施例的描述
图1是图示根据本发明的实施例的在其中利用墨水数据200的总体系统的图。在图1中,用虚线画轮廓的云部分1表示利用本发明的墨水数据200的系统可以在上面操作的诸如互联网的基础设施。作为示例性基础设施的互联网是在实现吸收厂商专有硬件配置和操作系统之中的差异的各种Web和邮件数据格式(HTML、MIME)及其通信方法(HTTP、SMTP)的网际协议套件(例如,IP、TCP、HTTP)以及库和软件的标准化集上构建的。在图1中,通过基础设施部分1的虚线的箭头图示基于这些基础设施技术而发生的数据交换。在图1中,用实线画轮廓的云部分10表示用于交换墨水数据200的基础设施,其通过建立有关墨水数据200的公共信息模型(语言)来实现。墨水数据200被一般化以便通常可由各种应用服务(或生态系统)和各种装置使用。例如,图1中的应用服务#1和应用服务#2皆可以经由墨水数据交换基础设施10来利用并交换墨水数据200,所述墨水数据交换基础设施10可以作为由例如移动终端和服务器的数种计算机分布地支持的用于墨水数据处理部100的必要库被实现。通过数据交换基础设施10的实线中的箭头图示墨水数据200在利用一组库的数个应用服务而提供的各种应用之中的交换用于利用墨水数据200。通过在墨水数据200的区域(域)中建立公共信息模型,各种类型的应用和服务能够共享并交换墨水数据200。
在图1中,装置10-1包括作为输入传感器的能够输出笔压力数据的笔平板型输入装置,并且使用为由第一提供商/软件厂商所提供的应用服务#1而提供的应用#1来生成墨水数据。然后可以以与目的地媒体(例如,网络)对应的适合的输出形式(例如,分组中的SMF)输出所生成的墨水数据200。
装置10-1-2是能够接收通过用户的手指做出的手绘输入的平板型输入装置。装置10-1-2的传感器不能输出笔压力数据,并且使用为应用服务#2而提供的应用#2或者以与目的地媒体对应的适合的输出形式生成不利用笔压力信息的墨水数据200。
装置10-3是用于应用服务#2的又一种类型的计算机(例如,桌面型PC)。装置10-3可以组合(合成)从装置10-1-1和装置10-1-2分别提供的墨水数据200。装置10-3可以在其屏幕上呈现(绘制)彼此叠加的从装置10-1-1和装置10-1-2输出的墨水数据200。
图2是墨水数据模型的实体关系图。根据本发明的实施例的墨水数据200包括笔画对象集合202、包括控制笔画对象210在被呈现(绘制、表达、栅格化)在屏幕或显示器上时的形状和颜色所需的信息的绘图风格对象(集合)230、包括描述笔画对象210的非绘图相关信息(例如,原作者)的元数据对象250以及包括操纵(例如,切片、旋转)原有笔画对象210所需的信息的操纵对象(集合)270。
笔画对象集合202中的笔画对象210包括再现通过指示体(手指、笔等)的移动而形成的笔画210(或迹线、路径)所必需的信息。笔画包含(217)多个(“N”个)点对象212(点_1…点_N)。换句话说,笔画由从对通过指示体的移动而生成的笔事件数据进行采样(指示体操作)所获得的多个点对象的坐标来支持。点对象可以采取任何形式,诸如绝对或相对坐标值形式或向量形式,只要它可以指示点对象在2D、3D…ND空间中的位置即可。在各种实施例中,所述多个点对象用作能够被用来在其间对曲线段进行插值以从而形成笔画对象210的路径(笔画)的控制点。
根据本发明的实施例,笔画对象210还包括定义笔画对象210的哪部分将被显示的范围信息。在所图示的实施例中,范围信息包括:第一参数“startParameter(起始参数)”301,其定义笔画对象210的起始曲线段中的起始点;以及第二参数“endParameter(结束参数)”303,其定义笔画对象210的结束曲线段中的结束点。范围信息是在已经生成点对象之后为笔画对象210生成的。例如,当对笔画对象210执行诸如切片操作的操纵操作以生成两个新笔画对象210时,获得了分别形成两个新笔画对象210的两组点对象,并且范围信息被添加到两个新笔画对象210中的每一个。
如本文中所使用的,起始曲线段和结束曲线段意指绘图(显示)操作分别开始和结束的那些段。因此,被指定为根本不显示的笔画对象210的第一曲线段不是如本文中所使用的“起始”曲线段。类似地,被指定为根本不显示的最后曲线段不是“结束”曲线段。
通常存在用于生成多个点对象的(x,y)坐标的两种方法。首先,可以在笔事件数据正被输出的同时,输出从笔事件数据(笔操作)得到的坐标点,作为“原始值类型”的点。其次,在输入形成完整笔画的所有点之后,生成表示笔画的拟合曲线的诸如Bezier曲线函数或高阶函数(例如,拉格朗日多项式)的三次样条函数。在以下描述中,假定了点对象根据第一方法被生成为具有“原始值类型”,但是本发明还可以根据第二方法使用“优化点类型”的点对象。
绘图风格对象(集合)230包括控制笔画对象210在被呈现(绘制、表达、栅格化)在显示器上时的形状(笔画宽度、笔画风格/模式)所必需的信息。简单地说,绘图风格对象230控制笔画对象210的呈现。所图示的示例的绘图风格对象(集合)230包括形状填充对象232和粒子散射对象234。
图3B和图3C分别图示根据图3A的同一笔画对象210的两个不同的绘图风格对象的两种呈现(绘图)结果。
图3B图示形状填充对象232的呈现(绘图)结果,所述形状填充对象232将笔画对象210表示为具有各种半径或宽度的圆321的合集。圆的中心沿着由笔画对象210表示的迹线对齐并且圆的合集的外围被用来生成(计算)包络323和325。包络323和325然后被用来在屏幕或显示器上绘制图3A的笔画对象210。
图3C图示粒子散射对象234的呈现(绘图)结果,所述粒子散射对象234将图3A的笔画对象210绘制为许多点子图形,所述点子图形是成形粒子341(碎片),其具有中心、在大小上变化并且具有相对于碎片的定义轴的旋转角度345(θ)。变化大小的每个碎片相对于定义轴旋转了θ,并且其中心在与迹线方向垂直的方向上从迹线移位了偏移343。偏移343是从预定种子得到的随机值。
元数据对象250(参见图2)包括描述笔画对象210的非绘图相关信息,诸如原作者、笔ID、在本地获得的日期和时间信息、由GPS获得的位置信息等。
操纵对象(集合)270包括整个地或部分地操纵(例如,选择、变换/旋转、切片等)原有笔画对象210所必需的信息。这样的信息是以操纵对象的形式组织的,所述操纵对象中的每一个可在笔画对象210的全体上或者在笔画对象210的一部分上执行以实现笔画对象210的期望操纵。每个操纵对象270包括定义并控制特定操纵操作的参数。例如,选择对象272包括用来像图4A中所示出的那样选择并变换(例如,按变换矩阵旋转)笔画对象210的参数。切片对象274包括用来像图4B中所示出的那样将笔画对象210切片的参数。
图4A图示选择对象272的操作。要选择和变换的目标是原有笔画对象210“笔画_i”,其在图4A中通过另一笔画_j来选择(j>i)。笔画_j是基于新且连续地输入的笔事件数据而新输入的并且包括点对象P1-Pn。笔画_j被输入来定义围绕原有笔画_i的区域(图4A中的阴影区域)以从而选择原有笔画_i。如由图4A中的箭头405所图示的,选择对象272可以应用定义变换矩阵来对所选择的笔画_i进行变换(旋转)。存在用于确定笔画_i是否并如何由笔画_j选择的各种方法。例如,如果笔画_j在p1与p2之间的单个位置(P_intersect_Mid)处和笔画_i相交,则能够按405对仅笔画_i的右侧部分进行选择和变换。笔画_i的剩余左侧部分未被选择,并且因此被维持而未通过变换405变换。这能够通过使用笔画_j对笔画_i同时应用切片操作来实现(即,笔画_j被用来触发为笔画_i 401生成选择对象272和切片对象274两者)。在这种情况下笔画_i被分成两个重新生成的笔画。这些重新生成的笔画中的一个被笔画_j完全围绕并且因此被选择。
图4B图示切片对象274的操作。作为针对笔画_i 401的部分操纵的切片对象274通过包含点对象P1-P4的新笔画对象403(笔画_j)来生成。笔画对象403与指示它不是普通笔画对象210而是被配置成对原有笔画对象210执行定义操纵操作的操纵对象的类型信息相关联。例如,如将在下面参考图5更充分地描述的,可以将笔画对象403(笔画_j)标记为“输入3”(操纵对象)类型。如图4B中所图示的,切片对象274(在“输入3”类型的笔画_j中具体化)被输入来将原有笔画对象401(笔画_i)切片。为此,切片对象274包括将原有笔画对象401(笔画_i)切片为两个切片:切片_i1 407和切片_i2 409所需的参数。切片对象274可以在各种应用中充当切片器、擦除器、部分提取器等。在执行切片操作以生成两个新切片407和409之后,可以将这些切片“提交”(或完结)为成为两个完全定义的笔画对象210。这时,既不必保持原始笔画对象401(笔画_i),也不必保持(未提交的)切片407和409以及本身用来生成切片的切片对象274(笔画_j)。
图5是根据本发明的实施例的能够输出、操纵、绘制并传递(发送/接收)墨水数据的墨水数据处理装置的功能框图。该装置通常对应于图1中的装置10-1-1(传感器类型1)或装置10-1-2(传感器类型2)。
此示例中的装置是包括全部通过由耦合到存储器装置的CPU所执行的操作系统4001控制的输入传感器110、输入处理部111、墨水数据处理部100、应用部300-1、图形处理部300、显示器113和通信部112(“Tx、Rx”)的计算装置。该装置可以是包括或者耦合到形式为笔平板传感器的输入传感器110的个人计算机(PC)、移动终端装置等。
输入传感器110检测用户(经由诸如笔和手指的指示体)的手写运动并且生成表示所检测到的手写运动的输入数据信号。例如,可以使用静电传感器、压敏传感器、基于电磁谐振(EMR)的传感器。
输入处理部111从输入传感器110接收输入数据,其中输入数据具有依赖于每个输入传感器的类型,并且输入处理部111将输入数据转换为可修正以用于进一步处理来生成墨水数据200的“笔事件数据”。所生成的“笔事件数据”作为“输入1”(参见图5中的点“A”)被输入到墨水数据处理部100。笔事件数据(“输入1”)包括至少所感测的坐标位置,并且取决于输入传感器110是否具有压力/倾斜检测能力,可以附加地包括笔压力数据、笔倾斜数据等。因此,从输入处理部111输出的笔事件数据也是装置/传感器相关的。输入处理部111通常被实现为输入传感器110的驱动程序软件程序,诸如在
Figure BDA0001949680080000271
操作系统上运行的输入子系统。输入传感器110和输入处理部111的配置不限于所图示的配置。例如,可以将输入传感器110和输入处理部111中的一些或全部作为诸如笔形装置的数字固定装置来提供。
墨水数据处理部100包括墨水数据生成部120和墨水数据格式化部140。墨水数据处理部100(更具体地墨水数据生成部120)负责基于从输入处理部111接收的笔事件数据(“输入1”)以及从应用部300-1接收的上下文信息(“输入2”)和操纵信息(“输入3”)来生成墨水数据200。墨水数据处理部100通常被实现为被动态地和/或静态地链接到应用部300-1的一组库。
上下文信息(“输入2”)是描述笔事件数据(“输入1”)的上下文或环境的信息,并且可以指示例如使用的笔尖类型(例如,画笔、蜡笔、铅笔)、使用的笔颜色(红色、绿色、蓝色)等。上下文信息由应用部300-1通常在将输入数据输入到输入传感器110中之前选择。
操纵信息(“输入3”)指定了来自输入传感器110的下一个输入将不被视为典型的笔事件数据(普通笔画对象210),而是用于对原有笔画对象210应用某种操纵操作(例如,切片、擦除、提取、删除、复制、放大等)的命令。当接收到输入3时,墨水数据生成部120生成新笔画对象#j以及由新笔画对象#1引起的要应用于原有笔画对象#0~#i的操纵对象。操纵信息(“输入3”)可以通过用户在应用部300-1中所支持的应用中选择定义开关、按钮等来生成并输入到墨水数据生成部120。
墨水数据生成部120接收笔事件数据(“输入1”)、上下文信息(“输入2”)和操纵信息(“输入3”),并且生成包括笔画对象210、绘图风格对象230、操纵对象270和元数据对象250的“墨水数据”(墨水数据200)(在图5中的点“D”处)。将在下面参考图6描述墨水数据生成部120的另外的细节。
仍然参考图5,墨水数据处理部100的墨水数据格式化部140经由点“D”从墨水数据生成部120接收墨水数据,并且以根据从应用部300-1接收的格式选择信息(Fmt-Sel)而选择的格式输出墨水数据。
具体地,墨水数据格式化部140包括墨水数据通信部144和记录格式数据处理部142。墨水数据通信部144被配置成以笔画消息格式(SMF)发送(经由图5中的“F”)并接收(经由图5中的“F_in”)墨水数据200,所述笔画消息格式(SMF)是适合于通过网络将墨水数据200(例如,实时地)传递到其它(远程)装置的格式。记录格式数据处理部142被配置成以笔画文件格式(SFF)对墨水数据进行格式化(参见图5中的“E”),所述笔画文件格式(SFF)是适合于将墨水数据200存储在更永久存储介质中的格式。
图形处理部300经由“D”接收包括笔画对象210、绘图风格对象230、操纵对象270和元数据对象250的墨水数据200,并且经由“H”在包括像素的颜色(例如,RGB)值的定义分辨率水平下输出一组像素值。例如,图形处理部300接收形成笔画对象210的点对象p1~pn(参见图3A),根据曲线插值算法在被用作控制点的点对象之间对曲线进行插值,并且使用诸如
Figure BDA0001949680080000291
库和
Figure BDA0001949680080000292
库的关联的GPU库在显示器113上绘制(呈现)笔画对象210的结果得到的路径。
根据各种实施例,图形处理部300将包含在所接收到的笔画对象210中的点对象用作控制点来根据诸如本领域中已知的Catmull-Rom曲线算法和Poly-Bezier曲线算法的适合的曲线插值算法来对曲线进行插值。
此外,依照本发明的示例性实施例,图形处理部300参考包括在笔画对象210中的“startParameter”值301和“endParameter”值303来显示笔画对象210。换句话说,图形处理部300仅呈现(显示)笔画对象210的由“startParameter”值301和“endParameter”值303所刻划(约束)的一部分。如本文中所使用的,(将)显示意指最后被显示。可以使用各种方法来设定是否将显示定义部分。例如,方法可以被用来不包括针对将不显示的定义部分的要供应给GPU库的顶点信息,以从而不为定义部分生成像素数据。作为另一示例,方法可以被用来以100%设定将不显示的定义部分在完全再现的笔画对象210中的透明度。
应用部300-1包括动态地或者静态地链接墨水数据处理部100的一个或多个用户应用,诸如图1的应用#1。例如,应用部300-1可以包括可以全部使用根据本发明的实施例的墨水数据200的实时会议应用、文档生成应用、绘图应用等。应用部300-1中的应用例如提供允许用户将操纵信息(“输入3”)输入到墨水数据处理部100的用户界面(UI)。
图6是包括墨水数据生成部120和墨水数据格式化部140的墨水数据处理部100的功能框图。
墨水数据生成部120包括被分别配置成处理并生成共同地形成根据本发明的实施例的墨水数据200的笔画对象210、元数据对象250、绘图风格对象230和操纵对象270的笔画对象处理部122、元数据对象处理部124、绘图风格对象处理部126和操纵对象处理部128。
笔画对象处理部122接收笔事件数据(“输入1”)并生成笔画对象210(参见图6中的“D”)。笔画对象处理部122像上面所描述的那样生成原始值类型的点对象,以形成笔画对象210。在示例性实施例中,笔画对象处理部122随着笔事件数据被输入而连续地生成点对象,而不是在起始生成点对象之前接收整个笔事件数据。如将在下面参考图7更充分地描述的,笔画对象处理部122经由“D”将所生成的点对象连续地输出给图形处理部300(参见图5)或者输出给墨水数据格式化部140。应用300-1可以取决于例如应用300-1是执行实时通信还是需要高度压缩的向量数据来控制笔画对象处理部122在输出原始值类型的墨水数据200与输出优化值类型的墨水数据200之间切换。
元数据对象处理部124在收到指示笔笔画的起始(即,“下笔”)的笔事件数据(“输入1”)时或者在生成新笔画对象210时(例如,在切片时),处理上下文信息(“输入2”)以提取诸如作者信息、日期和时间信息等的非绘图相关信息。元数据对象处理部124与所对应的笔画对象210相关联地创建包括所提取的元数据的元数据对象250。
绘图风格对象处理部126在收到指示下笔的笔事件数据(“输入1”)时或者在生成新笔画对象210时,处理上下文信息(“输入2”)以提取在显示器上表达笔画对象210所必需的绘图相关信息。绘图风格对象处理部126与所对应的笔画对象210相关联地创建绘图风格对象230(例如,形状填充对象232和粒子散射对象234)。
操纵对象处理部128在收到操纵信息(“输入3”)时,生成定义要应用于原有笔画对象210的整体或者应用于原有笔画对象210的一部分的操纵或变换操作(例如,图2中的“选择(变换)”对象272和切片对象274)的操纵对象270。
在图6中,两个虚线箭头“M1(本地)”和“M2(远程)”指示操纵操作的方向,即,目标笔画对象210将在哪里被操纵或者变换。如所示,由操纵对象270定义的操纵操作可以在本地(M1)应用于存在于笔画对象处理部122中的笔画对象210,或者经由墨水数据格式化部140远程地(M2)应用于存在于诸如在耦合到网络的远程接收装置中的外部网络上的笔画对象210。
在图6中,笔画对象210、元数据对象250和绘图风格对象230被图示成被输入到墨水数据格式化部140的记录格式数据处理部142和墨水数据通信部144,而操纵对象270被仅输入到墨水数据通信部144而未输入到142。前三个优选地被永久地或者半永久地存储并因此被以适合于存储的笔画文件格式(SFF)、SVG格式、InkML格式等格式化。并且,当生成新笔画对象210时,笔画对象210及其关联的元数据和绘图风格对象通过网络被传递到接收侧,并因此在墨水数据通信部144和记录格式数据处理部142两者中被处理。操纵对象270另一方面本质上是短暂的,因为它定义要应用于原有笔画对象210的操纵操作。一旦对原有笔画对象210应用(提交)操纵操作,就从存储器中刷新操纵对象270。因此,操纵对象270通常被以适合于通过网络传输的笔画消息格式(SMF)进行格式化,而不以笔画文件格式(SFF)包括。
墨水数据格式化部140的记录格式数据处理部142包括用于分别以不同的记录格式(SFF、(D1)的InkML、(D3)的SVG、(D4)的HTML5等)输出墨水数据200的多个处理部142-1、142-2等。例如,处理部142-1被配置成以SFF输出墨水数据200并且可以采用谷歌的协议缓冲器(https://developers.google.com/protocol-buffers/)和消息,以使经SFF文件格式化的数据序列化。处理部142-2可以执行格式变换处理以吸收SFF文件、(D1)的InkML与(D3)的SVG之间的任何差异,诸如(D1)中的“迹线”的定义与(D3)中的“路径”或(D4)中的“画布路径”的定义之间的任何差异。
图7是墨水数据处理部100中的笔画对象处理部122的功能框图。笔画对象处理部122能够随着增加量的笔事件数据被输入而将以“原始值类型”形成笔画对象210的点对象连续地输出给图形处理部300或者到墨水数据格式化部140。笔画对象处理部122包括或者耦合到存储器装置770。
笔画对象处理部122包括:起始/结束参数设定部122A,其设定起始点参数和结束点参数;路径构建器部122B,其基于装置类型来选择适合的路径构建器;添加到笔画部122D,其控制有多少点对象应该被添加到部分形成的笔画对象210;以及加后缀部122E,其填充在笔画对象210末端的间隙(图8中的“滞后”)。
生成并存储在存储器770中的分段数据被用于作为笔画对象210的分段实时传输。如将在下面在第二实施例中更充分地描述的,分段数据是按字节或时间单位发送的。
起始/结束参数设定部122A在检测到下笔事件(笔笔画的起始)和抬笔事件(笔笔画的结束)时,将startParameter 301和endParameter 303设定为它们的初始缺省值。例如,在下笔事件时,startParameter 301被设定为其缺省值“0”,而在抬笔事件时,endParameter 303被设定为其缺省值“1”。这些参数的初始值不必被存储在存储器装置770中,并且可以被例如以隐式地指示这些参数被设定为它们的缺省值的标志的形式设定。
路径构建器部122B被配置成基于包括在上下文信息(“输入2”)中的SetInputDynamics值701来选择适合于从输入处理部111输出的特定类型的笔事件数据的一个路径构建器。例如,如果笔事件数据包括笔压力值,则包括能够基于笔压力值得到笔画宽度(W)和透明度(A)的第一(压力)函数f1的压力路径构建器122B1被选择。另一方面,如果笔事件数据不包括笔压力值,则速率路径构建器122B2被选择。速率路径构建器122B2包括能够基于根据包括在笔事件数据中的点坐标或时间戳的改变量而确定的笔移动速度来得到笔画宽度(W)和透明度(A)的第二(速率)函数f2。换句话说,速率路径构建器122B2将速率值取代在压力路径构建器122B1中使用的压力值。因为可以将所有笔事件数据分类成包括压力信息的类型(类型1)或不包括压力信息的类型(类型2),所以所有类型的笔事件数据可以由压力路径构建器122B1或速率路径构建器122B2来处理。将在下面参考第三实施例描述此原因以及压力路径构建器122B1和速率路径构建器122B2如何操作。
笔画对象处理部122还包括平滑器122C,所述平滑器122C基于包括在上下文信息(“输入2”)中的使用平滑信息705开始在笔画对象210完成之前随着其生成而对笔画对象210应用平滑操作。可以使用诸如加速度平均、权重平均、指数平滑、双指数平滑等的任何适合的平滑操作。
图8图示由平滑器122C在行A和行B中执行的平滑操作。行A对应于图7中的点“A”(在平滑之前),而行B对应于图7中的点“B”(在平滑之后)。在行A中,x1~x10表示从笔事件数据获得的10个点的X坐标。在图8中,x1~x10是(10、20、30、45、60、80、90、100、110、115)。
在行B中,x1'~x10'表示10个点在已应用平滑操作之后的X坐标。在所图示的示例中,应用了以下指数平滑函数:
X1'=α*X(t-1)+(1-α)*X(t-1)' (式1)
其中滤波器强度α=0.5。
在图8中,x1'~x10'是(10、15、23、34、47、63、77、88、99、108)。
由平滑器122C执行的平滑操作随着它们的点坐标被得到而在滚动基础上应用于这些点中的每一个,以连续地输出这些点的修改的(平滑的)位置。因此,从当检测到下笔事件时的时间起,笔画对象处理部122开始生成并输出具有“原始值类型”的笔画对象210,而不是等待检测到抬笔事件作为整体。
在行B中,在Catmull-Rom曲线被用来定义每对控制点之间的插值曲线的这种情况下添加点x0'。如上面所讨论的,Catmull-Rom曲线利用包括起始点(Pi)和结束点(Pi+1)以及在起始点“之前”的点(Pi-1)和在结束点“之后”的点(Pi+2)的四个控制点来定义每个曲线段。因此,为了定义点x1'与点x2'之间的起始曲线段,起始点x1'被复制来创建可以与点x1'、x2'和x3'一起使用的新点x0'(在与x1'相同的位置处)作为用于定义x1'与x2'之间的曲线段的控制点。可以将新点x0'的位置调整到x1'与x2'之间的Catmull-Rom曲线最适合所输入的笔画的位置。通过简单地复制x1'(p1)的值来创建x0'(p0)的值,该过程能够立刻定义x0'的位置并将从x0'(p0)到x1'(p1)的向量的分量设定为零。该过程适合于实时实施方式(不必等待p2生成p0),并且不过度地影响(例如,推向一侧或另一侧)x1'(p1)与x2'(p2)之间的曲线段的曲率。
返回参考图7,添加到笔画部122D确定有多少点对象被建立并存储在存储器装置770中并因此能够被添加到要输出的笔画对象210的部分数据。在所图示的实施例中,点对象P1~Pn-1被建立在存储器装置770中并且确定为被添加到要输出给图形处理部300或者输出给墨水数据格式化部140的笔画对象210的部分数据(而不是等待整个笔画对象完成)。图形处理部300能够显示部分形成的笔画对象。换句话说,图形处理部300随着笔画对象继续增长而显示从初始圆点起始的笔画对象。墨水数据形成部140(或墨水数据通信部144)能够将所建立的部分数据以传输格式格式化为笔画对象的分段数据并且发送所建立的部分数据。将在实施例二中更详细地说明分段数据的传输方法。
参考图7和图8,加后缀部122E填充在笔画对象210末端处输入的位置(x10,行A)与在笔画对象210末端处经平滑的位置(x10',行B)之间的间隙(或“滞后”)。在图8中,行C图示“滞后”填充(加后缀)操作。在所图示的示例中,在平滑操作之后,在原先输入的位置x10(115)与在笔画对象210末端处经平滑的位置x10'(108)之间创建“滞后”。取决于包括在上下文信息(“输入2”)中的使用平滑信息705的内容,笔画对象处理部122确定执行或者不执行加后缀操作。还能够每次当新点对象被添加到笔画对象210时调用加后缀操作。在这种情况下,加后缀操作给图形处理部300提供能够被用作临时可视预览的点对象。通过加后缀操作重新生成的点仍然不是最终笔画对象210的一部分,并且因此,被墨水数据格式化部140(或墨水数据通信部144)忽视直到它被明确地添加为止。
如果将执行加后缀操作,则在所图示的实施例中,笔画对象处理部122在x11'、x12'和x13'处添加新点对象。点x12'被添加在与行A的原先输入的最后位置x10(115)相同的位置处。点x11'被添加在点x10'与点x12'之间的平滑点处。最后,因为在此示例中Catmull-Rom曲线被用来定义每对控制点之间的插值曲线,所以结束点x12'被复制来创建新点x13'(在与x12'相同的位置处),所述新点x13'是将x11'与x12'之间的结束曲线段定义为Catmull-Rom曲线所需的。可以将新点x13'的位置调整到x11'与x12'之间的Catmull-Rom曲线最适合所输入的笔画的位置。并且,即便当将不执行加后缀操作时,如果使用了Catmull-Rom曲线,也可以复制行B中的最后平滑点x10'以创建新点x10'(新),其在这种情况下可以与点x8'、x9'和x10'一起用作控制点来在x9'与x10'之间定义最后曲线段。通过简单地复制x9'的值来创建x10'的值,该过程能够立刻在空档位置处定义x10'的位置,而不过度地影响(例如,推向一侧或另一侧)x8'(p8)与x9'(p9)之间的曲线段的曲率。
在图8中,行D图示已经被平滑(从行A到行B)、在末端加后缀(从行B到行C)并且在添加到笔画部122D的控制下连续地输出的笔画对象210。此示例中的笔画对象210被定义成根据Catmull-Rom曲线算法来生成插值曲线,其中,每个曲线段(Pi-Pi+1)由四个控制点(Pi-1、Pi、Pi+1、Pi+2)来定义并且结果得到的曲线通过所有的控制点。因此,笔画对象210包括由四个控制点x0'、x1'、x2'、x3所定义的起始曲线段(x1'-x2'),并且包括由四个控制点x10'、x11'、x12'、x13'所定义的结束曲线段(x11'-x12')。笔画对象210还包括用于起始曲线段(x1'-x2')的起始参数301,其由起始/结束参数设定部122A设定为缺省值“0.0”。缺省值“0.0”意味着起始曲线段(x1'-x2')将被从初始点x1'起完全显示(呈现、表达)。笔画对象210还包括用于结束曲线段(x11'-x12')的结束参数303,其由起始/结束参数设定部122A设定为缺省值“1.0”。缺省值“1.0”意味着结束曲线段(x11'-x12')将被完全显示到最后点x12'。
图9是图示由图6的墨水数据处理部100执行来生成墨水数据200的示例过程的流程图。该过程从墨水数据生成部120接收笔事件数据(“输入1”)开始。在步骤S901中,笔画对象处理部122接收笔事件数据作为输入1,所述笔事件数据包括位置坐标(x,y)以及指示以下三种类型的定时中的一种的定时信息,并且根据所确定的定时来执行处理:
1)下笔时间;当诸如手指或指点装置(例如,笔型装置)的指示体与另一(感测)对象接触时;
2)笔移动时间;在下笔时间与抬笔时间之间;
3)抬笔时间;当指示体离开另一(感测)对象移动(分离)时。
<1.在下笔时间的处理流程>
当事件类型是指示下笔事件的“ACTION_DOWN”时,在步骤S910中,笔画对象处理部122将要重新创建的笔画对象210的起始曲线段的起始参数310设定为缺省值(“0.0”)。如上所述,缺省值(“0.0”)定义起始曲线段将被从其初始点起完全显示。同时,笔画对象处理部122还可以将笔画对象210的结束曲线段的结束参数303设定为缺省值(“1.0”),以定义结束曲线段也将被完全显示到其最后点。
在步骤912中,笔画对象处理部122基于包括在上下文信息(图7中的“输入2”)中的SetInputDynamics参数701来从多个路径构建器中选择一个路径构建器(例如,图7中的122B1或122B2)以用来构建笔画对象210。
在步骤S914中,笔画对象处理部122基于包括在上下文信息(“输入2”)中的Num_of_CHs参数703来确定要从以上步骤S912中选择的路径构建器输出的一组参数。要输出的一组参数例如可以是(x,y,W,A)、(x,y,W)、(x,y,A)或(x,y),其中(x,y)是点对象的x、y坐标,W是笔画宽度值,并且A是指示透明度(或不透明度)的alpha(α)。除2D坐标(x,y)之外,可以添加“z”值以产生3D坐标。
在步骤S916中,笔画对象处理部122基于包括在上下文信息(“输入2”)中的使用平滑参数705来确定平衡操作是否将被应用于从所选择的路径构建器输出的该组参数。使用平滑参数705还可以指示平滑操作被应用于这些参数中的哪些参数。
当指示了平滑的应用(步骤S916的是)时,在步骤S918中,执行所指示的平滑过程。图7图示平滑过程被应用于(x,y,W)参数但是未被应用于“A”(alpha)参数的情况。上下文信息(“输入2”)可以附加地包括输入传感器110的采样速率信息,其可以被笔画对象处理部122使用来选择期望的强度水平的平滑过程。例如,当输入传感器110的采样速率较低(例如,与每秒100个样本不同,每秒10个样本)时,可以选择具有更大平滑度值(效果)的更强平滑过程。
在步骤S919中,输出上面所使用的设定参数作为墨水数据200的属性。这些参数例如指示是否使包括在笔画对象210中的点对象平滑(S916为是还是否)或可以使用的平滑滤波器的类型或强度。基于这些参数,能够确定包括在笔画对象210中的点对象是否被平滑、是否应该被(进一步)平滑或者能够被视为可以例如在签名验证应用等中使用的确切输入数据。
在步骤920中,如上面参考图8、行B所图示的,初始点(控制点)x1'被复制来生成用于将x1'与x2'之间的起始曲线段定义为Catmull-Rom曲线的新控制点x0'。
在步骤S970中,墨水数据处理部100确定是否存在可能正在共享(例如,接收、操纵)由墨水数据处理部100本地计算机所生成的墨水数据200的另一(远程)用户或计算机。
如果存在这样的其它用户,则在步骤S972,墨水数据处理部100基于从应用部300-1接收的Fmt-Sel参数(参见图5)来控制墨水数据通信部144以笔画消息格式(SMF)对要输出的墨水数据200进行格式化。墨水数据通信部144首先输出消息DATA_INK_BGNOS 1201(参见图12),其是包括用于远程用户的接收装置绘制(部分)笔画对象210所必需的初始点坐标和绘图风格对象230的部分(分段)消息。接收到DATA_INK_BGNOS消息1201的接收装置可以在接收笔画对象210的剩余部分之前立即开始使用所接收到的绘图风格对象230来用所指定的形状、颜色等呈现(显示)笔画对象210的初始部分。
<2.在笔移动时间的处理流程>
返回到流程图的初始步骤S901,墨水数据生成部120接收另一新事件数据(“输入1”)并且确定它是哪一种类型:下笔事件、笔移动事件或抬笔事件。当事件类型是指示笔正在起始点与结束点之间在笔画对象210中间移动的“ACTION_MOVE”时,墨水数据生成部120取决于所使用的特定输入装置而接收如包括在笔事件数据中的x、y坐标值以及时间戳和/或笔压力信息,并且进行到步骤S930。
在步骤S930中,例如笔画对象处理部122基于包括在上下文信息(“输入2”)中的使用平滑参数705来确定平滑操作是否将被应用于所接收到的一组参数(x,y,W,A)。平滑参数705可以附加地指示平滑操作被应用于这些参数中的哪些参数。步骤S930的操作与上面所描述的步骤S916的操作相同。
当指示了应用平滑(步骤S930的是)时,在步骤S932中,执行所指示的平滑过程。
在步骤S934中,笔画对象处理部122使用添加到笔画部122D来确定有多少点对象被建立并存储在存储器装置770中以被添加到要输出的笔画对象210的部分数据。在此步骤中添加到笔画部122D还可以在将点对象的值添加到部分数据之前改变它们。例如,添加到笔画部122D可以在随机基础上改变alpha参数的值以模拟用光墨水的圆珠笔。
在步骤S974中,类似于上面所描述的步骤S970,墨水数据处理部100确定是否存在正在实时地共享由墨水数据处理部100生成的墨水数据200的另一(远程)用户。
如果存在这样的其它用户,则在步骤S976中,墨水数据处理部100使用墨水数据通信部144来生成并输出消息DATA_INK_MVDOS1203(参见图12),其是包括在包括在以上步骤S972中生成的DATA_INK_BGNOS 1201中的初始点对象之后的点对象的部分(分段)消息。要添加到消息DATA_INK_MVDOS 1203的点对象的数目由添加到笔画部122D在以上步骤S934中确定。可以取决于笔画对象210的大小来生成并输出多个DATA_INK_MVDOS消息。接收到DATA_INK_MVDOS消息1203的远程用户的接收装置可以在继续笔画对象210的初始部分时继续呈现(显示)笔画对象210的中间部分。
<3.在抬笔时间的处理流程>
返回到流程图的初始步骤S901,墨水数据生成部120接收另一新事件数据(“输入1”)并确定它是哪一种类型。当事件类型是指示抬笔事件(即,笔画对象210的绘制完成并且指示体被去除)的“ACTION_UP”时,在步骤S950中,笔画对象处理部122确定平滑操作是否将被应用于所接收到的一组参数,例如(x,y,W,A),以及平滑操作被应用于这些参数中的哪些参数。步骤S950的操作与上面所描述的步骤S916和S930的操作相同。
当指示了平滑的应用(步骤S950的是)时,在步骤S952中,执行所指示的平滑过程。并且,当使用平滑参数705如此指示时,笔画对象处理部122附加地执行如图8行C中所示出的加后缀操作。取决于使用平滑参数705的内容,未必执行加后缀操作。并且,当未执行平滑操作时,加后缀操作是不必要的并且未被执行。
在步骤S953中,并且如图8行C中所图示的,结束点(控制点)x12'被复制来生成用于将x11'与x12'之间的结束曲线段定义为Catmull-Rom曲线的新控制点x13'。
在步骤S954中,笔画对象处理部122将结束曲线段(x11'-x12')的结束参数303设定为指示结束曲线段将被完全显示到其结束点x12'的缺省值(“1.0”)。当结束参数303已经在以上步骤S910中被设定其缺省值时可以跳过这个步骤。
在步骤S978中,类似于上面所描述的步骤S970和S978,墨水数据处理部100确定是否存在正在实时地共享由墨水数据处理部100生成的墨水数据200的另一(远程)用户。
如果存储这样的其它用户,则在步骤S980中,墨水数据处理部100使用墨水数据通信部144来生成并输出消息DATA_INK_ENDOS1205(参见图12),其是包括笔画对象210的最后一组(加后缀的)点对象的最后部分(分段)消息。接收到DATA_INK_ENDOS消息1205的远程用户的接收装置可以识别它是笔画对象210的最后消息并且完成笔画对象210的绘图操作。
上面所描述的根据本发明的实施例的用于生成并传递墨水数据200的方法和系统能够连续地输入笔事件数据并且同时像部分笔画对象210被构建那样输出部分笔画对象210。从墨水数据处理部100接收到墨水数据200的远程用户的接收装置开始显示每个笔画对象210并且继续随着它增长而显示笔画对象210,而不必等待接收整个笔画对象210。
根据本发明的各种实施例,平滑操作被选择性地应用于所输入的笔事件数据参数。诸如Catmull-Rom曲线算法的适合的曲线插值算法被应用来使用经平滑的点对象作为控制点来构建插值曲线。
图10图示可以从图5的墨水数据处理装置的记录格式数据处理部142向点“E”输出的用接口定义语言(IDL)编写的示例笔画文件格式(SFF)原型(图式)文件。原型(图式)文件描述墨水数据200如何被以笔画文件格式序列化为字节序列。所图示的原型文件的行02-07包括描述包括在绘图区域(或绘图“画布”)中的信息的数据。例如,包封在虚线矩形中的行06定义了笔画对象210在绘图区域中重复多次。行04“decimalPrecision”定义笔画对象210的点对象的计算准确度/分辨率。
行04中的“decimalPrecision”优选地是指示期望的准确度和/或分辨率的对数值。
所图示的原型文件的行11-17表示笔画对象210。例如,行12指示笔画对象210包括多个重复的“sint32”类型(可变字节大小分组)点对象。
在一些实施例中,第二和后续点对象的参数由相对于初始点对象或紧接在前面的点对象的对应参数值的偏移(增量(delta))值来定义。与绝对值不同,偏移(相对)值的使用可以帮助减少定义形成笔画对象210的第二和后续点对象所需的数据的量。
例如,行12中点的坐标(x,y)是基于利用decimalPrecision的以下处理来确定的。
1.通过以下转换从float转换为int32:
xint=(int)xfloat*10decimalPrecision
2.对于整数值执行增量编码:
xencoded[0]=xint[0];
xencoded[i]=xint[i·1]-xint[i];i>0
处理1:xfloat是存储在计算装置中的浮点。点对象212的坐标被作为具有相对较多的比特的浮点十进制类型值,诸如float类型和double类型,被存储在存储器770中。xfloat被乘以10decimalPrecision。结果得到的值xfloat的数据类型被转换(投射)为整数类型以从而产生xint。
处理2:得到xint的偏移。所得到的偏移被编码为“sint32”类型数据。
包封在虚线矩形中的行13-14定义笔画对象210的startParameter 301和endParameter 303。如所图示的,这些参数301和303与形成如行12中所定义的笔画对象210的点对象分别地定义。在所图示的示例中,起始参数301和结束参数303被表达为float类型值,并且分别被设定为它们的缺省值“0”和“1”。如稍后所描述的,当对笔画对象210应用操纵(切片)操作时,可以将起始和/或结束参数改变为新值。
行15“variableStrokeWidth”存储包括在笔画对象210中的多个点对象的宽度值。与在行12处的点类似,它使用“sint32”类型并且第二和后续点对象的宽度由偏移(增量)来定义。这个参数的存在暗示包括在笔画对象210中的点对象中的每一个单独地与它自己的宽度值相关联。换句话说,如果这个参数不存在,则笔画对象210具有存储在行16处的“strokeWidth”特性中的固定宽度。
图11图示笔画文件格式(SFF)的笔画对象210的示例部分,其可以被从图5的墨水数据处理装置的记录格式数据处理部142输出给点“E”。所图示的笔画文件格式的笔画对象210包含绘图风格对象230、滤波器参数(useSmoothing、滤波器强度)以及在如图8行D中所图示的x坐标x0'~x133'处的点对象p0~p13。起始参数字段1101包括startParameter301,并且结束参数字段1103包括endParameter 303。字段“x0”(1105)包括笔画对象210的初始点对象的绝对x坐标值。字段“rel_x1”(1107)包括笔画对象210的第二点对象相对于初始点对象的绝对x坐标值的x坐标偏移(增量)值。
图12图示可以从图5的墨水数据处理装置的墨水数据通信部144向点“F”输出的以笔画消息格式(SMF)格式化的三个消息以及从图5的墨水数据处理装置的网络通信部112向点“G”输出的一个分组。
在图9的步骤S972中输出的DATA_INK_BGNOS 1201消息包括指示消息是笔画对象210的第一消息的信息(例如,消息类型BGNOS,F101)、指示在墨水数据处理装置与远程用户的接收装置之间共享的公共绘图区域的绘图区域ID(F102)以及被用来从绘图区域内的多个笔画对象210之中标识笔画对象210的笔画ID(F103)。F101、F102和F103构成消息报头。
DATA_INK_BGNOS 1201消息还包括绘图风格对象230(F104)、与所应用的平滑滤波器有关的滤波器参数(未示出)以及起始参数和结束参数(F105_SP_EP),并且(如果空间允许)可选地包括形成笔画对象210的一部分的点对象的初始分段数据中的任一个(F105_begin),后面是CRC错误校正值。例如,“F105_begin”字段可以包含图8的点对象p0~p3。F104、F105_SP_EP、F105_begin和CRC字段构成消息净荷。
在下面参考第二实施例描述为什么F104被包括在DATA_INK_BGNOS 1201中的原因。与平滑滤波器有关的参数被包括在第一消息DATAINK_BGNOS 1201中,使得接收到笔画对象210的装置能够立即确定是否在开始接收到笔画对象210时对包括在笔画对象210中的点对象应用平滑滤波处理。
在图9的步骤S976中输出的DATA_INK_MVDOS 1203消息包括具有消息类型字段(“MVDOS”)F101、绘图区域ID字段F102以及笔画ID字段F103的消息报头。DATA_INK_MVDOS1203消息还包括第二分段数据(F105_moved),其包括在包括在DATA_INK_BGNOS 1201消息中的那些点对象之后的点对象。例如,“F105_moved”字段可以包含图8的点对象p4~p8。与第一数据消息不同,DATA_INK_MVDOS 1203消息不包括绘图风格对象230(F104)并且被标识为F101中的后续(非第一)类型的数据消息(MVDOS)。DATA_INK_MVDOS 1203消息包括与第一数据消息相同的绘图区域ID(F102)以及与第一数据消息相同的笔画ID(F103)。
在图9的步骤S980中输出的DATA_INK_ENDOS 1205消息是笔画对象210的最后数据消息并且包括笔画对象210的最后分段数据(F105_end),其例如可以是图8的点对象p9~p13。DATA_INK_ENDOS 1205消息被标识为F101中的最后数据消息(ENDOS)并且包括与第一数据消息相同的绘图区域ID(F102)以及与第一数据消息相同的笔画ID(F103)。最后数据消息包括F109中的元数据对象250,其包括诸如作者信息的非绘图相关信息。
上面所描述的三种类型的数据消息被从图5的墨水数据处理装置的墨水数据通信部144输出给点“F”。图12的最后一行中的分组“G”是包括作为分组净荷的所有这三种类型的数据消息的分组,其被从图5的墨水数据处理装置的网络通信部112(Tx、Rx)输出给点“G”。
图13A图示经由点“D”输入到图5的墨水数据处理装置的图形处理部300的经受Catmull-Rom曲线插值操作的笔画对象210。(还可以经由点“D”将图13A的笔画对象210输入到如上面所描述的墨水数据格式化部140。)图13B图示图13A的笔画对象210如何被从图形处理部300输出给点“H”以被绘制(呈现)在图5的墨水数据处理装置的显示器113上。
在图13A中,笔画对象210包括对应于以上图8中所图示的x0'~x13'的点对象p0~p13。笔画对象210经受Catmull-Rom曲线插值操作,因此所有的点对象p0~p13被用作用于生成一起形成图13A中所示出的曲线的插值曲线段的控制点。例如,点p0~p3被用作用于生成p1与p2之间的曲线段的控制点,点p1~p4被用作用于生成p2与p3之间的曲线段的控制点,依此类推。如所图示的,结果得到的曲线通过所有的控制点p0~p13。
Catmull-Rom曲线的一个特性是因为每个曲线段由四个控制点完全定义,所以移动一个控制点的效果是局部的。例如,图13A图示p6与p7之间的曲线段1301由四个控制点p5、p6、p7和p8来定义。移动一个控制点可能影响至多四个曲线段而不影响形成该曲线的曲线段的其余部分。例如,移动p8可能影响p6-p7、p7-p8、p8-p9和p9-p10的至多四个曲线段。Catmull-Rom曲线的“局部控制”特性使得它适合于对笔画对象210支持切片操作,其中期望结果得到的两个新笔画对象210以最少量的数据保持原始笔画对象210的尽可能多的(形状)信息。换句话说,“局部控制”特性允许结果得到的切片中的每一个以最少数目的控制点保持原始形状(以完全维持曲线从一端到另一端的形状)。例如,当在p6与p7之间的曲线段处将图13A的笔画对象120切片时,第一切片需要仅保持控制点p0~p8而第二切片需要仅保持控制点p5~p13。Poly-Bezier曲线也具有“局部控制”特性并因此适合于支持切片操作。然而,与Catmull-Rom曲线不同,Poly-Bezier曲线需要不沿着该曲线的控制点(即,曲线不通过它所有的控制点)。必须计算并存储曲线外部的那些控制点是需要在Catmull-Rom曲线情况下不需要的存储空间的额外计算步骤,在Catmull-Rom曲线情况中,所有控制点由笔画对象210的点对象提供。这个差异使得计算上不太要求的Catmull-Rom曲线更适合于支持墨水数据生成、操纵、绘图和通信的实时应用。
图13B图示如在图5中的点“H”处从图形处理部300输出的图13A的笔画对象210的实际呈现(绘图)的示例。图13B图示从由起始曲线段1305的起始参数SP(“0.0”)所指示的起始位置横跨到由结束曲线段1307的结束参数EP(“1.0”)所指示的结束位置的实际绘图的范围1309。注意,要绘制的第一曲线段1305在p1与p2之间而不在p0与p1之间,因为p0被仅用作用于定义p1与p2之间的曲线段的控制点。类似地,要绘制的最后曲线段1307在p11与p12之间而不在p12与p13之间,因为p13仅是用来定义p11与p12之间的曲线段的控制点。
<墨水数据操纵(切片)>
现在参考图14-19描述通过根据各种实施例的本发明的系统和方法成为可能的切片操作。
图14是应用于原有笔画对象210的切片操作的流程图。切片操作由笔画对象处理部122和操纵对象处理部128协作地执行。所图示的示例假定如图4B中所示出的切片操作,其中,重新绘制的笔画_j 403将原有笔画_i 401切片。
首先,墨水数据生成部120(笔画对象处理部122)接收新笔事件数据(“输入1””)。在步骤S1401中,并行执行分别从步骤S1403和步骤S1405开始的两个处理线程。
在第一处理线程中,在步骤S1403中,墨水数据生成部120根据以上图9中所描述的过程来生成笔画对象(笔画_j)。并行地在第二处理线程中,在步骤S1405中,墨水数据生成部120(操纵对象处理部128)确定操纵信息(“输入3”)是否与由第一处理线程用来生成新笔画对象210的笔事件数据(“输入1”)相关联。例如,操纵信息(“输入3”)可以指示所关联的笔画对象210将执行切片操作。
如果不存在这样的“输入3”(步骤S1405的否),则过程进行到结束并且重新生成的笔画对象(笔画_j)作为普通笔画对象210被处理。如果存在与笔画对象210相关联的“输入3”(步骤S1405的是),则笔画_j被视为用于对一个或多个原有笔画对象210实现切片操作的操纵对象270。
<切片操作>
针对原有笔画对象(笔画_1~笔画_j-1)中的每一个重复从步骤S1407起始至步骤S1423的循环。在此示例中,在重新生成的笔画_j中具体化的切片操作被应用于原有笔画对象210中的每一个。存在能够被应用来跳过在定位方面与操纵对象270隔离的笔画的各种技术。例如,笔画对象处理部122能够对一个区域内的笔画段维持索引。索引能够由操纵对象处理部128用来跳过不必要的交点计算。
步骤S1407建立循环。
在步骤S1409中,如图15A中所示,操纵对象处理部128确定新笔画_j 403是否和原有笔画_i 401(i<j)相交。图15图示在原有笔画_i的两个控制点p6与p7之间的交叉点P_intersect_Mid处和原有笔画_i相交的新笔画_j。在所图示的示例中,因为新笔画_j具有宽度,所以交叉点被计算为新笔画_j和原有笔画_i的中线(用通过点P2、P3、P4的实线示出)之间的交点。
返回到图14,当在步骤S1409中确定了新笔画_j不和原有笔画_i相交时,意味着切片操作将不应用于原有笔画_i。过程将i递增1并确定新笔画_j是否和下一个原有笔画_i+1相交。
当在步骤S1409中确定了新笔画_j和原有笔画_i相交时,步骤S1411的切片操作被应用于原有笔画_i。
在步骤S1413中,如图15B中所示,操纵对象处理部128基于所计算出的交叉点P_intersect_Mid(55,100)和新笔画_j的“宽度”(3.58)来分别得到新笔画_j和原有笔画_i的两个边缘(虚线)之间的两个交点P_intersect_L和P_intersect_R。在图15B中,对于原有笔画_i来说p6是在(47,100)处并且p7是在(63,100)处,然而对于新切片笔画_j来说P2是在(60,110)处并且P3是在(50,90)处。如上所述,交叉点P_intersect_Mid被计算为线p6_p7与线P2_P3之间的交点。能够得到新笔画_j沿着p6_p7方向的宽度为“宽度”/sinθ≒4.0(“得到的宽度”),
其中
sinθ=(110-90)÷sqrt((60-50)^2+(110-90)^2)。
所得到的宽度4.0然后被用来通过将所得到的宽度一半加到交叉点P_intersect_Mid(55,100)或者从交叉点P_intersect_Mid(55,100)减去所得到的宽度一半来计算两个交点P_intersect_L和P_intersect_R。在所图示的示例中,P_intersect_L被发现为在(53,100)处而P_intersect_R被发现为在(57,100)处。可能存在将在S1413中发生的附加计算。例如,如果笔画_i和笔画_j在相交区域中不平坦,则附加计算应该在P_intersect_L和P_intersect_R的计算中考虑实际曲率。
在图14中,在步骤S1415中,操纵对象处理部128生成分别像图16A和图17A中所示出的那样由切片操作产生的笔画对象_i的两个实例。这两个实例是“切片”类型的。图16A的第一切片包括用于定义p2-p7之间的曲线段的控制点p0至p8,并且图17A的第二切片包括用于定义p6-p12之间的曲线段的控制点p5-p13。图16A的第一切片包括作为结束曲线段的、笔画_i在该处被切片的p6与p7之间的孔段1801。另一方面,图17A的第二切片包括作为起始曲线段的孔段1801。第一切片对于起始曲线段p1_p2保持“0.0”的缺省起始参数,但是现在对于其重新创建的结束曲线段p6_p7来说需要新结束参数。类似地,第二切片对于结束曲线段p11_p12保持“1.0”的缺省结束参数,但是现在对于其重新创建的起始曲线段p6_p7来说需要新起始参数。
在步骤S1417中,如图18A中所示,操纵对象处理部128得到用于图16A的第一切片的新结束参数(new_EP1)值303。在图18A中,第一切片的新结束参数1803(“new_EP1”)是指示P_intersect_L(53,100)在第一切片的结束曲线段p6_p7内的位置的值。新结束参数1803可以是绝对值(例如,(53,100))、相对值(例如,从p6起沿着X方向+6)或p6与P_intersect_L之间的距离相对于p6与p7之间的距离的比(例如,6/16=0.375)。比是有用的,因为能够在由例如图5中的图形处理部300的各部执行的插值计算中在无需进一步处理的情况下使用它。
图16B图示定义第一切片的参数的数据结构。该数据结构包括在以上步骤S1417中得到的起始参数“0.0”(缺省值,float类型)以及结束参数“0.375”(比,float类型)。在图16B中,行11指示数据结构定义一旦完结(或者提交)就成为笔画对象210的“切片”对象。行12“slice_fromIndex”是指示切片的起始点对象编号的索引值(例如,整数)。在图16的示例中,“slice_fromIndex”是“0”,因为第一切片在点p0处起始。行13“slice_toIndex”是指示切片的结束点对象编号的索引值(例如,整数),其在图16中是“8”,因为第一切片在点p8处结束(最后点p8是结束曲线段p6_p7的控制点)。
返回到图14,在步骤S1419中,如图18A中所示,操纵对象处理部128为图17A的第二切片得到新起始参数(new_SP2)值301。在图18A中,第二切片的新起始参数1805(“new_SP2”)是指示P_intersect_R(57,100)在第二切片的起始曲线段p6_07内的位置的值。新起始参数可以是绝对值(例如,(57,100))、相对值(例如,从p6起沿着X方向+10)或p6与P_intersect_R之间的距离相对于p6与p7之间的距离的比(例如,10/16=0.625)。
图17B图示定义第二切片的参数的数据结构。该数据结构包括在以上步骤S1419中得到的结束参数“1.0”(缺省值,float类型)以及起始参数“0.625”(比,float类型)。在图17B中,行21指示数据结构定义一旦完结就成为笔画对象210的“切片”对象。行22“slice_fromIndex”是“5”,因为第二切片在点p5处起始(第一点p5是起始曲线段p6_p7的控制点)。行23“slice_toIndex”是“13”,因为第二切片在点p13处结束。
返回到图14,在步骤S1421中,操纵对象处理部128完结(或者提交)图16B的第一切片(第一切片对象274)和图17B的第二切片(第二切片对象274)以分别将它们呈现成第一重新创建的笔画对象210和第二重新创建的笔画对象210,并且将它们存储在存储器装置770中。如图6中所示,完结步骤S1421是在操纵对象处理部128与笔画对象处理部122之间发生的“M1(本地)”操作。这时,笔画对象处理部122可以丢弃第一“切片”对象以及第二“切片”对象和/或原始笔画对象_i。
图16C图示已完结的第一笔画对象210的呈现(显示)路径,并且图17C图示已完结的第二笔画对象210的呈现(显示)路径。如图16C中所示,p1与p6之间的曲线段被完全显示,但是至于p6与p7之间的结束曲线段,仅直到由结束参数303(0.375)所指示的结束点的一部分被显示。从p6到由结束参数303所指示的结束点的部分精确地遵循原始笔画对象210的形状,因为重新创建的第一笔画对象210保持与包括在原始笔画对象210中的相同的定义p6与p7之间的结束曲线段的控制点p5-p8。类似地,如图17C中所示,p7与p12之间的曲线段被完全显示,但是至于p6与p7之间的起始曲线段,仅在由起始参数301(0.675)所指示的起始点处起始的一部分被显示。从由起始参数301所指示的起始点到p7的部分精确地遵循原始笔画对象210的形状,因为重新创建的第二笔画对象210保持与包括在原始笔画对象210中的相同的定义p6与p7之间的起始曲线段的控制点p5-p8。
在图14中,在步骤S1422中,如将在下面参考图20和图21更充分地描述的,操纵对象处理部128可以向远程用户的接收装置发送经重新创建的第一笔画对象210和第二笔画对象210。传输步骤S1422是经由墨水数据格式化部140在操纵对象处理部128与耦合到墨水数据处理部100外部的网络的远程用户的接收装置之间发生的如图6中所示出的“M2(远程)”操作。替换地,在步骤S1422中,操纵对象处理部128可以发送两个切片对象274而不是重新创建的笔画对象210。在这种情况下将在接收装置上执行步骤S1421。将在下面参考图20对此进行充分的描述。
在步骤S1423中,针对多个原有笔画对象210中的每一个重复的循环过程完成。
在步骤S1427中,操纵对象处理部128刷新(丢弃)在以上S1411的切片操作步骤中创建并使用的所有切片对象274(如果未就绪)。
上面所描述的切片操作实际上用由切片操作产生的两个新笔画对象210代替被切片的原始笔画对象210。因此,在创建了两个新笔画对象210之后,可以丢弃原始笔画对象210。
在图14中所描述的实施例中,与操纵信息(“输入3”)相关联的新笔画对象_j被视为被配置成对一个或多个原有笔画对象210执行切片操作的操纵对象270。换句话说,笔画对象_j被用作操纵对象270。
在其它实施例中,可以将在图14中的切片操作步骤S1411期间创建的切片对象274用作操纵对象270以对驻留在与其共享原有笔画对象210的一个或多个计算机(10-1-1、10-1-2、10-3、…)中的一个或多个原有笔画对象210执行切片操作。在这种情况下不丢弃切片对象274。将在下面参考图20和图21A更充分地描述切片对象274作为操纵对象270的使用。
在仍然另外的实施例中,定义图16A、图17A和图18A中所示出的孔段1801的孔段对象可以被创建,并且用作对一个或多个原有笔画对象210执行切片操作的操纵对象270。图18B图示定义孔段对象的参数的数据结构。行01指示该数据结构定义与切片对象274和笔画对象210不同的“孔段”对象。行02“hole_fromIndex”是指示孔段的起始点对象编号的索引值(例如,整数),其在此示例中是“6”,因为孔段是在p6与p7之间。行03“hole-endParameter”是在图14的步骤S1417中得到的“0.375”(比,float类型),其指示由孔段1801创建的第一切片的结束曲线段的结束点。行04“hole_toIndex”是指示孔段的结束点对象编号的索引值(例如,整数),其在此示例中是“7”,因为孔段是在p6与p7之间。行05“hole-startParameter”是在图14的步骤S1419中得到的“0.625”(比,float类型),其指示由孔段1801创建的第二切片的起始曲线段的起始点。将在下面参考图20和图21B更充分地描述孔段对象作为操纵对象270的使用。
虽然在上面描述的实施例中,P_intersect_L被用作第一切片的新结束点并且P_intersect_R被用作第二切片的新起始点,但是在其它实施例中,可以将同一点用作第一切片的新结束点和第二切片的新起始点两者。例如,为了易于计算,可以将P_intersect_Mid用作第一切片的新结束点和第二切片的新结束点两者。
根据上面所描述的本发明的实施例,切片曲线段(例如,“孔段”1801)的显示由定义第一切片的显示结束的结束点的新结束参数303并且由定义第二切片的显示开始的起始点的新起始参数301来控制。第一切片和第二切片两者保持完全定义孔段的结构的数据并且仅限制孔段的什么部分被显示为第一切片或第二切片。因此,这些切片在被呈现(显示)时精确地遵循原始笔画对象210的形状。另外,因为切片保持与在原始笔画对象210中相同的完全定义孔段的数据(例如,控制点),所以无需再计算控制点的位置或者计算新控制点。本发明的系统和方法优选地与具有如上面所讨论的“局部控制”特性的曲线插值算法(诸如Catmull-Rom曲线和Poly-Bezier曲线)一起使用。然后,由切片操作产生的切片需要保持最少量的数据(例如,最少数目的控制点)来定义由切片操作产生的孔段。
图19图示包含如图16C和图17C中所显示的两个重新创建的笔画对象210的笔画文件格式(SFF)的示例文件。图19可以与图示示例原始笔画对象文件的图11进行比较。
在图19中,虚线框1910指示包含图16C的第一重新创建的笔画对象210的文件。第一笔画对象文件包含与图16C的点对象p0~p8对应的点x0~x8。起始参数字段1912包括缺省值“0.0”并且结束参数字段1914包括在图14的步骤S1417中得到的值“0.375”。虚线框1920指示包含图17C的第二重新创建的笔画对象210的文件。第二笔画对象文件包含与图16C的点对象p5~p13对应的点x5~x13。起始参数字段1922包括在图14的步骤S1419中得到的值“0.675”,而结束参数字段1924包括缺省值“1.0”。第一笔画对象文件1910可以是(图11的)原始笔画对象文件的重写/修改的实例,或者可以从原始笔画对象文件复制以形成独立拷贝。如本文中所使用的,“重新创建的”文件可以意指这些类型的文件中的任何一个。如图19的字段1921中所示,第二笔画对象文件1920也可以是原始笔画对象文件的复制拷贝。
图20是在图14的步骤S1422处的墨水数据传输处理的详细流程图。在步骤2012中,墨水数据处理部100从上下文信息(“输入2”)获得指示(i)是否存在共享由墨水数据处理部100所生成的墨水数据200(一组笔画对象210)的远程用户以及(ii)要用于将墨水数据200发送到远程用户的消息类型的信息。
在步骤2014中,墨水数据处理部100的墨水数据格式化部140基于以上信息(i)来确定本地装置中的墨水数据200是否与另一远程计算机共享。如果当前不存在使用墨水数据200的远程用户或计算机,则可选地在步骤S2022中,墨水数据格式化部140可以在图21D中所示出的类型D消息(其对应于图19的SFF格式文件)中缓冲两个重新生成的笔画对象210。当远程用户稍后加入墨水数据处理部100的墨水数据生成会话时,文件格式化部140可以向远程用户发送类型D消息。这时不必发送切片操纵对象_j它本身,因为未实时地查看切片操作的远程用户仅需要接收切片操作的结果,即,两个重新创建的笔画对象210。
如果在步骤S2014中确定了远程用户存在,则在步骤S2016中,墨水数据处理部100基于以上信息(ii)来确定要用来将墨水数据200发送到远程用户的消息类型。可以取决于由远程用户的接收装置(参见图22)所支持的操纵操作的类型、特定应用中的时间延迟的容限、传输资源的可用量等而选择适合的消息类型。例如,当信息(ii)指示远程用户的接收装置不支持任何操纵(例如,切片)操作时,进行到步骤S2022,墨水数据格式化部140仅在类型D消息中缓冲切片操作的结果(即,重新创建的笔画对象)并且将其发送到远程用户。
在步骤S2016中,如果以上信息(ii)指示远程用户的接收装置支持将笔画对象210作为操纵对象210来执行以在接收装置上将一个或多个笔画对象210切片,则过程进行到步骤S2020。在步骤S2020中,墨水数据格式化部140可以使用墨水数据通信部144来在如图21C中所示出的消息类型C中发送操纵(切片)笔画对象_j。
图21C的类型C消息具有包括类型字段F101、绘图区域ID字段F102以及标识笔画对象_j的笔画ID字段F103的报头。类型字段F101指示消息具有实现(执行)切片操作的“切片器”类型。在此示例中,F101中的“切片器”类型指示构成指示所关联的笔画对象_j是操纵对象270的操纵信息(“输入3”)。类型C消息的净荷部分包括包含点对象p1~pn的操纵(切片)笔画对象_j。使用类型C消息来将笔画对象_j作为操纵对象270来发送的一个优点是允许相同的切片操作在传输侧和接收侧两者处实时地同时发生。这是因为传输侧在生成笔画对象_j时实际上能够将笔画对象_j与操纵信息(“输入3”)一起同时发送到接收侧,使得两侧然后能够同时执行相同的操纵笔画对象_j。
返回参考图20的步骤S2016,如果以上信息(ii)指示远程用户的接收装置支持将切片对象274或孔段对象作为操纵对象270来执行以在接收装置上将一个或多个笔画对象210切片,则过程进行到步骤S2018。在步骤S2018中,墨水数据格式化部140可以使用墨水数据通信部144来在如图21A中所示出的类型A消息中将切片对象274(图16B和图17B)作为操纵对象270来发送。替换地,在步骤S2018中,墨水数据格式化部140可以使用墨水数据通信部144来在图21B中所示出的类型B消息中将孔段对象(图18B)作为操纵对象270来发送。
图21A中的类型A消息具有包括类型字段F101、绘图区域ID字段F102以及标识笔画对象_j的笔画ID字段F103的报头。类型A消息的净荷部分包括由利用笔画对象_j将一个或多个原有笔画对象210切片产生的切片对象274的一对或多对。图21A图示两个这样的对,分别由利用笔画对象_j将原有笔画_3切片产生的字段F111_31和F111_32中的切片(第一)和切片(第二);以及分别由利用笔画对象_j将原有笔画_i切片产生的字段F111_i1和F111_i2中的切片(第一)和切片(第二)(省略了其它对的描述)。类型A消息的类型字段F101指示消息具有实现(执行)切片操作的“切片器”类型。在此示例中,F101中的“切片器”类型指示构成指示切片对象274的关联对形成操纵对象270的操纵信息(“输入3”)。接收到类型A消息的接收装置参考要切片的原始(原有)笔画对象210来提取每对切片对象274并且完结切片对象274,以生成然后能够被绘制在显示器上的两个新笔画对象210。使用类型A消息来将切片对象274作为操纵对象270来发送的一个优点是切片对象274的数据大小通常小于包括在类型C消息中的切片笔画对象210(笔画对象_j)的数据大小以及包括在类型D消息中的重新创建的笔画对象210的数据大小。
图21B中的类型B消息具有包括类型字段F101、绘图区域ID字段F102以及标识笔画对象_j的笔画ID字段F103的报头。类型B消息的净荷部分包括由利用笔画对象_j将一个或多个原有笔画对象切片产生的一个或多个孔段对象。图21B图示两个孔段对象:由利用笔画对象_j将原有笔画_3切片产生的字段F111_3H中的孔段笔画_3;以及由利用笔画对象_j将原有笔画_i切片产生的字段F111_iH中的孔段笔画_i(省略了其它孔段对象的描述)。类型B消息的类型字段F101指示消息具有实现(执行)切片操作的“切片器”类型。在此示例中,F101中的“切片器”类型指示构成指示所关联的孔段对象形成操纵对象270的操纵信息(“输入3”)。接收到类型B消息的接收装置参考要切片的原始(原有)笔画对象210来提取并执行每个孔段对象,以生成然后能够被绘制在显示器上的两个新笔画对象210。与上面所描述的类型A消息类似,用于将孔段对象作为操纵对象270来发送的类型B消息的一个优点是孔段对象的数据大小通常小于包括在类型C消息中的切片笔画对象210(笔画对象_j)的数据大小以及包括在类型D消息中的重新创建的笔画对象的数据大小。
图22是根据本发明的实施例的被配置成经由网络远程接收墨水数据200的墨水数据接收装置的功能框图。
接收装置包括网络通信部310(Rx、Tx)、墨水数据处理部100R、应用部300-2、图形处理部300R、显示器113R和操作系统400-2。在示例性实施例中,墨水数据处理部100R用在传输侧实现墨水数据处理部100的库具体化。因此,接收装置通常执行与由墨水数据处理部100执行的功能对应的配对功能。
在图22中,点“D”、“E”、“F_in”、“G”和“H”对应于传输侧的墨水数据处理部100中的相应点。在图22中,M2'(远程)指示接收到从传输侧的M2(远程)发送的操纵对象270所在的点。除了在图22中未在内部生成而是从传输侧接收切片对象274(或产生切片对象274的操纵笔画对象210)之外,M1'(本地)指示对应于传输侧的M1(远程)的点,其中在图4的步骤S1421中执行的用于完结(提交)切片对象274的处理被执行。
网络通信部310(Tx、Rx)经由WAN或无线/有线LAN接口接收分组并且提取如图12中所描述的各种墨水数据消息。
墨水数据处理部100R包括墨水数据格式化部140R和墨水数据生成部120R。墨水数据格式化部140R对应于传输侧的墨水数据格式化部140,并且类似地包括被配置成经由点“E”以记录类型笔画文件格式(SFF)接收墨水数据200的记录格式处理部142R以及被配置成经由点“F_in”以通信类型笔画消息格式(SMF)接收墨水数据200的墨水数据通信部144R。数据通信部144R基于包含在接收的消息(“输入3”)的报头字段F101中的值来确定接收的消息是否包括操纵对象270,即,特殊类型的笔画对象210(例如,切片器类型笔画对象)、切片对象274,或孔段对象,其被配置成对一个或多个原有笔画对象执行操纵(切片)操作。
墨水数据生成部120R对应于传输侧的墨水数据生成部120。与传输侧的墨水数据处理装置不同,接收装置(其不包括输入传感器110)不接收笔事件数据以生成笔画对象210。替代地,墨水数据生成部120R接收诸如笔画对象210、操纵对象270、绘图风格对象230和元数据对象250的各种对象。墨水数据生成部120R使用笔画对象处理部122和操纵对象处理部128来处理(例如,操纵)所接收到的笔画对象210,并且将经操纵(变换)的笔画对象210存储在存储器装置770中。
图形处理部300R执行与由传输侧的图形处理部300所执行的处理对应的处理。如图13A和图13B中所示,图形处理部300R通过使用包含在笔画对象210中的点对象作为控制点来根据诸如Catmull-Rom曲线算法的曲线插值算法生成插值曲线来重建笔画(路径)。图形处理部300R还参考为笔画对象210而定义的起始参数和结束参数来控制笔画对象210要被显示的范围(部分)。例如,如果起始参数是0.5并且结束参数是0.5,则图形处理部300R从其起始曲线段的中点起开始绘制(显示)笔画对象210并且在其结束曲线段的中点处停止显示笔画对象210。图形处理部300R还参考与笔画对象210相关联地接收的绘图风格对象230将宽度、颜色和其它图形特性添加到经呈现的笔画对象210。
显示器113R对应于传输侧的显示器113。应用部300-2由操作系统400-2支持并且动态地或静态地链接到实现墨水数据处理部100R的库。应用部300-2可以包括与传输侧的应用部300-1中所支持的应用相同、类似或不同的应用。
图23是图示根据本发明的实施例的可以由图22的接收装置执行的操纵(切片)对象的接收处理的流程图。
在步骤S2301中,墨水数据格式化部140R接收经由网络通信部310接收的墨水数据消息并且从包括在消息报头(“输入3”)中的类型字段F101中提取包括在每个消息中的消息的类型。
在步骤S2303中,墨水数据格式化部140R确定消息包含普通笔画对象210还是操纵对象270。如上所述,操纵对象270可以是与操纵信息(“输入3”)相关联的笔画对象210、切片对象274或孔段对象中的任一个。
笔画对象210可以如在图12中一样是在笔画消息格式(SMF)文件中或者如在图11中一样是在笔画文件格式(SFF)文件中。如图21A-21C中所示,操纵对象270优选地是在SMF文件中。
如果确定了接收到普通笔画对象210,则在步骤S2305中,笔画对象处理部122在存储器装置770R中添加所接收到的笔画对象210。
如果确定了接收到操纵(切片)对象,则在步骤S2311中,操纵对象处理部128提取包括在所接收到的消息中的一个或多个操纵对象,并且在步骤S2313中,生成所提取的操纵对象的列表。例如,如果接收到图21A的类型A消息,则列表将字段F111_31、F11_32、F111_i1和F111_i2中的切片对象274的两对标识为操纵对象(省略了其它对的描述)。如果接收到图21B的类型B消息,则列表将字段F111_3H和F111_iH中的两个孔段对象标识为操纵对象(省略了其它孔段对象的描述)。如果接收到图21C的类型C消息,则列表将笔画对象_j标识为操纵对象270。
将针对包括在列表中的操纵对象中的每一个重复以下步骤S2315-S2318。
在步骤S2315中,操纵对象处理部128确定操纵对象270将被应用于的目标笔画对象210。例如,在图21A的类型A消息的情况下,确定了形式为字段F111_31中的切片对象274对的操纵对象270被应用于原有笔画_3,并且形式为字段F111_i1和F111_i2中的切片对象274对的操纵对象270被应用于原有笔画_i。
在步骤S2317中,操纵对象处理部128对在步骤S2315中标识的目标笔画对象210应用操纵对象270以执行操纵操作,并且提交(完结)操纵操作以便生成完全定义的笔画对象。所生成的笔画对象然后被存储在笔画对象处理部122的存储器装置770R中。步骤S2317的操作通常对应于图14中的步骤S1421的操作。简单地说,提交或者完结操纵操作在结果得到的笔画对象中反映操纵操作的结果。
在步骤S2318中,操纵对象处理部128确定在步骤S2313的列表中标识的所有的操纵对象是否已在它们相应的目标笔画对象上被执行。如果否,则过程返回到步骤S2315以处理下一个(剩余的)操纵对象270。
如果列表中所标识的所有的操纵对象已在它们相应的目标笔画对象被执行并且已经提交(完结)它们的操纵操作以生成一组新笔画对象,则在步骤S2319中,操纵对象处理部128刷新被用作操纵对象的切片对象274和孔段对象(若有的话)。
虽然传输侧的墨水数据处理部100以及接收侧的墨水数据处理部100R被描述为在操作系统400-1或400-2上操作的软件库,但是可以以不同的方式,诸如在应用特定集成电路(ASIC)或IC中,实现墨水数据处理部100和100R。
因此,如图91中所图示的,根据第一实施例的墨水数据处理方法,能够修改或者操纵(例如,切片)笔画对象210的一部分,并且将修改/操纵发送到一个或多个其它计算装置。
第二实施例
本发明的第二实施例致力于用于在共享公共绘图区域的多个装置(传输装置、中继服务器、接收装置)之中传递(发送、中继、接收并处理以及流式传输)墨水数据200的方法和系统。特别地,所述方法和系统使得能够按照正确的通信顺序并以及时方式叠加分别由不同的装置在公共绘图区域内实时地生成的墨水数据200的多个层。
本发明的第二实施例特别适合于实现实时协作应用,其中多个用户能够实时地同时将手绘的(徒手画的)输入输入到公共绘图区域(或画布)。
为了在实时协作应用中使用,本发明提供了能够利用可能由于在其中控制墨水数据200的分段的传输定时的新颖通信/再现方案而在没有可感知的时间延迟的情况下共享的完全的一组属性(颜色、迹线或笔画宽度、呈现(绘图)风格等)来生成墨水数据200的方法和系统。
根据一个方面,墨水数据200包括使用不同类型的装置分别生成(绘制)的笔画对象以及表征笔画对象的绘图风格对象230(例如,什么类型的笔尖被用来绘制笔画对象),并且在公共绘图区域内呈现墨水数据200。诸如实时协作应用的一些应用具有严格(快速)时间要求,而其它应用不具有这样的严格时间要求。根据本发明的一个方面的设备和方法被配置成根据使用中的特定应用的要求来以及时方式、按照正确的顺序并且以正确的格式发送/中继/接收墨水数据200。
根据一个方面,本发明提供由传输装置实现来与分别与传输装置共享绘图区域的多个接收装置进行通信的方法,其中,传输装置向多个接收装置发送表示由传输装置的输入传感器所检测到的输入操作的迹线的墨水数据200。所述方法通常包括三个步骤:(a)墨水数据生成步骤、(b)消息形成步骤和(c)传输步骤。墨水数据生成步骤包括:(i)连续地输入根据指示体的移动而生成的笔事件数据(输入1),并且生成笔画对象的分段数据,其中,笔画对象包含多个点对象以表示指示体的所述移动的迹线,分段数据是按定义单位T生成的,以及ii)在与所述迹线的起始点处生成笔事件数据对应的下笔时间,基于上下文信息(输入2)来生成绘图风格对象230,其中,绘图风格对象230定义笔画对象的所述迹线的演绎形式。消息形成步骤包括:(i)生成包括绘图风格对象230的第一消息,以及(ii)继第一消息之后生成一个或多个第二消息,所述一个或多个第二消息包括分段数据。最后,传输步骤包括根据定义通信协议依次发送第一消息和一个或多个第二消息。
根据另一方面,提供了用于接收表示由传输装置的输入传感器所检测到的输入操作的迹线的墨水数据200并且将所接收到的墨水数据200中继到分别与传输装置共享绘图区域的多个接收装置的中继方法。所述方法通常包括四个步骤:(a)接收步骤、(b)控制步骤、(c)数据消息中继步骤和(d)传输步骤。接收步骤包括接收包括有关绘图区域的信息的控制消息以及接收包括要在绘图区域中呈现的墨水数据200的数据消息。控制步骤包括更新列举共享绘图区域的多个接收装置的通信地址的连接列表。更新消息中继步骤包括:(i)基于包括在数据消息中的笔画对象210来确定是否允许绘图区域的更新,(ii)如果允许更新,则生成要直接或经由另一中继装置中继到所述连接列表中所列举的接收装置的新数据消息,以及(iii)如果不允许更新,则生成指示对绘图区域的更新的请求被拒绝的拒绝消息。最后,传输步骤包括在通信分组中将新数据消息发送到接收装置。
根据另一个方面,本发明提供通常包括四个步骤的接收墨水数据200的方法。第一步骤包括在与第一分段ID相关联的消息中接收笔画对象210的第一分段。第二步骤包括在与第三分段ID相关联的消息中接收笔画对象210的第三分段,其中,第三分段ID不与第一分段ID连续。第三步骤包括基于所接收到的笔画对象210的第一分段和第三分段来对笔画对象210的遗漏的第二分段进行插值并且显示经插值的第二分段。第四步骤包括,在接收到笔画对象210的结束之后,发送包括笔画对象210的笔画ID的请求以作为整体请求笔画对象210的重传。
根据又一个方面,提供了使用存储有墨水数据200的服务器来流式传输包括多个笔画对象的墨水数据200的方法。所述方法通常包括两个步骤。第一步骤包括顺序地读取所存储的笔画对象。第二步骤包括在分别对应于笔画对象的顺序部分的定义定时处将笔画对象从服务器发送到一个或多个接收装置。
第二实施例的描述
参考第一实施例上面所描述的图1图示根据本发明的第二实施例的在其中可以生成并传递(发送、中继、接收、处理、流式传输等)墨水数据200的总体系统。例如,图1中的装置10-3可以使用由可以为实时协作类型应用的应用服务#2所提供的应用来实时地组合(合成)从装置10-1-1和装置10-1-2分别输出的墨水数据200。装置3可以将从装置10-1-1和装置10-1-2输出的墨水数据200作为实时地彼此叠加的不同层呈现(绘制)在其屏幕上。
根据本发明的实施例的在不同装置之中生成并传递的墨水数据200由各种类型的装置、计算机、操作系统或应用通过通信资源来共享。
图25是墨水数据200的信息模型的实体关系图。图25与图2不同,因为图25的笔画对象210不必包括startParameter 301或endParameter 303,但是其他与图2相同。根据本发明的实施例的墨水数据200包括笔画对象210(或笔画对象集合202)(参见图3A)以及包括控制笔画对象210在被呈现(绘制、可视化、栅格化)时的形状和颜色所需要的信息的绘图风格对象(集合)230。参考第一实施例上面所描述的图3B和图3C分别图示根据图3A的同一笔画对象210的两个不同的绘图风格对象230的两种呈现(绘图)结果。墨水数据200还包括元数据对象(集合)250,其包括描述笔画对象210的非绘图相关信息,诸如原作者、笔ID、在本地获得的日期和时间信息、由GPS获得的位置信息等。墨水数据200又进一步包括操纵对象(集合),其包括对原有笔画对象210进行操纵(例如,选择、旋转、切片)所需的信息。这样的信息被以操纵对象的形式组织,所述操纵对象中的每一个可在原有笔画对象210上执行以实现笔画对象210的期望操纵。其它操纵对象可以包括例如裁切(删除)、擦除、复制、放大和收缩操纵对象。
图3A图示包含多个点对象(点_1…点_n)的笔画对象210。笔画对象210包括表示指示体的移动的迹线的信息。指示体可以是笔型工具或手指。具体地,笔画对象210包括形成迹线的多个点对象(点_1…点_n)的坐标。这些点对象中的每一个可以与诸如其半径、颜色、透明度(不透明度)值等的属性相关联。
多个点对象(点_1…点_n)的坐标是从适当地对根据指示体的移动而生成的笔事件数据(或指示体操作)进行采样并且必要时对经采样的点进行插值而获得或者得到的。如参考第一实施例上面所描述的,为了将迹线表示为平滑曲线,可以采用诸如Catmull-Rom插值算法的适合的曲线算法。
通常存在用于生成多个点对象的(x,y)坐标的两种方法。首先,在正在输入笔事件数据的同时输出每单位时间从笔事件数据得到的点作为“原始值类型”的点。其次,在输入了形成笔画的所有点之后,生成表示笔画的拟合曲线(Catmull-Rom曲线、Bezier曲线等)的高阶函数,并且获得表达拟合曲线所需的最少数目的点对象作为“优化点类型”的点。根据本发明的一个实施例,取决于对由每个应用所请求的墨水数据200通信的定时约束,选择性地切换生成(x,y)坐标的两种方法。
如图3B和图3C的不同呈现结果中所图示的,每个绘图风格对象230包括有关在屏幕或显示器上呈现(绘制或者表达)迹线的唯一形式,即迹线如何出现在屏幕或显示器上的信息。因此,使用不同的绘图风格对象来呈现同一笔画对象210在它们如何出现方面导致笔画对象210的不同演绎。迹线的形式可以由点对象的形状(例如,图3B中的圆或图3C中的雪花或花瓣)、迹线的宽度(例如,图3B中的每个圆的半径或图3C中的每个雪花的大小)、与每个点对象相关联的任何角度或偏移(参见图3C)、迹线的颜色(或点对象的颜色)、迹线的(或点对象的)透明度/不透明度、迹线的纹理(或点对象的纹理)等中的一个或多个来定义。绘制笔画对象210所需的信息被包括在与该笔画对象210相关联的绘图风格对象230中。
图26是根据本发明的实施例的总体通信系统图。该通信系统包括全部共享并使用如图1中所示出的一组库资源10的传输装置10-1、中继服务器10-2以及多个接收装置10-3、10-4...10-n。中继服务器10-2还可以是用于增加性能的中继服务器的全球分布式对等网络(与内容递送网络类似)的一部分。根据本发明的实施例,图26的系统适合于实现墨水数据200的传输、中继和接收方法以实现实时协作。
图26的传输装置10-1对应于图1的装置10-1-1或装置10-1-2。
传输装置10-1包括输入传感器110、输入处理部(未示出)、墨水数据处理部100T、应用部300-1和通信部112(“Tx Rx”)。墨水数据处理部100T对应于第一实施例的图5中的100T。应用部300-1包括链接到墨水数据处理部100T并且由该组库资源10(图1)所支持的一个或多个用户应用。在所图示的实施例中,应用部300-1执行利用实时通信功能的实时协作应用#1。
通常是中继服务器的中继服务器10-2具体化并提供墨水数据交换服务。在所图示的实施例中,中继服务器10-2通过实时地交换或者中继墨水数据200来服务远离中继服务器10-2定位的传输装置10-1和接收装置10-3、10-4...10-n。
中继服务器10-2包括要在下面更充分地描述的通信部(510Rx、511Tx)、墨水数据中继部540、应用控制部520以及被配置成存储画布数据(或绘图区域数据)的储存库。根据本发明的一个方面,储存库以如图28中所图示的笔画文件格式(SFF)存储有关被连续地更新的绘图区域(画布)的最新状态的信息。在从传输/接收装置请求时,中继服务器10-2将公共绘图区域的最新状态返回给请求装置,使得它们全部能够共享绘图区域的最新状态(即,“画布”当前看来像什么)。根据一个方面,中继服务器10-2吸收由多个装置所使用的通信协议方面的差异,以允许在那些装置之中传递和交换墨水数据200。
接收装置10-3、10-4…10-n各自对应于图中的装置3,并且包括通信部(310“RxTx”)、墨水数据处理部100R、图形处理部300和应用部300-2。应用部300-2执行利用在墨水数据处理部100R中处理的墨水数据200的定义和通信协议的应用#2。接收装置的应用#2可以与由传输装置10-2所使用的应用#1相同,或者可以是不同的,只要应用#1和应用#2两者共享墨水数据200的相同的定义和通信协议即可。
如图26中所示出的传输装置10-1、中继服务器10-2和接收装置10-3、10-4...10-n之间的划分仅为了易于图示,并且根据本发明的实施例的每个应用和实施方式,可以部分地或者完全合并这些装置的各种功能,或者还可以划分并分发这些装置的各种功能。例如,接收装置10-3可以被装配成执行传输装置10-1的墨水数据处理功能(要在图27中描述的“墨水数据生成”120T和“墨水数据格式化”140T),或者传输装置10-1可以被装配成执行接收装置10-3的墨水数据处理功能(要在图31中描述的“墨水数据格式化”140R和“墨水数据生成”120R)。在一些实施方式中存在多个传输装置,然而在其它实施方式中不存在传输装置。在后者情况下,例如,中继服务器10-2在其储存库中保持墨水数据200并且将墨水数据200流式传输到一个或多个客户端接收装置10-3、10-4...10-4。
在图26中,虚线箭头图示墨水数据控制消息,诸如将上面叠加了经由多个装置输入的墨水数据200的公共绘图区域(或画布)设定为多个层的控制消息的流程。墨水数据控制消息的名称从前缀“CTRL_”起始。
实线箭头图示包括要彼此叠加在公共绘图区域中的经由多个装置输入的实际墨水数据200的墨水数据消息的流程。墨水数据消息的名称以前缀“DATA_INK_”开始。
图26中所示出的“SMF”(笔画消息格式)是在分组中以传输格式生成和布置的消息,如要在下面描述的图34中所图示的。简要地,传输格式的墨水数据200适合于没有感知延迟的实时通信。例如,上面所描述的“原始值类型”的点对象可以被用来形成传输格式的笔画对象210。
图26中所示出的“SFF”(笔画文件格式)是以记录格式生成并布置的消息,如要在下面描述的图28中所图示的。简要地,记录格式的墨水数据200被压缩并适合于存储。例如,上面所描述的“优化点类型”的点对象可以被用来形成记录格式的笔画对象210。作为另一示例,以SMF传输格式的颜色信息可以用RGB进行处理,而以SFF记录格式的颜色信息可以为了压缩效率以YCC进行处理。
在本发明的各种实施例中,传输格式(例如,SMF)被用来实时地在多个装置之中传递并交换墨水数据200,然而记录格式(例如,SFF)被用来将公共绘图区域(画布)存储在储存库(其可以在初始访问时被发送到每个装置)中。
虚线箭头“A.CTRL_JOIN_REQ”是当传输装置10-1首先加入通过协作服务提供的公共绘图区域的编辑会话时发出的消息。传输装置10-1可以是用于加入公共绘图区域的第一装置,或者可以是加入由另一传输装置已经起始的编辑会话的新来者。虚线箭头“A.CTRL_JOIN_REQ”指示传输装置10-1发出来设定要与接收装置10-3、10-4...10-n共享的绘图区域(或画布)的消息的传输方向。CTRL_JOIN_REQ消息可以包括或者与包含要与中继服务器10-2协商或者共享的有关传输装置的环境的信息(例如,描述其传输/接收环境的一组参数)的消息相关联。
例如,描述传输装置的传输/接收环境的参数包括诸如笔画传输/接收单位(大小)的通信参数、消息重传控制设定等(图30A,524-1)、定义笔工具集、坐标系统等的绘图参数(图30B,524-2)以及诸如资源竞争的优先级、阻止用户列表等的用户策略参数(图30C,524-3)。
虚线箭头“B.CTRL_JOIN_REP”指示中继服务器10-2响应于CTRL_JOIN_REQ消息而发出的响应消息的传输方向。CTRL_JOIN_REP包括用于传输装置10-1发送其墨水数据200所必需的环境数据,并且特别地,该环境数据可以包括有关接收装置10-3、10-4…10-n的绘图区域(画布)的最新状态的信息。
实线箭头“C.DATA_INK_BGNOS”、“DATA_INK_MVDOS”…“DATA_INK_ENDOS”(参见图34)指示传输装置10-1在定时处并以依据要稍后详细地描述的定义通信协议的传输格式作为用于更新绘图区域(或画布)的更新消息向中继服务器102发送的墨水数据200的传输方向。
实线箭头“D.DATA_INK_BGNOS”和“DATA_INK_MVDOS”指示由中继服务器10-2处理并由中继服务器10-2发出(广播)到接收装置10-3、10-4…10-n的墨水数据200在相应的通信线上的传输方向。
图27用功能框图图示图26的传输装置10-1。传输装置10-1包括(触摸/笔)传感器110、输入处理部111、墨水数据处理部100T、应用部300-1、网络通信部(Tx、Rx)112T、图形处理部300、显示器113以及操作系统400-1。
传感器110具有用来检测用户(经由诸如笔和手指的指示体)的手写运动或操作的功能并且生成表示所检测到的手写运动的输入数据信号。例如,可以使用静电传感器、压敏传感器、基于电磁谐振(EMR)的传感器。
输入处理部111接收通常依赖于特定传感器装置及其在操作系统400-1上运行的驱动程序的输入数据信号,将其转换为包括感测的坐标位置以及诸如指示体压力信息的其它信息的“笔事件数据”,并且将该笔事件数据作为“输入1”来输出。笔事件数据仍然依赖于用来检测手写操作输入的特定传感器装置。输入处理部111通常由传感器110的驱动器或执行与传感器驱动器对应的处理的库来提供。例如,当使用静电传感器时,输入处理可以包括用于基于连续地输入的输入来解释手势的处理,诸如防误触处理。因为笔事件数据是传感器/装置相关的,所以取决于传感器110是否具有压力/倾斜检测功能,笔事件数据可以包括或者可以不包括指示体压力信息或指示体倾斜(角度)信息。传感器110和输入处理部111的配置不限于所图示的配置,并且可以在诸如笔形装置的数字固定装置中提供传感器110和输入处理部111中的全部或一部分。
墨水数据处理部100T包括墨水数据生成部120T和墨水数据格式化部140T。墨水数据处理部100T对应于第一实施例的图5中的100T。墨水数据处理部100T负责将可能是传感器/装置相关的笔事件数据(“输入1”)转换为能够由各种装置上的各种应用所使用和共享的墨水数据200。
墨水数据生成部120T检索或者接收传感器/装置相关的笔事件数据,并且将其转换为装置无关的墨水数据200,其是使用真实笔在纸上施加(例如,绘制、涂去、沉积等)的墨水的数字表示。墨水数据生成部120T对应于图7中的笔画对象处理部122。墨水数据生成部120T按定义单位T,诸如定义时间单位(例如,5msec)或定义数据大小单位检索墨水数据(存储在图7中的存储器770中的点对象p0至pn-1),以生成表示通过手写操作所输入的迹线的笔画对象210或该笔画对象210的分段(部分)。
墨水数据生成部120T从传感器110接收笔事件数据(“输入1”),并且还从应用部300-1(例如,实时协作应用)或者从操作系统(400-1)接收上下文信息(“输入2”)。
上下文信息(“输入2”)是有关笔事件数据在绘制笔画的第一部分时(即,在“下笔”时)的上下文或环境的信息。上下文信息通常由应用部300-1在由传感器110生成笔事件数据之前设定。例如,上下文信息可以包括所使用的笔尖的类型(例如,画笔、蜡笔、铅笔)、笔画/迹线颜色(红色、绿色、蓝色)、笔笔画的透明度(或不透明度)值(alpha)、笔画/迹线宽度等。墨水数据生成部120T基于在笔事件数据起始时(在图32中的S605处,将稍后描述)的上下文信息(“输入2”)来生成被用来在显示器上绘制(呈现)笔画对象210的绘图风格对象230。
上下文信息(“输入2”)还包括关于笔事件数据的非绘图相关信息,诸如作者信息、笔ID、日期/时间信息、位置信息等。基于这样的非绘图相关上下文信息,墨水数据生成部120T生成元数据对象250。
墨水数据生成部120T从应用部300-1附加地接收操纵信息(“输入3”)。输入3指定了来自传感器110的下一个输入将不定义普通笔画对象210,而是将定义对原有笔画对象210进行具体化并执行操纵操作(例如,切片、删除、复制、放大等)的操纵对象270。当接收到输入3时,相对于原有笔画对象#0~#i中的一个或多个,下一个笔画对象#j被形成为操纵对象270(例如,切片对象)并且其操纵操作被应用。
墨水数据格式化部140T包括墨水数据通信部144T和记录格式数据处理部142T。一般而言,墨水数据格式化部140T对由墨水数据生成部120T每定义单位T生成的笔画的分段数据进行格式化(例如,放置在传输分组中)。墨水数据格式化部140T还对由墨水数据生成部120T生成的绘图风格对象230、元数据对象250和操纵对象270进行格式化。墨水数格式化部140T根据从应用部300-1接收的格式选择信息(Fmt_Sel)来对消息中以及通信分组中的各种对象和每个笔画对象210的分段数据进行格式化。
墨水数据通信部144T在从应用部300-1接收的格式选择信息(Fmt_Sel)指定将传输格式(例如,SMF)用作输出格式时执行以下功能:
1)输入每定义单位T由墨水数据生成部120T作为分段(或完整)数据而生成的笔画对象210,并且根据隐式地定义或者显式地协商的参数来生成各种类型的数据消息(即,如在图34中一样从前缀“DATA_INK_”开始的消息)(例如,图30A,524_1c)。
2)输入由墨水数据生成部120T生成的绘图风格对象230并且将该绘图风格对象230(图34中的“F104”)添加到“第一”数据消息(图34中的“DATA_INK_BGNOS”)。
3)确定笔画对象210的唯一笔画ID,并且将该笔画ID(图34中的“F103”)添加到包括笔画对象210的分段数据的所有数据消息。
4)根据经协商的参数(例如,图30A,524_1f,具有或没有524_1a)在接收到响应消息(图36A中的“DATA_INK_NACK”或图37中的“DATA_INK_REJOS”)时自适应地执行重传处理(参见图35A、图35B和图36A)或者中止处理(图37)。
记录格式数据处理部142T将根据应用部300-1生成的墨水数据200处理成与传输格式不同的记录格式(例如,SFF)。例如,可以将记录格式的墨水数据200从传输装置10-1上传到中继服务器10-2,以指示要由接收装置10-3、10-4…10-n的多个用户在对实时协作应用的初始访问时共享(访问)的公共绘图区域(画布)的当前状态。另一方面,代替记录格式,传输格式可以被用来在多个装置之间实时地传递墨水数据200。
图28图示用于在本发明的实施例中使用的示例记录格式。该记录格式在所包括/省略的数据的类型以及数据的顺序和冗余方面与(图34的)传输格式不同。
所包括/省略的数据的类型
例如,当操纵对象270被生成来修改原有笔画对象210时,以传输格式生成并发送用于对驻留在一个或多个计算机中的墨水数据200进行变换的操纵对象270(例如,如参考第一实施例上面所描述的切片对象274)。另一方面,以记录格式足以仅记录在操纵(更新)已完成之后的状态,并因此不必保持操纵对象270它本身。因此,图28的记录格式示例不包括任何操纵对象270。
数据的顺序和冗余
元数据对象50包括关于笔画对象210的非绘图相关信息,诸如作者信息、笔ID等,所述非绘图相关信息例如在使用同一支笔的同一作者按顺序生成多个笔画对象1至5的同时输入的许多笔画对象1-5来说常常是相同的。
以记录格式可以减少冗余,因为整个数据内容在以记录格式对数据进行格式化时是已知的。在所图示的示例中,可以对所有笔画对象1-5应用原作者的相同值,并因此不必重复相同值5次。在例如相同类型的笔尖形状(例如,画笔)被用来绘制多个笔画对象的一些情况下要被包括在绘图风格对象230中的绘图相关信息还可能包括冗余。因此,作为另一示例,可以对笔画对象1、3和5应用笔尖形状的相同值,其中不必以记录格式重复这个值3次。类似地,当对笔画对象2和4应用笔尖对象的相同值时,不必以记录格式重复该值。在这方面,以记录格式维持笔画对象的时间顺序(即,它们被输入的顺序)不是关键的。并且,因为每个笔画对象在被置于记录格式时完全完成,所以可以将形成笔画对象的点对象的总数包括在笔画对象它本身中。
另一方面,以传输格式难以在实时通信是重要的情况下重新布置笔画对象的时间顺序。在实时通信中,通常有必要随着笔画对象1-5被输入和生成而按照时间顺序发送有关笔画对象1-5的信息。并且,当发送单个笔画对象的分段数据时,不能够提前知道有多少点对象将被包括在笔画对象中,并因此可能有必要同样地指示完成笔画对象的最后分段数据(并且最后分段数据可以包括有关包括在笔画对象中的点对象的总数的信息)。
根据本发明的实施例,可以用比以传输格式少的字节以记录格式包括向相同量的信息,因为出于实现没有可感知的时间延迟的实时通信的目的传输格式可能需要具有冗余和严格的时间顺序结构。因此,出于存储器空间节约的目的,存储在中继服务器10-2的储存库中的最新绘图区域信息优选地具有记录格式,所述最新绘图区域信息然后能够由连接到中继服务器102的各种装置使用更少量的传输资源来访问和检索。
返回参考图27,传输装置10-1的网络通信部112T(Tx、Rx)生成包括由墨水数据处理部100T生成的消息作为净荷的通信分组(参见图34),并且经由连接到媒体(以太网等)的网络接口输出分组。
必要时可以鉴于通信环境基于隐式或显式(经由协商)定义使用各种通信协议。例如,可以使用包括诸如TCP或基于TCP或SSL的HTTP(S)的内置重传机制的协议(图35A),或者可以使用诸如UDP(或RTP/UDP)的本身不提供重传机制的协议(图35B)。另外,当使用UDP时,可以采用消息重传机制(图36A)或者出于遵照实时类型应用的时间要求的目的省略消息重传机制(图36B)。并且,能够分别将不同的通信协议用于控制消息和数据消息。例如,能够采用具有重传机制的协议来发送用虚线箭头示出的控制消息,同时采用没有重传机制的协议来发送用实线箭头示出的数据消息。
应用部300-1提供使用根据本发明的实施例的墨水数据传输方法的应用。应用部300-1经由网络通信部112T(Tx)向管理公共绘图区域(或画布)的最新状态的中继服务器10-2(特别地,图29中的520)发出CTRL_JOIN_REQ等。应用部300-1确定要使用输入装置110在上面执行绘图的绘图区域(画布)。
应用处理部300-1对以下信息进行处理并且将其提供给传输装置10-1的墨水数据处理部100T:
*诸如颜色信息、笔尖形状、原作者信息、创建日期和时间的上下文信息(输入2),
*指定传入输入形成操纵对象的操纵信息(输入3),和/或
*格式选择信息(Fmt Sel),其指定应该选择传输格式和记录格式中的哪一种格式。
应用处理部300-1能够接收由墨水数据生成部120T生成的墨水数据200以既输出给远程定位的接收装置(10-3、10-4...10-n)又输出给传输装置自己的本地显示器或屏幕(如果提供了)。
图形处理部300基于墨水数据200生成像素数据。图形处理部300能够将笔画对象立即绘制(呈现)在本地显示器或屏幕上,这可以表示经由多个装置输入的墨水数据200作为不同层被叠加的公共绘图区域的状态。
根据本发明的实施例的墨水数据传输装置10-1确定供使用的绘图区域(画布)的最新(更新的)状态,并且连续地处理笔事件数据以每定义单位T(例如,5msec)生成笔画对象210的分段(或完整)数据。墨水数据传输装置10-1还选择上下文信息(输入2)的相应部分来生成关联的绘图风格对象230和元数据对象250,基于输入3来生成操纵对象,并且以传输格式(例如,SMF)对所生成的对象进行格式化以用于传输到中继服务器10-2并传输到接收装置10-3、10-4…10-n。可以基于来自协作应用的请求自适应地确定定义单位T。
图29是中继(或流)服务器10-2的框图。中继服务器10-2通过将从一个或多个传输客户端接收的分段数据中继到一个或多个接收客户端装置10-3、10-4...10-n来提供实时协作服务。中继服务器10-2的功能可以被包含在单个装置中,或者可以被分布在通过网络链接的多个服务器之中。
中继服务器10-2包括消息接收部510、绘图区域管理部520、墨水数据中继部540以及消息传输部511。
消息接收部510从传输装置10-1分别接收控制消息和数据消息。可以在依据协议(RTP/HTTP/HTTPS(SSL)/TCP/UDP/Websocket等)的通信分组中并且按照可以被预定义或者可以在装置首次加入公共绘图区域时基于装置之间的按需协商而定义的消息类型(分段、重传、最大延迟等)在传输装置10-1与中继服务器10-2之间发送消息。如所图示的,消息接收部510可以采用多个接收端口来区分控制消息和数据消息,但是可以使用其它方法来区分控制消息和数据消息。例如,除了处理数据消息的中继服务器10-2之外还可以提供用于处理控制消息的单独的装置(服务器),或者可以使用可从公共接收套接字缓冲器获得的消息报头来区分两种类型的消息。
绘图区域管理部520管理绘图区域的状态,其中从多个装置输入并通过中继服务器10-2交换的墨水数据200作为不同层彼此叠加。绘图区域管理部520包括服务管理部522和绘图区域信息管理部524。
服务管理部522管理采用根据本发明的实施例的墨水数据中继方法的服务。服务管理部522与外部服务器(未示出)协作以执行例如计费功能、新用户的认证功能、用于提供对公共绘图区域的基于订阅的查看访问、授权或者不授权每个用户将墨水数据200输入到公共绘图区域的功能,即,所谓的AAA(计费、认证、授权)功能。
绘图区域信息管理部524管理用来控制墨水数据中继方法的操作的绘图区域信息。该绘图区域信息通常包括三种类型的信息(图30A中的524_1;图30B中的524_2;以及图30C中的524_3)。绘图区域信息管理部524管理三种类型的信息,并且基于三种类型的信息更新、维持并清除用户连接列表541,所述用户连接列表541列举连接到每个绘图区域(画布)的一个或多个用户。
图30A示出与墨水数据200的传输和接收有关的一组通信参数524_1。例如,在应用启动时在通信装置之中交换通信参数。通信参数524_1可以包括下列的:
(524_1a)分组重传参数定义是否在被用来承载墨水数据200的通信分组(或协议栈)中建立重传机制。例如,当将TCP(具有重传支持)用于传输同时将UDP(没有重传支持)用于接收时,针对传输设定TRUE然而针对接收设定FALSE。例如,这实现墨水数据200从传输装置10-1到中继装置10-2的鲁棒且可靠的传输,然而同时提供墨水数据200从中继装置10-2到多个接收装置10-3、10-4...10-n的实时时间延迟不可感知的流式传输。
(524_1b)MTU(最大传输单元)、MSS(最大段大小)参数取决于传输装置连接到的媒体的类型(例如,以太网)而定义MTU或MSS(例如,146个字节)。
(524_1c)笔画数据分段启用参数设定是否将笔画对象210分段成各自小于作为整体的笔画对象210的分段。
(524_1d)最大Rx延迟参数例如用毫秒(msec)设定最大允许接收延迟。
(524_1e)消息加密方案参数定义是否使用加密并且如果使用了则使用什么加密/解密算法。
(524_1f)消息重传参数针对诸如在通信层中不包括重传机制的UDP的协议来定义是否在消息层中实现重传。例如,该参数被用来在在消息层中使用重传(图36A)与不在消息层中使用重传(图36B)之间切换。
(524_1g)音频同步启用参数定义音频和笔画数据是否被同步地再现,并且可以被用来确定是否以分段或者以完整形式(按笔画单位)发送墨水数据200。例如,当音频和笔画数据将被同步地再现时,可以在每个分段加时间戳的情况下对笔画数据进行分段,使得每个分段然后能够随着其对应的音频数据同步地再现。
(524_1z)其它参数集合标识符定义通信参数的预定集合。
图30B示出与墨水数据200的绘图(呈现)有关的一组绘图参数524_2,并且可以下列的:
(524_2a)绘图区域ID参数设定用户装置可以加入的公共绘图区域。在所图示的示例中,图30B示出作为公共绘图区域(或画布)ID的“#123”。在一些实施例中,中继服务器10-2可以向用户提供多个画布的多个ID,在所述多个画布中协作编辑正在进行并且用户装置可以从中选择要加入的画布。在其它实施例中当用户装置正开始新绘图区域时,可以将唯一绘图区域ID指派给新开始的绘图区域。
(524_2b)用户本地画布偏移、旋转、缩放参数定义公共绘图区域的全球坐标系统与用来在公共绘图区域中加入编辑会话的用户装置的本地坐标系统之间的关系。例如,这允许两个不同的用户分别从两个不同的角度编辑墨水数据绘图的上部和下部。
(524_2d)笔工具集合ID参数是指派给一起定义笔笔画如何出现在绘图区域上的笔参数(笔尖形状、颜色、笔画宽度、墨水透明度/不透明度等)的合集的ID。可以为多个合集预定义多个ID,用户可以在公共绘图区域上加入协作编辑会话时从多个合集中选择一个合集。
图30C示出与支配用户访问公共绘图区域的策略有关的一组用户策略参数524_3,包括笔画数据优先级、滤波和服务质量(QoS),并且可以包括下列的:
(524_3a)用户账户优先级参数设定墨水数据传输服务中的笔画数据的优先级。例如,在所图示的示例中,该参数被设定为“高”,这意味着中继服务器10-2的资源仲裁(或QoS)控件544将优于其优先级被设定为“低”的其它笔画对象而优先地处理并发送“高”优先级笔画数据。
(524_3b)阻止用户列表包括一个用户希望阻挡(即,用户不希望从其接收墨水数据200)的其它用户。列表还可以包括用户不希望将墨水数据200发送到的那些用户。代替列举要拒绝接收或传输的那些用户,也能够列举要接受接收或传输的那些用户。
墨水数据中继部540参考连接列表541将从传输装置10-1接收的数据消息中继到一个或多个其它接收装置,所述连接列表541列举当前连接到数据消息被添加(绘制)到其中的绘图区域的所有装置。连接列表541还列举什么通信、绘图和用户策略协议应该被用来与连接列表541中所列举的装置中的每一个进行通信。在各种实施例中,墨水数据中继部540不以分组为单位或以消息为单位而是作为“一条流”处理(转发或者丢弃)笔画对象消息。
墨水数据中继部540包括新笔画流检测部542、资源仲裁(或QoS)控件544、反馈传输部546(DATA_ToSelf)以及全播传输部548(DATA_ToOthers)。
新笔画流检测部542检查接收的消息的报头(类型字段,图34中的F101)以确定消息是否包括新笔画(“DATA_INK_BGNOS”),或者消息包括中继处理已经开始的同一(当前)笔画对象210的分段数据。
资源仲裁(或QoS)控件544参考每个笔画对象210的起始端并且必要时还参考笔画对象210的结束端来控制传输资源。当对新笔画的起始端(BGNOS)进行处理时,资源仲裁(或QoS)控件544基于各种准则来确定是否将新笔画接受到绘图区域(画布)中。例如,如果从传输装置10-1新接收的笔画对象210的笔画ID与已经用在绘图区域中的笔画ID中的一个相同,则资源仲裁(或QoS)控件544可以拒绝具有相同笔画ID的重新接收的笔画对象210。作为另一示例,如果发现网络资源不足以在特定时间转发或者处理新笔画对象210,则它拒绝新接收的笔画对象的输入直到网络资源条件改进为止。这将防止用户开始输入新笔画对象210,不料由于缺少足够的联网或计算资源而不得不在完成笔画对象210之前中止输入过程的情形。作为另一个示例,如果特定装置(用户)被临时拒绝更新权限,则资源仲裁(或QoS)控件544拒绝由特定装置生成的任何笔画对象。例如,可以抢占性地分配资源来优于从具有“低”优先级的用户发送的笔画数据而对从具有“高”优先级(图30C中的524_3a)的用户发送的笔画对象进行处理。资源仲裁(或QoS)控件544在确定要拒绝任何装置接收的新笔画时,从反馈传输部546发送“拒绝”。资源仲裁(或QoS)控件544在确定要接受从装置接收的新笔画时,经由全播传输部548将该新笔画发送(转发)到所有的其它装置(除本身已发送了新笔画的装置之外)。
根据本发明的各种实施例,因为每个笔画对象210被顺序地分段成分段数据并且发送和中继,所以远程定位的装置能够随着笔画对象210在没有可感知的时间延迟的情况下被实时地输入而共享它。同时,资源仲裁(或QoS)控件544执行业务控制功能以解决多个用户之中的任何冲突并且以确保为被授予输入新笔画对象210的权限的每个用户提供足够的资源(例如,临时防止其它用户在第一用户正在进行输入时进行任何输入)。
反馈传输部546(DATA_ToSelf)仅向已向中继服务器10-2发送了消息的传输装置10-1发回响应。例如,当资源仲裁(或QoS)控件544判定不允许由传输装置10-1输入新笔画对象210时,反馈传输部546仅向传输装置10-1发送拒绝消息(参见图37)。
全播传输部548(DATA_ToOthers)向除已向中继服务器10-2发送了消息的传输装置10-1之外的当前连接到绘图区域(如包括在连接列表541中)的所有装置发送消息。在所图示的示例中,当消息是从传输装置10-1接收的并且被确定为能中继的时,全播传输部548将该消息发送到所有的接收装置10-3、10-4...10-n。
中继服务器10-2因此在总体上最佳地控制网络资源的高效使用的同时从一个传输装置接收墨水数据200并且选择性地将它中继到一个或多个接收装置。
图31是图26的墨水数据通信系统的墨水数据接收装置10-3的框图。接收装置10-3包括网络通信部310(Rx、Tx)、墨水数据处理部10R、应用部300-2、图形处理部300以及操作系统400-2。
在操作系统400-2上运行的应用部300-2包括利用根据本发明的各种实施例的墨水数据接收方法的应用。应用或操作系统的类型可以与传输装置10-1的应用部300-1的应用(或操作系统的类型)相同,或者可以是不同的,只要两个应用允许彼此通过公共绘图区域输入、发送和接收墨水数据200即可。这是因为能够在不同的应用和操作系统之中独立于特定平台发送和接收通常定义(标准化)的墨水数据200。在当接收装置10-3加入公共绘图区域的编辑会话时的通信的发起定时,应用部300-2下载其中其它用户已可能将它们相应的墨水数据200叠加为不同层的绘图区域(画布)的最新状态。
应用部300-2可以将它已生成的墨水数据200上传到在中继服务器10-2处的绘图区域。由接收装置10-3在本地生成的墨水数据200可能在协作编辑会话之前可以具有记录格式,而在协作编辑会话期间实时地生成的墨水数据200可以具有传输格式。可以将记录格式或传输格式的墨水数据200上传到中继服务器10-2。在这方面,应用部300-2指导图形处理部300输出要叠加在绘图区域中的由墨水数据生成部120R生成的墨水数据200。
网络通信部310(Tx、Rx)对应于传输装置10-1的网络通信部112T(Tx、Rx)。网络通信部310经由网络接口接收通信分组(Pckt)并且从分组的净荷部分中提取消息。由接收装置10-2使用的接收协议可以与由传输装置10-1使用的通信协议不同。例如,传输装置10-1可以采用包括重传机制的协议,诸如TCP以及基于TCP的HTTP、基于SSL的HTTPS,来向中继服务器10-2发送消息,而中继服务器10-2可以采用不那么可靠的但是适合于诸如UDP以及基于UDP的RTP的流协议的协议来向接收装置10-2发送消息。可以在通信装置之中开始通信时通过协商确定要使用哪一种通信协议。
墨水数据处理部100R包括墨水数据格式化部140R和墨水数据生成部120R,并且从以传输格式或者以记录格式格式化的墨水数据中提取墨水数据200。墨水数据处理部100R对应于传输装置10-1的墨水数据处理部100T。
墨水数据格式化部140R包括墨水数据通信部144R和记录格式处理部142R。墨水数据通信部144R处理如以传输格式更新的墨水数据200。具体地,墨水数据通信部144R提取每个数据消息中的信息(例如,笔画ID)并且输出作为按由传输侧所定义的单位T划分的笔画对象210的分段的分段数据。墨水数据通信部144R还提取包括在笔画对象210的消息中的第一消息,即“DATA_INK_BGNOS”消息中的绘图风格对象230。绘图风格对象230包含呈现(绘制)它关联的笔画对象所必需的信息。
记录格式处理部142R接收并处理如存储(存档)在中继服务器10-2的储存库中的记录格式的绘图区域信息,以重建最新绘图区域。
应用300-2控制墨水数据生成部120R根据墨水数据输出/输入的格式从墨水数据通信部144R或者从记录格式处理部142R选择性地接收墨水数据200。
例如,当应用首先在公共绘图区域处加入协作编辑会话时,“CTRL_JOIN_REQ”请求被发出以在记录格式(SFF)的文件中检索最新绘图区域信息。所检索到的最新绘图区域的墨水数据200具有记录格式,并且同样地,可以在记录格式处理部142R处被处理。随后检索的墨水数据200可以具有传输格式(SMF),如形式为如图34中所示出的“DATA_INK_BGNOS”和其它消息(DATA INK*)一样,并且因此,可以在墨水数据通信部144R处被处理,一次一个消息(或表示一个笔画的消息)。
为了实现墨水数据200的实时处理,墨水数据通信部144R随着笔画对象210的分段数据被接收而将它们输出给图形处理部300,而不是等待接收形成笔画对象210的所有点对象(或分段数据)。
接收装置10-3的墨水数据生成部120R执行与传输装置10-1的墨水数据生成部120T的传输处理对应的接收处理。
由各自由多个点对象构成的笔画对象以及与笔画对象相关联的绘图风格对象230、元数据对象250和操纵对象构成的墨水数据200全部已经在传输侧生成。因此,不必在接收侧重新生成它们。相反,在接收侧,墨水数据生成部120R以可由其应用#2使用的形式存储并更新墨水数据200。例如,墨水数据生成部120R将所接收到的第一数据类型(例如,整数类型)的墨水数据200变换成可由应用#2使用的第二数据类型(例如,float类型、double类型)的墨水数据200,并且将经变换的数据提供给应用部300-2或者给由应用部300-2使用的图形处理部300。
接收装置10-3的图形处理部300与传输部10-1的图形处理部300类似。图形处理部300执行用于基于接收的墨水数据200来生成像素数据的处理,以将笔画对象显示在接收装置10-3的显示屏幕113上。
图32是图示根据本发明的实施例的传输装置10-1、中继服务器10-2与接收装置10-3之间的墨水数据通信的序列图。
在图32中,传输装置10-1、中继服务器10-2和接收装置10-3的功能/部利用如以上图27、图29和图31中所使用的相同的附图标记来标识。该序列图示传输装置10-1加入已经起始的实时协作会话的情况,其中由多个用户输入的墨水数据200可以彼此叠加。
<启动应用部300-1>
在步骤S601中,传输装置10-1激活利用根据本发明的实施例的墨水数据通信方法的应用部300-1。应用部300-1的激活触发墨水数据处理部100中的墨水数据生成部120T和墨水数据格式化部140T的激活。
首先,传输部10-1的应用部300-1发出将保持在中继服务器10-2的绘图区域管理部520中的多个绘图区域中的一个指定为目标绘图区域(524_2a)的控制消息(CTRL_JOIN_REQ,具有或没有参数524_1、524_2、524_3)。中继服务器10-2的绘图区域管理部520以可以被高度压缩的记录格式(SFF)将所指定的绘图区域的最新状态返回给传输装置10-1(CTRL_JOIN_REP)。然后,应用部300-1调用记录格式处理部142T以基于记录格式的墨水数据200来重建绘图区域的最新状态。传输装置10-1从而在本地重建(或者最初构建)绘图区域的最新状态(或墨水数据当前状态),其中诸如接收装置10-3和10-4的其它装置可能已经开始绘制(输入)彼此叠加的墨水数据200。这时,传输装置10-1进入输入等待状态。
<墨水数据传输处理>
传输装置10-1通过将“笔事件数据输入开始”的检测用作触发器来执行墨水数据传输处理。在步骤S605中,传输装置10-1的输入处理部111检测笔画起始点的输入。在图32中,在阴影持续时间“d”期间,笔事件数据从步骤S605到步骤S609被连续地输入到墨水数据处理部100T,在此期间绘制了在笔画起始点处起始并且在笔画结束点处结束的一个笔画(在下文中被称为“笔画单位”)。在此时间(持续时间d)期间输入处理部111每单位T(每S608),例如每5msec,向墨水数据生成部120T连续地输出笔事件数据。
墨水数据处理部100T将笔事件数据输入的开始用作触发器来开始用于基于从应用部300-1接收的上下文信息(输入2)来生成绘图风格对象230的处理。具体地,基于有关从应用部300-1接收的笔事件数据的上下文信息(输入2),墨水数据处理部100生成包括用来在公共绘图区域(画布)上绘制(呈现)笔画对象210的信息的绘图风格对象230。墨水数据处理部100通过选择性地提取用于接收侧呈现绘图所需的上下文数据的一部分来生成绘图风格对象230。绘图风格对象230包括诸如笔画(迹线)的颜色(红色、绿色、蓝色)、笔尖类型(画笔、蜡笔、铅笔)、透明度或不透明度值(aplha)、是否允许透明度或不透明度在笔画对象210内变化、笔画(迹线)宽度(例如,0.2-6.0个点)、是否允许笔画(迹线)宽度在笔画对象210内变化、栅格化方法、笔画纹理的类型等的信息。
绘图风格对象230的生成是通过基于笔事件数据的输入检测笔画对象210的起始点的输入,即在图32中的S605处触发的。因此,例如,即便当用户在起始绘图操作之前反复地改变笔的颜色时,旧(过时的)颜色信息将不被包括在绘图风格对象230中并因此将不被发送到中继服务器10-2以弄乱传输资源。
墨水数据处理部100T的墨水数据格式化部140T(更具体地墨水数据通信部144T)将所生成的绘图风格对象230添加到正在生成的笔画对象210的第一数据消息(DATA_INK_BGNOS 1001)中。(参见图34)。
DATA_INK_BGNOS 1001消息包括指示该消息是笔画对象210的第一消息的信息(例如,消息类型BGNOS,F101)、绘图区域ID(F102)、被用来唯一地标识绘图区域内的笔画对象210的笔画ID(F103)、绘图风格对象230(F104),并且可选地(在空间允许的情况下)包括形成笔画对象210的一部分的分段数据中的任一个(F105),后面是CRC错误校正值。
在生成绘图风格对象230并且将其包括到第一数据消息(DATA_INK_BGNOS 1001)中之后,不是等待从中继服务器10-2接收“ACCEPT”消息,而是传输装置10-1按小于笔画单位的定义单位T连续地生成分段数据,其中多条分段数据一起形成一个笔画对象210(S608)。具体地,墨水数据生成部120T按定义单位T处理形成一个笔画(或迹线)的笔事件数据以产生墨水数据200,并且墨水数据格式化部140T在与定义单位T对应的通信消息(图34中的“DATA_INK_MVDOS 1,2…n”)中对分段数据进行格式化并且将笔画ID指派给每个消息中的分段数据中的每一个,直到检测到笔事件数据输入操作的结束为止。
如本文中所使用的定义单位T可以是与例如5msec的笔事件数据输入的采样时间单位相同或者更大的时间单位。因此,单位T可以是5msec、50msec、200msec等。替换地或附加地,定义单位T可以是数据大小的单位,诸如256个字节和512个字节的固定长度。如图34中所示,基于数据(字节)大小的单位T可以根据给定通信协议被设定为小于消息传送单元(MTU)的数据(字节)大小。进一步替换地,例如,可以动态地改变并且在时间单位T与数据大小单位T之间切换单位T。
单位T可以由应用部300-1取决于每个应用或定时要求而自适应地或者选择性地设定。例如,出于允许笔画对象210如同它正被实时地“绘制”一样连续地并增长地出现在接收装置10-3上的目的,应用部300-1可以将单位T设定成对应于允许在生成的点对象之间发生必要的插值处理的最小单位。作为另一示例,出于减少与不得不发送相同的消息报头信息(例如,与一个笔画对象210的每个消息相关联的笔画ID)相关联的通信开销(业务的量)的目的,应用部300-1可以将单位T设定为尽可能大,直到笔画对象它本身的单位(笔画单位)。作为另一示例,出于在笔事件数据输入速率与显示速率之间存在大差异(例如,笔事件输入在3-4msec之间来,而显示器每15msec刷新)的情况下减少总体消息的目的,那么应用部300-1可以将单位T设定成和显示速率匹配。在这种情况下,每个笔画分段消息将包含超过一个点对象的数据。
图33是图示可以在传输装置10-1和/或中继服务器10-2中实现的确定单位T的方法的流程图。在步骤S701中,确定了参数T是在传输装置与接收装置之间还是在传输/接收装置与中继服务器10-2之间显式地协商的。如果“是”,则经显式地协商的值被设定为单位T(步骤S703)。例如,可以根据将笔画数据设定成被分段(S524_1c“TRUE”)并且将最大接收延迟设定为100msec(524_1d“100”msec)的参数来协商并定义单位T。另一方面,如果S701的判定结果是“否”,则应用300-1和应用300-2的其它时间相关要求被用来设定单位T。例如,在步骤S705中,确定了墨水数据200和其它数据(音频、视频等)是否将被同步地再现。如果“是”,则在步骤S709中,确定了是否“聚合被请求”,将在下面参考图43和图44充分地对此进行描述。如果“否”,则在步骤S711中,小于与一个笔画对应的单位的单位T被设定为单位T。并且,出于与其它类型的数据的同步再现的目的每定义单位T的每个(分段)数据被加时间戳。例如,如果另一方面,S705的判定结果是“否”,则假定了不存在特定定时约束,并且单位T被设定为其缺省值,诸如总体上笔画的单位。
返回参考图32,当传输装置10-1的输入处理部111检测到笔事件数据输入的结束时(S609),即,当它检测到一个笔对象210的输入操作的结束时,墨水数据处理部100T在步骤S611中生成元数据对象250。元数据对象250包括除用来将笔画对象210显示(呈现)在显示器上的信息(其被包括在绘图风格对象230中)以外的有关所生成的笔画对象210的信息。例如,元数据对象250包括作者信息、笔ID等。
<墨水数据中继处理>
中继服务器10-2在没有修改的情况下向接收装置10-3传送如在数据消息中从传输装置10-1接收的一个笔画对象210的分段数据。
中继服务器10-2首先从传输装置10-1接收笔画对象210的第一消息(DATA_INK_BGNOS)。然后,在图32的步骤S613(接受)中,资源仲裁(或QoS)控件544确定是否允许从如接收的其第一消息DATA_INK_BGNOS起始的笔画对象210的新输入(更新)。图32的序列图示资源仲裁(或QoS)控件544确定允许输入由传输装置10-1生成的笔画对象210的情况。然后,中继服务器10-2存储笔画ID,使得它能够通过仅检查消息报头来标识并转发与同一笔画ID相关联的所有后续数据消息,并且将第一消息DATA_INK_BGNOS转发到接收装置10-3。
中继服务器10-2继续转发同一笔画对象210的后续数据消息(DATA_INK_MVDOS),同时检查包括在它们的报头中的笔画ID,而无需使资源仲裁(或QoS)控件544做出关于后续数据消息中的每一个的独立确定。因此,需要按每个笔画执行资源仲裁判定仅一次。
在步骤S615中,当接收到笔画对象210的数据消息中的最后一个数据消息(DATA_INK_ENDOS)时,中继服务器10-2将最后消息转发到接收装置10-3并且资源仲裁(或QoS)控件544释放中继服务器10-2的处理资源以转发这时完全完成的笔画对象210。
作为紧跟一个笔画对象210的传送的完成之后的后处理操作,笔画对象210被添加到如存储在中继服务器10-2的绘图区域储存库中的绘图区域。
因为中继(转发)过程是按每个笔画对象210执行的,所以能够在完成中继过程时将实时地以传输格式转发的墨水数据200容易地转换成记录格式,以按压缩记录格式存储在储存库中。这允许中继服务器10-2每当它完成将由多个装置中的一个生成的笔画对象210中继到其它装置时高效地更新由多个装置共享的公共绘图区域(或画布)的状态。
<墨水数据接收处理>
接收装置10-3首先从中继服务器10-2接收包括绘图风格对象230的重新生成的笔画对象210的第一数据消息(DATA_INK_BGNOS)。使用包括在绘图风格对象230中的信息,诸如颜色、笔尖类型、透明度/不透明度、呈现方法等,接收装置10-3开始绘图(呈现)操作以将所接收到的笔画对象210的分段数据绘制在其显示器上。
墨水数据处理部100R继续使用包括在绘图风格对象230中的相同信息来处理包括在随后接收的数据消息中的同一笔画对象210的分段数据,以生成墨水数据200并将该墨水数据200输出给图形处理部300。
图形处理部300随着分段墨水数据200被接收而开始并继续它们的绘图(呈现)过程。图32中的步骤S617-1至S617-n分别表示笔画对象210在不同时间在显示器上的呈现形式。图32示出笔画对象210随着其分段数据被增加地接收和处理,从笔画对象210被仅部分地但是增长地绘制的状态G1、G2、G3起,直到笔画对象210被完全绘制的状态G4为止被连续地绘制,类似于用户如何可以看到正由另一用户在纸上绘制的实际的笔笔画。
图34图示根据本发明的一个实施例的布置在适合于多个装置之中的实时通信的通信分组中的数据消息的示例传输格式。所图示的示例使用小于由传输装置10-1连接到的媒体接口(例如,以太网)所定义的通信协议的消息传送单元(MTU)的定义单位T。
在图34顶上的通信分组示出从传输装置10-1的网络通信部112输出的通信分组。
图34中的“DATA_INK_BGNOS”示出新笔画对象210的多个数据消息中的第一数据消息。
F101字段指定数据消息的类型。第一数据消息“DATA_INK_BGNOS”的F101字段指示“BGNOS”,意味着它是新笔画对象210的数据消息中的第一数据消息。
F102字段包括其中将被添加或者叠加新笔画对象210的绘图区域的绘图区域ID。
F103字段包括笔画对象210的笔画ID。笔画ID被唯一地指派给如公共绘图区域中所使用的每个笔画对象210。各种方法能够按绘图区域将唯一笔画ID指派给每个笔画对象210。例如,可以递增绘图区域中当前使用的(最高)笔画ID值以获得要指派给新笔画对象210的新唯一ID,或者可以递增用来输入新笔画对象210的笔的笔ID值以为笔画对象210获得唯一笔画ID。因此,传输装置10-1可以独立地将唯一笔画ID指派给它生成的新笔画对象210。并且,如上面所讨论的,如果传输装置10-1未能指派唯一笔画ID则中继服务器10-2的资源仲裁(或QoS)控件544防止重叠笔画ID的使用。因为传输装置10-1可以独立地将唯一笔画ID指派给新笔画对象210,所以不存在对于集中地将唯一笔画ID指派给由不同装置所生成的笔画对象另外所需要的通信定序的需要。因此,传输装置10-1变得有可能在下笔时间,即紧接在用户开始绘制笔画之后,开始发送墨水数据200。
F104字段包括绘图风格对象230或者全部与如何绘制(或者呈现)笔画对象210有关的包括在该绘图风格对象230中的一组绘图参数。这些参数可以包括例如形状参数(图3B中的圆或图3C中的雪花/粒子)、形状半径或大小、形状半径或大小的最小值和最大值、笔压力或笔倾斜信息(其影响用该笔压力或笔倾斜绘制的笔画如何将出现在显示器上)等。
在一些实施例中,绘图参数的整个集合被包括在F104字段中。在其它实施例中,可以提前在传输装置10-1与中继服务器10-2(及接收装置10-3)之间共享绘图参数(或一个或多个“绘图风格对象”)的一个或多个集合,并且可以将仅参数集合ID(或绘图风格对象ID)包括在F104字段中以指定绘图参数的哪一个集合将被用来呈现笔画对象210。例如,可以预先定义频繁使用的参数设定,诸如通常使用的笔尖类型(铅笔、画笔、笔)和通常使用的颜色的有限数目的组合,其中每个设定给予唯一ID,并且可以将这些设定ID包括在F104字段中以传递笔画对象210如何将被呈现(绘制)在显示器上。参数设定可以在初始协商时在装置之间显式地协商,或者可以被隐式地定义为系统协议的一部分。
F105字段包括来自一起形成一个笔画对象210的多个分段数据的第一分段数据。例如,第一数据消息的F105字段包括笔画对象210的起始坐标位置。虽然图34将第一分段数据(在F105中)示出为包括在第一数据消息(DATA_INK_BGNOS)中,但是如果在第一数据消息(其必须包括绘图风格对象)中不存在足够的空间,则可以将第一分段数据(F105)包括在第二数据消息中。
图34的“DATA_INK_MVDOS”1、2…数据消息全部与同一笔画对象210有关并且分别包括第二分段数据(F106)、第三分段数据(F107)等。与第一数据消息不同,这些后续数据消息不包括绘图风格对象(F104)并在F101中被标识为“后续”(非第一)类型的数据消息(MVDOS)。后续数据消息全部包括与第一数据消息相同的绘图区域ID(F102)以及与第一数据消息相同的笔画ID(F103)。
“DATA_INK_ENDOS”数据消息是笔画对象210的最后数据消息并且可以包括笔画对象210的最后分段数据(F108)。并且,最后数据消息包括F109中的元数据对象250,其可以包括诸如作者信息的非绘图相关信息。
图35A图示可以在诸如TCP的包括内置数据重传机制的通信协议中使用的传输格式,具体地,包括数据消息“DATA_INK_MVDOS”的通信分组。另一方面,图35B图示可以在诸如UDP的不包括内置数据重传机制的通信协议中使用的通信分组。与图35A的数据消息格式不同,用于在没有重传机制的协议中使用的图35B的数据消息格式可以包括附加字段F110,附加字段F110包括唯一地指派给每个数据消息的序列ID。可以使用序列ID来检测触发/请求重传的消息损失。
具体地,图36A是使用序列ID并适合于在诸如UDP的不包括数据重传机制的通信协议中实现的示例数据重传过程的序列图。例如,图36A在传输侧的分组重传参数(524_1a)被设定为“FALSE”并且消息重传参数(524_1f)被设定为“启用”时适用。阴影持续时间“d”对应于图32中的持续时间d。
图36A示出在中继服务器10-2处成功地接收到从传输装置10-1发送的与序列ID#456、#457和#459分别相关联的第一数据消息、第二数据消息和第四数据消息。图36A还示出与序列ID#458相关联的第三数据消息已经在传输装置10-1与中继服务器10-2之间的网络中某处丢失了而未被中继服务器10-2接收到。
中继服务器10-2在当与序列ID#458相关联的第三数据消息被预期但是未接收到并且替代地接收到与序列ID#459相关联的第四数据消息时的时间T1处检测到与序列ID#458相关联的第三数据消息丢失了。中继服务器102然后发出包括序列ID#458的否定应答(NACK;DATA_INK_NACK)消息,以指示与序列ID#458相关联的第三消息未被接收到。
传输装置10-1在当接收到NACK消息时的时间T2处检测到与序列ID#458相关联的第三数据消息丢失了并且开始重传处理以重传与序列ID#458相关联的第三数据消息以及紧跟序列ID#458之后的后续数据消息(即,#459、#460…)。用于重传所有后续数据消息而不只是已丢失的数据消息的一个原因在于以时间顺序方式继续笔画对象210的分段数据的传输以避免任何可感知的时间延迟。另一原因是当数据消息丢失了时,很可能的是继该丢失的数据消息之后的数据消息也丢失。
根据上面所描述的重传处理方法,即便当使用了不包括重传机制的协议时,也变得能够确保形成一个笔画对象210所必需的所有数据消息(或数据分组)被成功地接收。虽然重传处理方法上面被描述为发生在传输装置10-1与中继服务器10-2之间,但是可以在中继服务器10-2与接收装置10-3之间类似地实现该方法。
图36B示出消息重传的另一示例。与图36A类似,阴影持续时间“d”对应于图32中的持续时间d。图36B在传输侧的分组重传参数(524_1a)被设定为“FALSE”并且消息重传参数(524_1f)被设定为“禁用”时适用。当对于消息传输延迟来说不存在小容限时(即,当存在不具有任何可感知的传输延迟的严格要求时)可以将消息重传参数设定为“禁用”,而不管消息重传是否是可能的如何。
如在图36A中一样,同样在图36B中,在中继服务器10-2(或接收装置10-3)处成功地接收到从传输装置10-1(或在传输侧的中继装置10-2)发送的与序列ID#456、#457和#459分别相关联的第一数据消息、第二数据消息和第四数据消息。在接收侧的中继服务器10-2在当与序列ID#458相关联的第三数据消息被预期但是未接收到并且替代地接收到与序列ID#459相关联的第四数据消息时的时间T1处检测到与序列ID#458相关联的第三数据消息丢失了。其后,在时间T2B处,在无需发出重传请求的情况下,接收侧执行插值处理(或错误隐藏处理)(S1205)以基于成功地接收的与序列ID#456、#457和#459相关联的消息来对与和序列ID#458相关联的已丢失的数据消息对应的数据的遗漏部分进行补充或者插值,以从而实现连续不间断的显示处理。在时间T3B处,完成与序列ID#461相关联的最后数据消息的处理。其后,在时间T4B处,接收侧使用所接收到的笔画ID来发出DATA_INK_ALLOS_REQ消息1503(参见图39B)。传输侧10-1(或10-2)然后发送作为整体包括所标识的笔画的消息的DATA_INK_ALLOS消息1501(参见图39A)。必要时,接收侧10-2(或10-3)在时间T5B处使用所接收到的DATA_INK_ALLOS消息1501来执行数据的经补充或插值的遗漏部分的数据校正。
图36C图示要在图36B的步骤S1205处的插值处理(错误隐藏处理)中解决的问题。假定消息#457、#458和#459形成一个完整的笔画数据。在图36C中,消息#456包括控制位置P4571、P4562和P4563。黑色方形位置P4561是笔画起始位置并且包括位置的绝对坐标,其在所图示的示例中是(100,0)。在图中,黑色方形位置与(要参考的)绝对坐标相关联。另一方面,黑色圆形位置P4562与相对于绝对坐标或要参考的紧接在前的位置的坐标的差(偏移)相关联。在所图示的示例中,位置P4562是在Rel(+20,0)处,意味着它相对于P4561的绝对坐标(100,0)水平地位于+20并且垂直地位于+0。黑色圆形位置P4563相对于紧接在前的黑色圆形位置P4562在Rel(+20,0)处。消息#457包括各自相对于它紧接在前的位置在Rel(+20,0)处的三个位置P4571、P4572和P4573。如在图36B中一样,假定未在接收侧接收到消息#458。然后,不能够确定最后消息#459的交叉阴影起始位置P4591,因为位置P4591仅包括除非存在参考位置否则无用的相对偏移信息。
交叉阴影起始位置P4591可以通过根据本发明的实施例的各种方法来确定。根据本发明的实施例的第一方法涉及要仍然参考图36C所描述的在接收侧执行的线性预测。例如,当每50msec发送消息时,能够基于已经获得的位置坐标的速度和加速度来预测遗漏消息中的各部分的假定轨迹。在图36C中,笔画将从P4563(消息#456的最后控制位置)提前总共Rel(+60,0)到P4573(消息#457的最后控制位置),并且因此,能够预测到遗漏(丢失)消息#458的最后控制位置也已经相对于P4573提前了Rel(+60,0)。
图36D图示根据本发明的实施例的用于获得交叉阴影起始位置P4591的第二方法。在这个方法中,传输侧可以切换以在如由黑色方形位置P4561、P4571和P4591所指示的分段消息中的每个消息的开始控制位置中包括绝对坐标。在一个实施例中,在a)请求了与记录格式不同的格式的输出并且b)满足以下条件中的一个或多个:(i)使用了笔画分段(在524_1中“笔画数据分段启用”是“TRUE”);(ii)未在消息层中实现消息重传(在524_1a中“分组重传”是“TRUE”并且在524_1f中“消息重传”是“禁用”);以及(iii)存在用于在每个分段消息中包括绝对坐标的显式指示的情况下,传输装置10-1可以选择来实现这个方法。尽管图36D示出绝对坐标被包括在每个分段消息中,但是可以变化用来包括绝对坐标的频率。例如,诸如IETF RFC3550和RTP报告的通信协议报告可以被用来基于在接收侧检测到的接收质量在传输侧变化绝对坐标的包括频率。
用于获得交叉阴影位置P4591的第三方法是可以与图36C的线性(正向)预测一起使用的后向确认。在图36E中,与图36C的情况不同,最后消息#459的最后控制位置P4593是方形的并且包含其绝对坐标,在所图示的示例中为(333,0)。当检测到消息(#458)的丢失时,接收侧基于包括绝对坐标的最后消息#459的最后控制位置P4591来执行交叉阴影圆形位置P4591的后向确认。在所图示的示例中,交叉阴影位置P4591是从最后控制位置P4593(333,0)起向后Rel(-20,0)经由P4592,并向后另一Rel(-20,0)到P4591而计算为(293,0)。
图36F图示使用根据上面所描述的方法中的任一个获得的交叉阴影控制位置P4591的在图36B的步骤S1205处执行的补充或插值处理(错误隐藏处理)。实线1201指示基于消息#457生成的部分笔画数据,并且白色圆P4573指示包括在消息#457中的分段笔画对象的最后(结束)控制位置。实线1203指示基于消息#459生成的另一部分笔画数据,并且交叉阴影P4591指示包括在消息#459中的分段笔画对象210的第一(起始)控制位置。可以既在如用虚线箭头1207所示出的从部分笔画1201起的正向方向上且在如用另一虚线箭头1209所示出的从部分笔画1203起的后向方向上使用插值(或错误隐藏)基于双向预测来得到部分笔画1201与部分笔画1203之间的遗漏数据(与已丢失的消息#458对应)。
图36G图示双向预测处理的一个示例。在此示例中,形成了连接P4573和P4591的线(或拟合曲线)1221,并且找到将线1221划分成可以被分别表达为近似曲线函数的两个相等的线(或曲线)段1223和1225的中点P_pred_midst。
如上所述,当通信协议在通信层中不包括重传机制(例如,UDP)时,系统可以在像在图36A中一样在消息层中实现消息传输或者像在图36B中一样不在消息层中实现消息重传之间自适应地选择。因此,当应用具有严格的定时要求时,例如当墨水数据200将随着音频数据被同步地再现时,例如,在通信层和消息层两者中禁用重传,以便避免任何可感知的传输时间延迟并且以便实现墨水数据200的连续的实时接收和显示。
图37是图示其中由传输装置发出的用于更新公共绘图区域的请求被中继服务器拒绝的墨水数据通信的序列图。例如,传输装置10-1请求将新笔画对象210添加到公共绘图区域,并且该请求被中继服务器10-2拒绝。直到当传输装置10-1发送包括绘图风格对象230的第一数据消息(DATA_INK_BGNOS)时的点的部分与包括在图32的序列图中的部分相同。
当中继服务器10-2接收到第一数据消息时,墨水数据中继部540在步骤613(拒绝)中基于定义准则,诸如对处理资源的任何限制、对网络资源的任何限制、用户访问策略等,确定拒绝第一数据消息的接受。
中继服务器10-2然后从反馈传输部546向传输装置10-1发送拒绝消息(DATA_INK_REJOS)。
当传输装置10-1接收到响应于笔画对象210的第一数据消息的拒绝消息时,在步骤S610中,传输装置10-1中止传输处理并且停止笔画对象210的后续数据消息的传输。换句话说,除非返回了拒绝消息,否则传输装置10-1继续传输处理以在相继的数据消息中发送一个笔画对象210的所有分段数据,而无需等待显式接受消息的返回。
根据本发明的各种实施例的墨水数据传输方法,即便当长笔画(迹线)(例如,其可能花费几秒钟完成)由一个装置绘制时,不同装置也能够起始像它正被绘制在公共绘图区域中那样显示笔画,而不必等待笔画的完成。可以被内置在给定协议系统中或者可以被附加地用在没有重传机制的协议系统中的各种重传方法可以被用来确保即便在笔画对象210被划分并在多条分段数据中发送时也在接收侧成功地接收到完整的笔画对象210。并且,当由传输装置10-1发送的笔画对象210的数据消息中的任一个被中继服务器10-2抵制/拒绝时,传输装置10-1中止传输过程以从而避免浪费先前的处理资源和网络(传输)资源。
图38是图32的序列图的第一修改示例,其中中继服务器10-2从传输装置10-1接收笔画对象210的分段数据并且组合笔画对象210的所有的分段数据以被中继到接收装置10-3。分段数据每定义单位T从传输装置10-1到中继服务器10-2的传输与如图32中所示出的相同。
在这个实施例中,接收装置10-3可以提前与中继服务器10-2协商以设定定义接收装置10-3如何接收从中继服务器10-2中继的墨水数据200的接收参数。例如,接收装置10-3向中继服务器10-2发送控制消息(CTRL_JOIN_REQ 524_1),其包括诸如指示接收装置10-3将与按定义单位T(524_1c“笔画数据分段启用”值“FALSE”)不同地按笔画单位接收墨水数据200的信息的通信设定信息。中继服务器10-2将从接收装置10-3接收的通信设定信息存储在绘图区域信息管理部524中,使得中继服务器10-2将按笔画单位将墨水数据200中继到接收装置10-3(同时它可以按定义单位T将墨水数据200中继到其它接收装置)。
然后,如在图32中一样,传输装置10-1开始发送笔画对象210的分段数据。中继服务器10-2在步骤S614(缓冲)中继续存储笔画对象210的分段数据直到接收到最后数据消息(DATA_INK_ENDOS)为止。当接收到最后数据消息时,中继服务器10-2准备并发送包含整个笔画对象210以及其关联的绘图风格对象230、元数据对象250等的数据消息,并且在S617处将它作为“DATA_INK_ALLOS”发送到接收装置10-3以用于呈现。
在此示例中,因为中继服务器10-2立刻发送关于整个笔画对象210的墨水数据200,所以包括在笔画对象210中的点对象的数目是已知的。因此,可以以记录格式代替以传输格式发送墨水数据200,其中记录格式具有较少冗余并因此可能比传输格式被更多压缩。
图39A是记录格式的、包括一个笔画对象210的墨水数据200中的全部以及关联的绘图风格对象230、元数据对象250、包括在笔画对象210中的点对象的数目等的“DATA_INK_ALLOS”的示例数据消息格式。如所示,该消息包括消息CRC,并且如果消息大小超过给定通信分组MTU,则该消息在通信层中被划分成两个或更多个通信分组(Pckt_1、Pckt_2、Pckt_3等),所述通信层在墨水数据消息层下面。
当按笔画单位发送墨水数据200时,也许能够按定义单位T实时地使用与用于流式传输分段数据的通信协议不同的通信协议。例如,包括重传机制的TCP或HTTP(其基本上依赖于TCP)可以被用来按笔画单位发送墨水数据200,而诸如UDP的没有重传机制的协议可以被用来按定义单位T流式传输分段数据。
接收装置10-3按笔画单位接收墨水数据200,并且在步骤S617中,应用图形处理以在一个演绎中绘制(呈现)笔画对象210。
图38的经修改的序列示例可能适合于由可能在业务速度低并且因此其中能够连续地接收每个笔画的实时流可能难以实现的网络环境中的接收装置10-3使用。在这样的情况下,接收装置10-3可以选择采用更鲁棒的接收方法来接收笔画对象,一次一个笔画对象,而没有数据丢失。
图39B图示作为在笔画ID是已知的时请求整个笔画的笔画对象210数据的消息的“DATA_INK_ALLOS_REQ”1503的示例数据消息格式。该消息可以被用来使用笔画ID来请求整个笔画对象数据的重传。
图40是图32的序列图的第二修改示例,其中笔画对象210经由中继服务器10-2从传输装置10-1向接收装置103“照原样”(即,不分段)发送。
在这个实施例中,传输装置10-1可以提前与中继服务器10-2协商以设定定义传输装置10-1如何向中继服务器10-2发送墨水数据200的传输参数。例如,传输装置10-1发送包括诸如指示传输装置10-1将与按定义单位T(524_1c“笔画数据段启用”值“FALSE”)不同地按笔画单位发送墨水数据200的信息的通信设定信息的控制消息(CONTROL_JOIN_REQ)。中继服务器10-2将从传输装置10-1接收的通信设定信息存储在绘图区域信息管理部526中,使得中继服务器10-2被控制成按笔画单位从传输装置10-1接收墨水数据200(同时它可以按定义单位T从其它传输装置接收墨水数据200)。
如在图32中一样,在图40中,传输装置10-1通过将“笔事件数据输入开始”(例如,“下笔”事件)的检测用作触发器来执行墨水数据传输处理。具体地,在步骤S605中,传输装置10-1的输入处理部111检测笔画起始点的输入。在图40中,在输入处理部111处从步骤S605到步骤S609(并且相应地在墨水数据生成部120T处,从S607到S611包括S608B)将笔事件数据连续地输入到墨水数据处理部100T,在此期间绘制了在笔画起始点处起始并在笔画结束点处结束的一个笔画。
传输装置10-1的墨水数据处理部100T使用“笔事件数据输入开始”(例如,“下笔”事件)(S605)作为触发器来基于上下文信息(输入2)而生成绘图风格对象230。
传输装置10-1的墨水数据格式化部140T然后可以对中继服务器10-2可以确定接受(S613(接受))或者拒绝的、要发送到中继服务器10-2的第一数据消息(DATA_INK_BGNOS)进行格式化。例如,第一数据消息在这种情况下被发送来确认中继服务器10-2是否能够接受来自传输装置10-2的墨水数据200,并且因此,不必包括笔画对象210的起始点的坐标。
只要未从中继服务器10-2接收到拒绝消息(NACK),传输装置10-1就在包括整个笔画对象210以及它关联的绘图风格对象230、元数据对象250等的消息“DATA_INK_ALLOS”中对整个笔画对象210的墨水数据200进行格式化,并且将其发送到中继服务器10-2。
当按笔画单位发送墨水数据200时,也许能够使用与用来按定义单位T发送墨水数据200的数据格式不同的数据格式。例如可以以纪录格式发送每笔画单位的墨水数据200,然而可以以传输格式发送按定义单位T(小于笔画单位)分段的墨水数据200。并且,当按笔画单位发送墨水数据200时,提供重传机制的通信协议可以被用来实现墨水数据200的更鲁棒的(可靠的)传输。
中继服务器10-2接收包括整个墨水数据200以及它关联的绘图风格对象230、元数据对象250等的数据消息(DATA_INK_ALLOS),并且将该数据消息(DATA_INK_ALLOS)照原样中继到接收装置10-3。为此,接收装置10-3可以提前与中继服务器10-2协商以设定接收参数,给接收参数定义接收装置10-3将与按定义单位T不同地按笔画单位接收从中继服务器10-2中继的墨水数据200。
接收装置10-3按笔画单位接收墨水数据200,并且在步骤S617中,应用图形处理以在一个演绎中绘制(呈现)笔画对象210。
图40的经修改的序列示例可能适合于由两者皆可能在业务速度慢并且因此可能难以实现其中能够连续地发送和接收每个笔画的实时流的网络环境中的传输装置10-1和接收装置10-3使用。在这样的情况下,传输装置10-1和接收装置10-3可以选择采用更鲁棒的传输/接收方法来发送/接收笔画对象,一次一个笔画对象210,而没有数据丢失。
图41是图32的序列图的递送修改示例,其中中继服务器10-2从传输装置10-1接收笔画对象210并且将所接收到的笔画对象210划分成多条分段数据以被中继或者发送到接收装置10-3。
如在图40的先前序列中一样,传输装置10-1生成包括整个笔画对象210的墨水数据200以及任何关联的绘图风格对象230、元数据对象250等的数据消息(DATA_INK_ALLOS)并且将其发送到中继服务器10-2。(参见在墨水数据生成部120T处的步骤S607至S611,共同地S608C。)
在持续时间“d”期间,传输装置10-1的墨水数据生成部120T在墨水数据200中嵌入与从笔事件数据得到以形成笔画对象210的点对象对应的相应时间。例如,当连同音频一起使用应用300-1(例如,524_1g“音频同步启用”参数“启用”)时,出于与音频或其它数据的再现定时同步的目的,传输装置10-1按分段将时间时间戳信息插入到墨水数据20。时间作为中继服务器10-2可以在中继墨水数据200时使用并且接收装置10-3可以在再现(呈现)墨水数据200时使用的“再现时间”被嵌入。例如,按时间T1生成的墨水数据200的第一部分(第一点对象)将由中继服务器10-2在对应时间D_T1中继,按时间T2(在T1与T2之间)生成的墨水数据200的第二部分(第二点对象)将由中继服务器102在对应时间D_T2中继,依此类推。类似地,分别按时间T1至T4生成的墨水数据200的第一部分至第四部分(点对象)分别由接收装置10-3从S617的“图形处理开始”开始分别在基于时间T1至T4的对应定时处再现(绘制)。
中继服务器10-2从传输装置接收包括整个笔画对象210的墨水数据200以及任何关联的绘图风格对象230、元数据对象250等的数据消息DATA_INK_ALLOS,并且按定义单位T将墨水数据200划分成多条分段数据,类似于传输装置10-1如何在图32的序列示例中生成分段数据。在此示例中定义单位T小于笔画单位。中继服务器10-2分别在D_T1、D_T2、D_T3和D_T4的定时处向接收装置3输出所生成的分段数据。
类似于图32的序列示例中的接收装置10-3,接收装置10-3接收并处理包括分段数据的多个数据消息,其一起形成一个笔画对象210。具体地,接收装置10-3接收第一数据消息DATA_INK_BGNOS,其发信号通知它是形成一个笔画对象210的一系列数据消息中的第一数据消息。接收装置10-3提取包含在第一数据消息中的绘图风格对象230并且使用绘图风格对象230中的信息来开始呈现(绘制)笔画对象210的分段数据。墨水数据处理部100R继续处理在后续数据消息中接收的后续分段数据,并且绘图部300继续以增长(增加)方式呈现(绘制)笔画对象210的其余部分。图41示出笔画对象210随着其分段数据被逐渐地接收和处理,从笔画对象210被仅部分地但增长地绘制的状态G1、G2、G3起直到笔画对象210被完全绘制的状态G4为止而被连续地绘制。虽然在上述示例中中继服务器10-2控制笔画数据的中继传输定时,但是能够使中继服务器10-2按笔画单位发送笔画数据,然后使接收装置10-3控制所接收到的笔画数据的相应段的再现定时。还能够使中继服务器10-2保持笔画数据并且在调度时间开始将笔画数据流式传输到一个或多个接收装置。例如,能够将调度时间设定为2020年1月1日0:00,并且接收装置可以起始接收描绘要在该调度时间开始绘制在它们相应的显示器上的消息“新年快乐”的一组笔画。
能够组合上面所描述的各种实施例和修改以提供另外的实施例。能够修改这些实施例的各方面以提供仍然另外的实施例。
例如,在一些实施例中,接收装置103可以被配置成确定是否接受或者拒绝从中继服务器10-2中继的数据消息,类似于中继服务器10-2如何被配置成确定是否接受或者拒绝从传输装置10-1发送的数据消息。当中继服务器10-1接收到拒绝消息(DATA_INK_REJOS)时,它更新连接列表541(图29)以指示来自传输装置10-1的数据消息将不被中继到接收装置10-3(然而可以将相同的数据消息中继到其它接收装置)。
在一些实施例中,公共绘图区域的原点与用户特定绘图区域的原点(即,传输/接收装置的显示器113的原点)重合。在其它实施例中,用户特定绘图区域的原点或维度不必与公共绘图区域的原点或维度相同。图42是图示相对于公共绘图区域的原点在用户特定绘图区域内的用户特定笔画起始点的概念的图。
在图42中,点1601(0,0)指示公共绘图区域的原点,然而点1603用户_10-1(0,0)指示用户_10-1的用户特定绘图区域的原点并且点1605用户_10-3(0,0)指示另一用户10-3的另一用户特定绘图区域的原点。从(0,0)到用户_10-1(0,0)的向量被图示为(200,30),并且从(0,0)到用户_10-3(0,0)的向量被图示为(130,260)。在发起通信时,传输装置10-1和接收装置10-3与中继服务器10-2共享它们从公共绘图区域的原点(在所图示的示例中为(200,30)和(130,260))起的相应的原点向量。因此,当传输装置10-1向中继服务器10-2发送在偏移_1_1(1607)处起始的笔画_A时,传输装置10-1需要仅发送作为从用户_10-1(0,0)到起始点偏移_1_1的向量的向量偏移_1_1。中继服务器10-2然后能够将所接收到的向量偏移_1_1与向量(200,30)组合,以确定起始点偏移_1_1相对于公共绘图区域的原点的位置。
中继服务器10-2然后可以向接收装置10-3发送从点1601(0,0)起经由点1603用户_10-1(0,0)到偏移_1_1(1607)的组合向量,所述组合向量定义起始点偏移_1_1相对于公共绘图区域的原点的位置。接收装置10-3然后可以通过将所接收到的组合向量减去其原点向量(130,260)来确定起始点偏移_1_1相对于它自己的具有原点用户_10-3(0,0)(1605)的用户特定绘图区域的位置。替换地,中继服务器10-2可以执行减法操作以计算起始点偏移_1_1相对于接收装置10-3的用户特定绘图区域的原点用户_10-3(0,0)(1605)的位置。当中继服务器10-2将所计算出的起始点偏移_1-1相对于原点用户_10-3(0,0)的位置发送到接收装置10-3时,接收装置10-3能够立即处理所接收到的在它自己的用户特定绘图区域内的位置。
当接收装置10-3向中继服务器10-2输入并发送在具有原点用户_10-3(0,0)的用户特定绘图区域中绘制的从偏移_3-1起始的笔画_B以及从偏移_3-2起始的笔画_C以被转发到传输装置10-1上时能够使用类似的过程。
在这些实施例中,因为中继服务器10-2相对于公共绘图区域的原点执行坐标转换,所以传输装置10-1和接收装置10-3本身不必执行转换并且发送和接收坐标数据(向量数据)作为相对于它自己的原点的坐标数据。也就是说,一旦传输装置10-1和接收装置10-3与中继服务器10-2共享它们相对于公共绘图区域的原点的原点,坐标转换处理就对传输装置10-1和接收装置10-3而言可能是完全透明的。
虽然用于发送墨水数据200的定义传输单位T已被描述为等于或者小于笔画单位,但是还能够按照大于笔画单位的单位发送墨水数据200。也就是说,能够按大于笔画单位的语义单位“聚合”墨水数据200。例如,在如图33中所示出的定义单位T的过程中,在步骤S709中,确定了聚合是否被请求。如果“是”则在步骤S713中,单位T被设定为大于作为语义单位的笔画单位的值。
图43图示语义单位的概念,然而图44图示按照语义单位发送墨水数据200的示例流程。
图43图示由七(7)个手写字母构成的单词“Network”。7011是指第一笔画,7012是指第二笔画(一起形成第一字母“N”),7013是指第三笔画,并且7014和7015分别是指一起形成第三字母“t”的第四笔画和第五笔画。这里,第一笔画7011和第二笔画7012被认为形成一个语义单位,因为它们一起形成一个字母,并且类似地第四笔画7014和第五笔画7015被认为形成一个语义单位,因为它们一起形成一个字母。
图44图示“聚合”形成一个语义单位的多个笔画并且按语义单位发送笔画数据的示例流程。在此示例中,应用300-1链接到字符识别引擎。在图44中,阴影持续时间“d_for_7011”是用来检测第一笔画7011的时段。墨水数据生成部120T基于由应用300-1所使用的字符识别引擎的分析结果检测到第一笔画7011不形成完整的语义单位。因为语义单位尚未完成,所以在步骤S1911中,该过程跳过墨水数据传输步骤。然后,在阴影持续时间“d_for_7012”期间检测到第二笔画7102。在步骤S1913中,墨水数据生成部120T检测到第一笔画7011和第二笔画7012形成一个语义单位。在步骤S1915中,墨水数据生成部120T聚合第一笔画7011和第二笔画7012,并且还生成指示第一笔画7011和第二笔画7012一起形成一个语义单位并且一起意指“N”的元数据信息。传输装置10-1将笔画(墨水)数据(1501DATA_INK_ALLOS)以及元数据信息发送到接收侧(中继服务器10-2或接收装置10-3)。在步骤S1917中,接收侧提取元数据信息以确定第一笔画7011和第二笔画7012一起形成一个语义单位并且一起意指“N”。其后,在步骤S1919中,接收侧将第一笔画7011和第二笔画7012呈现(绘制)在其显示器上。
第三实施例
第三实施例致力于用于生成并再现被配置成表示手绘数据的墨水数据的方法,并且致力于使用经再现的墨水数据来输出(呈现)绘图的方法。具体地,描述了使依赖于特定输入装置传感器的笔事件数据9202抽象化(一般化)来生成墨水数据200的图92的处理。例如,描述了使具有笔压力数据的笔事件数据(类型1)以及不具有笔压力数据的笔事件数据(类型2)抽象化(一般化)以便生成装置无关的公共属性值的处理。
第三实施例的背景
以上文档(D5)描述墨水数据标准,并且陈述标准的目的如下:“Jot[标准]使得能够跨越范围非常广泛的应用和装置使用墨水。利用标准交换格式,许多场景是可能的。这里是墨水共享的几个示例。当然,更多的应用将随着Jot被实现在各种平台上而出现。”
标准利用指示作为墨水数据的一个属性的笔压力数据存在的被称作“inkForceDataPresent”的标志。
在下表1的数据结构中定义了形成笔画的点(圆点)中的每一个:
表1:文档(D5)的数据结构
Figure BDA0001949680080001071
在上文中,“force”是对应于笔压力的值。因此,对于能够获得“笔压力”信息的电子装置(例如,大多数EMR型平板)而言,inkForceDataPresent标志值被设定为指示笔压力数据的存在的布尔值,并且笔压力(“force”)的值作为输入信息被输入。
文档(D1)描述了另一墨水数据标准,并且陈述标准的目的如下:“硬件和软件厂商通常已使用专有或限制格式来存储并表示数字墨水。公用且可理解的数字墨水格式的缺少已严重地限制了数字墨水跨越由多个厂商开发的异构装置的捕获、传输、处理和表现。响应于这个需要,墨水标记语言(InkML)提供简单且平台中立的数据格式来促使数字墨水在软件应用之间的交换。”
在这个标准中,笔画被称作“迹线”,并且其数据结构能够通过从一组预定义属性之中自由选择的属性来定义。
在缺省设定中,迹线根据下表2-1的数据数据被表示为十进制数组合(X,Y)的列表:
表2-1:文档(D1)的数据结构(缺省)
Figure BDA0001949680080001081
对于缺省数据结构而言,可以通过定义附加通道名称,诸如F(force),来添加另外的属性。例如,指示笔压力的属性(通道名称)被定义如下:
通道名称 维度 缺省单位 解释
F Force 笔尖力
通过将<traceFormat>的<channel name>(通道名称)标签的名称设定为“F(Force)”,例如,能够定制定义包括力属性的“traceFormat”。
迹线然后被表示为十进制数组合(X,Y)的列表并且根据任何任何定制定义的“traceFormat”。因此,用定制定义的traceFormat表示的墨水数据(例如,坐标、笔压力等)作为连续值的列表被提供。
文档(D2)描述用于在工业中使墨水数据标准化的又一尝试,并且描述其目的如下:“墨水序列化格式或ISF是用于存储书写墨水数据的微软格式。该格式被主要用于像个人数字助理、平板PC和超移动PC这样的移动装置存储用触针输入的数据。”D3还描述了“墨水对象简单地是笔画的序列,其中每个笔画是点的序列,并且点是X和Y坐标。许多的新移动装置还能够提供诸如压力和角度的信息。此外,[它们]能够被用来连同墨水数据一起存储客户信息。”
当将包括笔压力信息时,能够以数据格式包括以下属性:
TAG_NORMAL_PRESSURE指示压力是在x、y之后的第一件事情
然后能够序列化并输出包括TAG_NORMAL_PRESSURE信息的信息。
第三实施例的概要
以上文档(D1)、(D2)和(D5)中所提出的墨水数据结构旨在输出由笔型输入装置获得的装置特定信息,而无需使该信息抽象化或者一般化。例如,当笔压力数据由笔型输入装置作为属性被获得时,笔压力数据能够被输出给具有接收并处理压力数据的能力的电子装置,但是不能够被输出给不期望具有这样的能力的电子装置,诸如大多数静电电容型平板。类似地,当笔型输入装置不能获得笔压力数据时,即便当电子装置具有接收并处理笔压力数据的能力时也不能够将笔压力数据输出给该电子装置。又另外,能够接收通过手指的手绘输入的一些“手指”型输入装置,诸如静电电容型传感器,不能在靠着传感器表面按压手指时生成手指压力。因此,因为并非所有笔型输入装置或手指型输入装置能够获得笔压力数据并且因为并非所有电子装置(例如,平板和PC)能够获得、接收并处理笔压力数据,所以笔压力数据在当前可用的墨水数据中的利用是相当有限的。这致使当前可用的墨水数据不适合于更逼真地模拟或者表示手绘数据的目的,因为实际上由用户施加的笔压力通过影响笔笔画的宽度或暗度或者创建变化大小的污迹或污点而显著地影响笔笔画(或笔迹线)如何出现在纸上。
文档(D1)、(D2)和(D5)中所提出的技术目的旨在记录并再现笔的移动(即,“笔事件”),包括诸如在笔事件期间施加了多少笔压力或者笔倾斜有多少的信息。然而,最终需要被记录和再现的信息是一系列笔事件的结果得到的“外观”,诸如多个笔画或迹线如何出现在屏幕上。一系列笔事件的结果得到的外观通常被用作图形数据。文档(D3)提出了向量数据标准,但是文档(D3)对笔用作输入装置不重要,结果,其数据不适合于表示或者表达由笔的使用产生的笔画。例如,文档(D3)的技术在版本1.1中不允许笔画的可变笔画宽度或可变不透明度。
存在对于基于墨水数据模型(语义或语言)以及基于该墨水数据模型的墨水数据格式来生成并再现墨水数据的方法的需要,所述方法不需要笔压力数据以便可由不支持笔压力数据的装置使用。在一些实施例中,生成墨水数据的方法能够基于在各种装置中的大多数、并非全部中可容易得到的信息来为压力数据生成取代参数。在本发明的墨水数据模型中使用取代参数来表示压力信息实现为所呈现(绘制)的笔笔画提供模拟实际的笔笔画的各种微妙的表达和逼真的外观。
第三实施例的描述
通常在以下六个部分中组织以下本发明的各种示例性实施例的描述:
[1]总体系统架构,参考图1和图45-47B
[2]笔画语言(SL)和笔画文件格式(SFF)
[2-1]墨水数据模型(“笔画语言”),参考图48A-48I
[2-2]笔文件格式(SFF),参考图48J-48L
[3]墨水数据处理部100(生成器100T),参考图49-63
[4]墨水数据处理部100R(再现器100R),参考图64-66
[5]墨水数据呈现过程,参考图67
[6]效果:墨水数据绘图示例,参考图68-72。
[1]总体系统架构(图1和图45-47B)
参考第一实施例上面所描述的图1图示根据本发明的第三实施例的在其中可以在屏幕上生成、再现并呈现(绘制)本发明的墨水数据200的总体系统。特别地,图1中用实线画轮廓的墨水数据交换基础设施10表示由使用基于公共语言模型的墨水数据200的库实现以便交换墨水数据200的基础设施,其中,墨水数据200被一般化以便通常可由一些支持压力数据而其它装置不支持压力数据的各种应用服务和装置使用。
在图1中,装置10-1-1包括能够感测笔压力数据的笔型输入装置作为输入传感器。装置10-1使用通过应用服务#1提供的应用来生成墨水数据200。然后可以以与目的地媒体(例如,网络)对应的适合的输出形式(例如,在分组中)输出所生成的墨水数据200T。
装置10-1-2是能够接收通过用户的手指做出的手绘输入的平板型输入装置。装置10-1-2的传感器不能够输出笔压力数据,但是仍然可以使用为不需要压力数据的应用服务#2所提供的应用来生成墨水数据200。然后可以以与目的地媒体对应的适合形式输出墨水数据200。
装置10-3是订阅应用服务#2的桌面型PC。装置3可以使用通过应用服务#2提供的应用来处理(例如,在其显示屏幕上呈现或者再分发)从装置10-1-1或装置10-1-2输出的墨水数据200。
在装置10-1-1、10-1-2和10-3上运行的应用服务#1和应用服务#2全部利用表示墨水数据200的公共信息模型(“笔画语言”)。
根据本发明的实施例的墨水数据200可由各种类型的装置用在各种服务应用上,不限于本身能够获得或者处理笔压力数据的那些装置和服务应用。
图45图示根据本发明的实施例的、在左手侧的在墨水数据200处理部100(生成器100T)处并且在墨水数据生成方法下,以及在右手侧的在墨水数据处理部(再现器100R)处并且在墨水数据再现方法下的数据输入/输出。墨水数据处理部100T对应于第一实施例的图5中的100T。
根据本发明的实施例的墨水数据处理部100T从装置10-1-1的传感器和装置10-1-2的传感器接收笔事件数据,其中,笔事件数据表示创建了笔(或手指)笔画并且包括该笔画的坐标数据(例如,(X,Y)位置)笔(或手指)移动。笔事件数据还可以包括诸如笔压力数据和笔倾斜数据的装置相关的数据。在图45中,来自装置10-1-1的传感器的笔事件类型1数据包括笔压力数据,其中,装置10-1-1的传感器是能够输出诸如用于与压敏触针一起使用的EMR型笔平板的笔平板装置驱动程序或API的压力数据的装置。另一方面,来自装置2的笔事件类型2数据不包括任何压力数据,其中,装置10-1-2是不能输出压力数据的装置,诸如iPadTM平板或其它电容型触摸传感器平板。墨水数据处理部100接收装置相关的笔事件数据(类型1和类型2)并且生成和输出根据本发明的实施例的装置无关的墨水数据200,其不管它们的处理压力数据的能力都能够被各种装置共享。
如图45中所示,为了基于笔事件数据生成墨水数据200,墨水数据处理部100还从用来输入笔事件数据的应用或操作系统接收关于该笔事件数据的上下文信息(输入2)。所生成的墨水数据200是在图45中布置在树结构中的各种对象(笔画对象210、元数据对象250、绘图风格对象230、操纵对象270等,参见图48B)的合集。上下文信息(输入2)例如包括从绘图应用接收的笔(尖)类型(例如,铅笔、蜡笔、画笔等)和/或笔颜色信息、笔平板分辨率信息和采样速率、笔事件输入事件和位置信息、笔ID、由OS提供的用户ID,以及由用来生成(绘制)笔画的(软件)应用所提供的有关笔画的任何其它信息。
墨水数据模型定义在处理墨水数据200的应用区域(域)中使用的数据的语义。当在各种应用和服务之中共享公共墨水数据模型时,能够在处理墨水数据200的域中的系统结构中可靠地自由共享信息。
在图45中,虚线箭头指示墨水信息模型定义墨水数据200的每类对象,并且墨水数据对象的合集形成墨水数据200。
墨水数据处理部100以由需要墨水数据200的应用所请求的媒体格式(例如,在文件、分组等中)将所生成的墨水数据200作为数据对象的合集来输出。通常存在两种类型的媒体格式:
(1)以持久(半持久)形式存储墨水数据200的笔画文件格式(SFF);以及
(2)适合于在消息中或者在实时通信中发送墨水数据200的笔画消息传送格式(SMF)。
墨水数据处理部100R在SFF或SMF文件中接收墨水数据200,将记录在特定媒体中的墨水数据200解释并提取为字节或二进制序列,并且将所提取的墨水数据200提供给利用该墨水数据200的各种类型的应用300。响应于来自应用300-1…301-n中的一个的请求,墨水数据处理部100R提取墨水数据对象并且再现由墨水数据模型所定义的信息,以及将所提取(再现)的墨水数据200提供给请求应用300-1、301-n。墨水数据处理部100R通常被具体化为动态地或静态地链接到请求应用300并且在个人计算机中的处理器上执行的库。在另一实施例中,墨水数据处理部100R可以是被配置成通过解释墨水数据模型来再现墨水数据200的云服务器。
应用300-1…300-n中的每一个检索由墨水数据处理部100R提取和再现的墨水数据200的必要量/部分并且在执行各种操作时利用所检索到的墨水数据200。例如,在所图示的实施例中应用300-1是绘图应用。绘图应用检索经再现的墨水数据200的完整集合,并且对所检索到的墨水数据200应用例如缩放、栅格化和呈现操作并还输出图像文件。
在各种实施例中,墨水数据处理部100和墨水数据处理部100R以及利用实现生成器/再现器功能的库的应用300可以被具体化在各自包括存储器和CPU(中央处理单元)或GPU(图形处理单元)的一个或多个计算装置中。例如,墨水数据处理部100、墨水数据处理部100R以及绘图应用300-1可以被具体化在一个计算装置中。在这种情况下,墨水数据处理部100和墨水数据处理部100R能够使用装置存储器来共享公共墨水数据对象。图46A-46C分别图示根据本发明的实施例的墨水数据生成设备或方法的三个配置示例。
图46A图示设备或方法,其中墨水数据处理部100T驻留在与可以耦合到装置10-1-2的笔画输入终端不同的服务器中。装置10-1-2获得可以包括或者可能不包括笔压力数据的装置相关的笔事件数据。在所图示的实施例中,装置10-1-2的传感器获得不包括笔压力数据的类型2的装置相关的笔事件数据。装置10-1-2然后经由诸如互联网的网络将所获得的装置相关的笔事件数据发送到具体化墨水数据处理部100T的服务器。在服务器中实现的墨水数据处理部100T从装置10-1-2接收装置相关的笔事件数据并且生成如由墨水数据模型所定义的墨水数据200。有关笔事件的上下文信息(输入2)还可以由装置10-1-2提供给墨水数据处理部100T,或者可以在上下文信息(输入2)在例如由服务器提供的应用利用公共笔类型时是不必要的情况下被省略。
图46B图示墨水数据处理部100T驻留在装置10-1中的另一设备或方法,其中,装置10-1-1也包括用于控制装置10-1-1的装置驱动程序。装置10-1-1获得可以包括或者可能不包括笔压力数据的装置相关的原始数据。在所图示的实施例中,装置10-1-1的传感器获得包括笔压力数据的原始数据。装置10-1的传感器经由诸如USB的适合的接口协议将包括笔压力数据的原始数据发送到终端的I/O。终端中的装置驱动程序处理所接收到的原始数据以产生类型1的包括笔压力数据的装置相关的笔事件数据。装置10-1-1的墨水数据处理部100从装置驱动程序接收类型1的装置相关的笔事件数据并且生成由墨水数据模型所定义的装置无关的墨水数据200。这时,如所图示的,墨水数据处理部100还可以从在终端上操作的应用和/或OS接收有关笔事件数据的上下文信息(输入2)。所生成的墨水数据200可以被以字节序列或比特或字节序列的形式序列化并且记录到适合的媒体(网络、存储装置等)上。
图46C图示又一个设备或方法,其中墨水数据处理部100T驻留在还包括输入传感器(例如,触摸传感器)的终端中。例如,图46C的装置10-1-2是可以充当终端的静电电容型触摸传感器,并且装置10-1-2除包括触摸传感器之外还包括墨水数据处理部100。触摸传感器包括能够获得装置相关的位置数据(例如,被手指触摸的位置)的控制IC但是可能能够或者可能不能够获得笔(或手指)压力数据或其它笔特定数据(角度、倾斜等)。在所图示的实施例中,触摸传感器获得并发送类型2的不包括笔压力数据的笔事件数据。墨水数据处理部100T从传感器的控制IC接收类型2的装置相关的笔事件数据并且生成由墨水数据模型所定义的装置无关的墨水数据200。这时墨水数据处理部100还可以从在装置10-1-2上操作的应用和/或OS接收有关笔事件数据(输入1)的上下文信息(输入2)(若有的话)。墨水数据200然后可以被以字节序列或比特序列的形式输出,以持久形式(SFF)或以消息传送分组形式(SMF)等记录到适合的媒体(网络、存储装置等)上。
图47A和图47B图示根据本发明的实施例的墨水数据再现方法的操作。
图47A图示再现方法,其中服务器包括墨水数据处理部100R(接收与再现侧)、应用300-1、墨水数据处理部100R以及其中可以存储由与服务器一起运行的墨水数据处理部100T所生成的特定格式(例如,SFF)的墨水数据200的存储器(RAM)。墨水数据处理部100R对应于第一实施例的图22中的100R。应用300-1调用墨水数据处理部100R的静态/动态库来得到应用300-1所必需的数据。在所图示的实施例中,应用300-1是绘图显示程序。墨水数据处理部100R可以从存储在RAM中的墨水数据之中选择性地提取并再现必要数据并且将经再现的必要数据提供给应用300-1。例如,经再现的必要数据可以包括位置数据和RGB颜色数据,但是可以或者可能不包括可变笔画宽度数据。应用300-1从墨水数据处理部100R接收经再现的必要数据并且执行必要的绘图操作,诸如插值、几何生成和栅格化,以从而在显示屏幕上输出(呈现)图像数据。
图47B图示装置10-3包括墨水数据处理部100R和应用300-2的另一再现方法。例如,在这种情况下,由墨水数据处理部100(未示出)生成的墨水数据200被制备成消息或者依据流协议(例如,在SMF中)包化,并且输出给网络。应用300-2请求墨水数据处理部100R获得应用300-2所必需的数据。在所图示的实施例中,应用300-2是依据任何文本编码方案将手绘文本转换成机器可读文本的字符图像文本化应用。因此,应用300-2请求位置数据(X-Y数据),但是未必需要RGB颜色数据。并且,应用300-2可能需要关于墨水数据200的作者的信息(例如,以便区分特定作者的独特手迹)。
墨水数据处理部100R可以在从网络接收的消息或分组中(在SMF中)从墨水数据200之中选择性地提取并再现应用300-2所必需的数据,并且将经再现的必要数据提供给应用300-2。应用300-2从墨水数据处理部100R接收经再现的必要数据并且执行必要的文本化操作,以可能与作者ID一起输出文本化结果。
如上所述,可以取决于每个应用以及每个实施例中使用的媒体的类型在互联网基础设施上的各种装置(输入装置、终端、服务器等)之中分布或者合并墨水数据处理部100和墨水数据处理部100R的功能和操作。
[2]笔画语言(SL)和笔画文件格式(SFF)
[2-1]墨水数据模型(“笔画语言”)(图48A-48I)
图48A和图48B是图示根据本发明的实施例的墨水数据200的信息模型(笔画语言)的实体关系图。
在图中,框指示信息模型中使用的对象或类。例如,使用了对象“笔画”、“点”和“元数据”。对象包括由面向对象语言定义的类对象以及诸如表达为属性数据的合集的结构的数据结构。
图48B中的椭圆指示包括在框中的对象的属性。例如,属性“位置”、“颜色”和“半径”被用于数据对象“点”。在这些属性之中,用实线椭圆示出的那些对于所对应的数据对象来说是必要的属性。例如,属性“位置”对于数据对象“点”来说是必要的属性。用虚线示出的那些椭圆是能够被添加的可执行属性。例如,属性“颜色”对于数据对象“点”来说仅是可添加的而不是必要的。图中的菱形指示通过该菱形连接的数据对象之间的关系。例如,标记为“包含”的菱形意味着通过该菱形连接的数据对象中的一个被包含在另一数据对象中。
一般而言,“信息模型”描述并定义对象区域(域)中的数据语义,并且表示在该域中使用的概念、关系、约束、规则和处理。信息模型提供在要在各种应用和服务之中可靠地共享的域内的上下文中允许信息请求的系统结构。由墨水数据处理部100T输出和/或由墨水数据处理部100R再现的墨水数据模型被配置成能够表达通过由用户移动的笔所输入的笔画的迹线以及用来输入迹线的笔的属性,诸如笔类型(铅笔、画笔等)和笔颜色。
图48A图示墨水数据200的信息模型中的四个子域。能够基于各种数据对象的功能和目的将墨水数据200的信息模型在概念上分类成以下四个子域:
(SM)笔画模型子域,其包括笔画对象210和点对象,两者皆定义墨水数据200的位置(几何形状)和布局。
(MD)元数据子域,其主要定义笔画对象210的元数据;
(R)绘图风格对象230(栅格化子域),其主要定义将笔画数据(笔画对象)转换为图像数据所必需的信息;以及
(M)操纵子域,其包括用于动态地操纵笔画对象或这些笔画对象的实例,诸如删除、划分、移动并复制笔画对象的一组数据对象。
将在下面附加参考图48B来描述这些子域中的每一个。
<(SM)笔画模型子域>
笔画模型子域包括笔画对象210、点对象和画布对象。
(SM1)笔画对象210是墨水数据模型的必要组件并且形成墨水数据200的核心。
图48C图示笔画对象210的结构。笔画对象210包括共同地定义笔画的几何形状的“第一点”至“第n点”的点对象。笔画对象210对应于用InkML(D1)中的“迹线”、SVG1.1(D3)中的“路径”以及HTML 5(D4)规范中的“画布路径”标记的数据。
笔画对象210可以包括如参考第一实施例上面所描述的作为对象属性的startParameter 301和endParameter 303。在包括startParameter 301和endParameter303作为属性的笔画对象210中,与点对象分别地定义startParameter 301和endParameter303。笔画对象210可以包括“颜色”和“半径”(为了方便可以用“宽度”取代)属性作为每个笔画的可扩展属性。将在下面详细地描述这些属性。
(SM2)点对象是这样的对象,即N个点对象被包含在一个笔画对象210中。点对象包括指示给定(例如,2D)坐标系统中的位置的“位置”作为必要的属性。点对象可以包括包括“颜色”、“半径”等作为可扩展属性。可以按点设定或者可以按笔画设定“颜色”。
当在概念树结构中为多个数据对象定义相同的属性(例如,颜色)时,给予给低级对象(例如,更靠近点对象的对象)的属性被给予优先级。例如,如果笔画的颜色(R、G、B和透明度alpha(α))用4D向量(R1,G1,B1,α1)表达,并且如果笔画中的第三点的颜色被定义为(R2,G2,B2,α2),则第三点的颜色被确定为(R2,G2,B2,α2)。作为另一示例,如果颜色属性在要应用于对象210的形状填充栅格化(绘图风格)对象与笔画对象210它本身的之间变化,则笔画对象210的颜色属性它本身取得优先。
笔画对象210或点对象可以被认为本身拥有“添加”命令。每当生成新笔画对象210或新点对象时,它命令新笔画对象210或新点对象被添加到数据结构。
(SM3)画布对象指示当输入一个或多个笔画时使用的绘图区域(“画布”)的大小,并且例如,包括宽度“W”和高度“H”作为属性。它还可以指示每种纸,诸如和纸、复写纸、普通纸、铜纸、相片纸等的墨水吸收的量。纸类型属性能够与栅格化(绘图风格)对象组合以确定墨水数据200的实际图像表示。
图48D图示画布对象。在左边的附图指示当输入笔画时绘图区域的大小。这图示笔画被输入到由宽度“W1”和高度“H1”所定义的绘图区域。在右边的附图图示从墨水数据200获得的画布大小(W1,H1)如何可以被用来再现笔画。在所图示的示例中,假定了笔画被再现在包括比在原先绘制笔画时使用的区域(W1,H1)小的具有宽度“W2”和高度“H2”的绘图区域的装置、诸如移动终端上。在这种情况下,原始绘图区域(W1,H1)以及笔画与该原始绘图区域的相对大小/位置可以在放大、缩小(收缩)、裁切或者偏移笔画时被用来适合呈现装置的给定画布区域(W2,H2)。
<(MD)元数据子域>
元数据子域包括各自定义笔画对象210的元数据的元数据对象250,其中,元数据包括有关用来生成笔画对象210的笔事件数据的上下文信息(输入2)。
(MD1)元数据对象250与笔画对象210具有一对一关系以“描述”该笔画对象210。
1)时间戳属性包含笔画被记录的时间信息并且例如以定义格式(32比特无符号整数)表示UNIX时间的值。图48E图示每笔画使用时间戳属性的效果。假定两个笔画a和b由两个单独的用户基本上同时地记录。在左边的附图示出笔画a是在笔画b之后绘制的,即,笔画a的时间戳值大于笔画b的时间戳值。在右边的附图示出笔画a是在笔画b之前绘制的,即,笔画a的时间戳值小于笔画b的时间戳值。例如,基于与不同的笔画分别相关联的不同的时间戳值,能够通过确定哪一个笔画在每个截面处应该被放置在其它笔画上方来准确地呈现由多个用户输入的笔画。
2)作者属性包含指定已经记录笔画的作者的信息。
3)笔ID属性是指定用来记录笔画的笔的信息。理想地,ID对于每个笔而言是全局唯一的。当ID信息不可用时或者当需要鲁棒地建立笔ID时,可以连同用来检测通过笔做出的输入的传感器的传感器侧ID一起使用笔ID。
使用上面所描述的属性,作为非限制性示例,笔画元数据可以描述笔画是何时并由何人使用哪一个特定笔绘制的。
<(R)绘图风格对象(栅格化)子域>
绘图风格对象(栅格化)子域包括各自保持什么量化或修改过程在输入笔画时与笔画对象210相关联的一组绘图风格对象230。绘图风格对象230是根据有关生成笔画对象210所基于的笔事件数据的上下文信息(输入2)构建的。例如,绘图风格对象记录与诸如不同的绘图工具属性(画笔、铅笔、蜡笔等)和不同的笔尖宽度的笔画相关联(应用于笔画)的各种量化或修改过程。以下对象(被统称为“绘图风格对象”)可以是栅格化子域的一部分。
(R1)栅格化风格对象是与笔画对象210具有M:N比关系的“呈现”对象。例如,M(例如,5)个风格对象(包括它们的可扩展对象)可以被应用来呈现N(例如,20)个笔画对象。风格对象是所谓的超类对象,其属性可以由诸如形状填充风格对象的其它对象类在扩展关系中继承。风格对象包括“合成”作为属性。“合成”指示当使笔画与先前创建的笔画或者与背景混合时将使用什么类型的函数(例如、正交、乘、当前笔画和先前笔画的min、max、擦除等)。图48F包括扩展风格对象以量化或者修改笔画对象210的三个代表性对象:形状填充风格对象、粒子散射风格对象以及区域重复风格对象的概念图示。
(R2)如在图48F中顶部所图示的形状填充风格对象被应用于笔画对象210以定义当笔画对象210被呈现(绘制)在屏幕上时的笔画轮廓和颜色。形状填充风格对象定义要相对于形成笔画对象210的多个点对象分别定位的多个圆,其中,当每个点对象不与半径和颜色属性相关联时每个圆可以与半径和颜色属性相关联。使用半径和颜色属性来定义点对象或由多个点对象构成的笔画对象210是本发明的特性之一并且将在下面详细地描述。形状填充风格对象还可以包括定义什么算法应该被用来在视觉上消除由一系列重叠圆的包络所定义的笔画轮廓的边缘的抗混叠属性。
(R3)如在图48F中间所图示的粒子散射风格对象使用“粒子”代替上面所描述的形状填充风格对象中使用的圆。类似于上面所描述的形状填充风格对象,粒子散射风格对象包括“半径”和“颜色”属性。
粒子散射风格对象还包括属性“随机种子”(参见图48B),所述属性“随机种子”是整数值并且用来生成伪随机数,以便模拟像铅笔或水彩画笔一样的工具的“粗糙度”或“喷溅”。“随机种子”属性被以文件格式存在以便能够每次当用户打开文件或者远程用户接收到墨水数据时确切地呈现同一绘图。
属性“形状旋转”指示每个粒子是否将以随机旋转角度旋转或者将沿着特定轨迹旋转。
属性“间距”指示两个连续粒子之间的距离。
属性“范围”指示每个粒子在如由图48F中的箭头所指示的与轨迹方向垂直的方向上的偏移值。在由箭头定义的宽度内,可以基于基于随机种子生成的随机数随机地偏移(改变)粒子的位置。
属性“填充”定义要应用于形状的纹理,诸如阴影。
属性“填充偏移”指示诸如阴影的应用于形状的纹理的切出位置,并且被用来定义和改变切出位置以避免同一纹理被连续地应用。
属性“增建(build up)”指示当笔位于定点处达连续时间段时生成的粒子的数目是否将根据时间的过去增加。
属性“混合”定义什么类型的函数(例如,正交、乘、无等)将被用来计算两个连续粒子彼此重叠的位置的颜色。例如,它可以定义颜色应该与粒子的颜色或更暗颜色(例如,两种颜色的混合物)中的一种相同。
(R4)如在图48F底部处所图示的区域重复风格对象被用来扩展风格对象。区域重复风格对象设定由在点之间插值的闭合曲线所定义的区域。属性“变换矩阵”保持要应用于由闭合曲线包封的区域内的内容的仿射变换矩阵。基于该变换矩阵,可以将区域内容呈现到不同的坐标。基于矩阵的变换仅影响笔画对象210的呈现风格,而不操纵或者修改笔画对象210它本身。
<(M)操纵子域>
操纵子域定义用于操纵(划分、删除、复制与粘贴、修改等)根据墨水数据模型生成的原有笔画对象210的全体或一部分的变换(或操纵对象)。
(M1)切片对象274是要应用来提取笔画对象210的一个或多个部分的操纵对象270。图48G图示切片对象274的操作。在图48G中顶部处的绘图图示在应用切片对象274之前的笔画对象210。切片对象274由和笔画对象210交叉(相交)的具有“宽度”的另一笔画来表示。具有“宽度”的切片对象274通常与“删除”功能相关联。在笔画对象210上具有“宽度”的切片对象274相交的位置分别位于第k个点与第(k+1)个点之间并且位于第(k+2)个点与(k+3)个点之间。原始笔画曲线是通过利用Catmull-Rom曲线对每个点进行插值来生成的,并且为了将笔画切成两个笔画而不修改原始笔画的形状,当笔画被切片时,不为重新创建的结束点生成新结束点对象。替代地,如图48G的底部绘图中所示,新endParameter 303n的值被设定为第一笔画的属性,并且新startParameter 301n的值被设定为第二笔画对象210的属性。新endParameter 303n和新startParameter 301n被表达为指示定义第一显示段或最后显示段的两个点之间的内部划分点的一个或数个“浮”点数。例如,可以将第一笔画的新endParameter 303n定义为原始第k个点与原始第(k+1)个点之间的内部划分点。因此,原始笔画的形状能够被用来表示两个重新创建的笔画的形状。在一些实施例中,可以将沿着图48G中的“宽度”扩展的切片(去除)的笔画部分表示为从原始笔画划分的“第三”笔画。
根据上面所描述的方法,原始笔画中的两个点之间的内部划分点作为重新创建(切片)的笔画的属性(新endParameter 303n和新startParameter 301n)被保持。因此,作为切片操作的结果不创建新点对象并且不修改“输入点”的原始合集。因此,当将从许多插值Catmull-Rom曲线得到曲线时,曲线轮廓不在切片操作之前与在切片操作之后之间改变。
属性“更改风格”和“更改元数据”指示通过切片操作从原始笔画划分的多个笔画的属性是否针对所划分的笔画而被更改(重新定义)(例如,“作者”属性)或者不更改并且与和原始笔画相关联的属性(例如,笔颜色属性)相同。
起始参数301和结束参数303是分别指示从原始笔画划分的两个笔画的起始位置和结束位置的属性。
属性“点范围”定义由图48中的“宽度”定义的交叉笔画(切片操纵对象)和要操纵的笔画对象210相交的点的范围。在图48G中,点范围包括第(k+1)个点和第(k+2)个点。
图48H图示通过应用切片操纵对象所实现的“擦除”功能。当对原有笔画对象210应用这样的“擦除”操纵对象时,笔画对象210被划分成两个笔画-具有新endParameter 303n的第一笔画(笔画1)以及具有新endParameter 301n点的第二笔画(笔画2),其中在中间的确切部分(例如,在图18中的孔段1801中的P_intersect_L与P_intersect_R之间)被“擦除”。在这种情况下,当这个操纵结束(提交)以修改原始单个笔画对象210时两个新笔画(笔画1和笔画2)将被生成并且中间部分将被擦除。
(M2)如图48I中所图示的选择对象是“包含”多个(N个)切片对象274(或切片操纵对象)的操纵对象。选择对象“选择”由多个(N个)切片对象274(切片_1、切片_3和切片_3)包封的区域(切片_2),使得然后能够通过对该部分应用变换矩阵来操纵(移动、复制、放大、收缩等)原有笔画对象210在所选择的区域内部的任何部分。在图48I中,套索形点闭合曲线中所示出的所选择的区域包括部分切片的笔画对象210,其然后能够被操纵,例如,像图48I中所图示的那样移动(平移)。
属性“变换矩阵”是仿射变换矩阵。所图示的示例示出平移了tx和ty的区域内的值。当矩阵对象被用来定义特定操纵时,能够表达区域内的点(切片_2)如同它们已实际上移动到不同的位置一样。在这种情况下,当这个操纵对象被结束(提交)以修改原始单个笔画对象210时将生成三个新笔画(笔画1、笔画2和笔画3)。
属性“复制”指示是否即使在应用仿射变换矩阵以实际上将对象移动到不同的位置之后也使对象保持在原始位置(在变换之前)处。例如,通过保持除实际上移动的新位置/区域之外的原始位置/区域,能够实现其中原始位置/区域被复制到新位置/区域上的复制。
[2-2]示例笔画文件格式(图48J-48L)
图48J图示根据本发明的实施例的由墨水数据处理部100(100T或100R)根据如图48B中所示出的墨水数据模型的定义以及用来序列化并存留墨水数据结构的笔画文件格式(SFF)文件而生成或者处理的墨水数据结构(对象树)。
图48J的上部图示由墨水数据处理部100在其内部处理资源中,诸如在存储器空间中生成的墨水数据结构。例如,笔画对象210在#1至#i个实例中被实例化。在i个笔画对象中的每一个中,一个或多个点对象被实例化(点#1至#j),并且一个元数据对象250和一个绘图风格对象230彼此相关联地(以实例树的形式)定义。数据结构根据如图48B的实体关系(ER)图中所示出的墨水数据模型的定义。在图48J中,笔画#1和笔画#2包括不同地命名的风格对象(风格#1和风格#2),但是这些风格对象中的每一个中的实体数据是相同的。例如,当在相同的绘图应用中使用相同的绘图工具(具有相同的笔尖类型和笔颜色)来绘制笔画#1和笔画#2时发生这个。
图48J的底部图示用来布置图48J的上部中所示出的数据结构的笔画文件格式(SFF)文件的示例。也就是说,针对每个笔画(Stroke)对象#1至#i,在SFF文件中定义了形成笔画对象210的点(Point)对象#1至#j、描述笔画对象210的元数据(MetaData)对象250以及定义笔画对象210如何被呈现(绘制)在屏幕上的绘图风格(Style)对象230。如所示,叫“InkDataFile”的一个文件包含关于多个笔画#1至#i的信息。
<关于笔画#1的信息>
(1)首先,对有关笔画#1它本身的信息进行描述。该信息可以包括诸如笔画#1的startParamet 301和endParameter 303的笔画#1的属性被编码在其中的字节序列(或二进制序列,在本文中可交换地使用)。该信息还包括形成笔画#1的一组点对象#1至#j被编码在其中的字节序列。
(2)其次,包括其中编码了“描述”笔画#1的元数据对象250的字节序列。
(3)第三,包括其中编码了“呈现”笔画#1的绘图风格对象230的字节序列。
<关于笔画#2的信息>
如在以上针对笔画#1的情况下一样,针对笔画#2执行相同的格式化过程。在图48J的示例中,绘图风格对象#1的值与绘图风格对象#2的值相同。在这种情况下,可能优选地不以存留文件格式(SFF)重复相同值以节约文件空间并且以避免冗余。因此,相同值未被重复为绘图风格对象#2,并且如所示,在元数据对象#2之后不包括绘图风格对象。在再现侧,墨水数据处理部100R将继续使用相同的绘图风格对象#1来呈现每个笔画对象210,直到找到新(不同的)绘图风格对象230为止。也就是说,文件生成侧和再现侧可以提前同意在针对笔画对象210省略风格对象的情况下,用于前一个笔画对象210的同一风格对象将被使用。
图48K图示当每类数据对象(元数据对象250、画布对象、绘图风格对象230)被序列化并存储在SFF文件中时每类的数据类型。在图48K中,“InkDataFile”是位于数据结构根处的对象。
在图48K中,每个块的第一行指示根据本发明的墨水数据模型定义的对象的名称。每个块中的第二行和后续行指示左列中的已命名对象的属性及其右列中的数据类型(整数、无符号字符等)。可以使用适合的方法,诸如ASN.1、BER和DER编码方法,或诸如“sint32-type”和“float”的在第一实施例的图10的图式文件中所示出的编码方法,来对属性进行编码。
除了出于存留墨水数据200的目的所需的信息的一部分(诸如指示有多少笔画对象被包括在给定SFF文件中的“strokeCount”)之外,图48K中说明的属性的语义与参考图48B上面所描述的属性相同。
在结构的根处的数据对象InkDataFile包括根据本发明的实施例的存留在文件中的二进制序列。
在第一行中,“Header”是出于持久地存储InkDataFile的目的所需的数据,并且包括有关墨水数据模型定义的版本的信息等,以用于在处理后续二进制序列时使用。Header(报头)还可以包括诸如数据是否被压缩、所使用的二进制编码方法的信息,以及应用300或再现器100R再现如由墨水数据生成侧想要的墨水数据200所需的其它信息。
在第二行中,“DecimalPrecision”指示被以记录格式表达为十进制数的值、诸如位置坐标值的准确度水平。“DecimalPrecision”对应于上面所描述的第一实施例的图10的第4行中的参数。“DecimalPrecision”在墨水数据模型中未被定义,而是出于存留InkDataFile的目的所需的一条数据。“decimalPrecision”的使用是本发明的特性之一并且将在下面详细地描述。decimalPrecision数字(或准确度值)对应于分辨率的倒数。例如,当可在0.01单位(例如,0.01个像素)的分辨率下获得位置坐标值时,可以将表达为decimalPrecision的准确度值设定为100(0.01的倒数)。出于更佳存储的目的,可以以指数形式表达decimalPrecision值。例如,能够将值100表达为基数10的指数2(在一些情况下可以省略基数)。将在下面参考图58和图66更充分地描述准确度值在根据本发明的实施例的墨水数据生成和再现方法中的使用。
在第三行中,“MetaData”对应于参考图48B和图48E上面所说明的元数据对象250。
在第四行中,“Canvas”对应于参考图48B和图48D上面所说明的画布对象。
在第五行中,“Style”对应于参考图48B和图48F上面所说明的(绘图)风格对象。
在第六行中,“strokesCount”是出于存留InkDataFile的目的所必需的一条信息,并且是指示包括在特定InkDataFile中的笔画的数目的代码或整数值。因此,这个属性未被包括在墨水数据模型它本身中。通常,当墨水数据代码序列将未被动态地修改而是替代地输出给静态存储型媒体(文件、磁盘等)时,strokesCount被添加到墨水数据代码序列。替换地,例如,当墨水数据200将被连续地输出以用于与远程定位的墨水数据再现装置的实时通信时,strokesCount未被设定或者不包括值(NULL)。
在第七行中,“strokes”涉及被包括在墨水数据模型中的一组对象实例“笔画”(或笔画对象),其中,每个“笔画”(每个笔画对象210)包含一个或多个点对象和各种属性,如将在图48L中所描述的。
图48L图示包括在笔画1至笔画对象的数目N(strokesCount)中的每一个中的信息。在第一行和第二行中,“Start_value”和“End_value”对应于参考图48C上面所描述的startParameter 301和endParameter 303。如参考第一实施例上面所描述的,这两个参数作为笔画对象210的属性与包括在笔画对象210中的点对象分别地存储。
在第四行中,“StrokeType variableAlpha”指示与笔画相关联的透明度(alpha)是否沿着笔画的长度可变。“variableAlpha”是指示是允许笔画对象210的透明度沿着其长度变化还是不变化(即,固定)的标志,并且通常被表达为布尔值(TRUE或FALSE)。在一些实施例中,属性“StrokeType variableAlpha”不存在于如图48B中所示出的墨水数据模型它本身中,并且在笔画对象存留在SFF文件(InkDataFile)中时被使用。将在下面详细地描述“variableAlpha”在本发明的各种实施例中的使用。
第五至第八值“alpha”、“red”、“green”和“blue”一起构成笔画对象210的“颜色”属性。
在第五行中,“alpha”指示要在笔画的“alpha”不可用的情况下使用的固定透明度值(或不透明度/墨水暗度值),如例如由“variableAlpha=false”所指示的。当“alpha”是固定的时,沿着笔画对象210的长度,即对形成笔画对象210的点对象中的每一个应用固定的“alpha”。
在第六至第八行中,“red”、“green”和“blue”是用于在使用RGB颜色空间时确定笔画对象210的颜色数据的信息。
在第九行中,“pointsCount”指示包括在笔画对象210中的点的数目。类似于上面所描述的“strokesCount”,“pointsCount”被用于将InkDataFile存留在SFF文件中的目的并且可以在墨水数据200将被输出到静态存储型媒体(与更暂时性的实时通信型媒体不同)时被确定。替换地,例如,当墨水数据200将被替代地输出到实时型媒体时,“pointsCount”可能不存在于数据结构中或者可以不包括值(NULL)。
在第十行中,“points”指示有关形成笔画对象210的点对象中的每一个的信息。
点对象(图48L中的“点”)是包括有关包括在正被处理的笔画中的1至N(pointsCount)个点中的每一个的信息的数据对象。如图48B中所示,在一个笔画对象210中,包括N(pointsCount)个点对象。
在定义“点”的框的第一行中,“if”短语意味着语法取决于指示笔画是否包括逐长度可变alpha的variableAlpha值(TRUE或FALSE)而针对每个“点”数据对象改变。
(i)第二至第六行指示在variableAlpha值是TRUE(即,笔画包括逐长度可变alpha值)的情况下包括在“点”数据对象中的数据。
在第二行中,“x”指示正被处理的点的第一坐标值。
在第三行中,“y”指示正被处理的点的第二坐标值。
因此,“x”和“y”一起定义点的2D坐标。
在第四行中,“radius”指示包括作为中心的点的圆的半径的大小。“radius”是与点对象相关联的属性,并且未必与笔压力值或笔尖力相关联。相反,“radius”是具有包含诸如压力和力的概念的下等概念的语义的广义更高概念,如将在下面更充分地描述的。
在第五行中,“alpha”指示与点对象相关联的alpha值。
应该注意,如将在下面参考图58更充分地描述的,与在绘图处理应用中通常使用的浮点(float)数据类型不同,包括在点对象的第二至第五行中的数据的数据类型是整数(int)或ushort(或uchar)。
(ii)第七至第十一行指示在variableAlpha值是FALSE(即,笔画不包括可变alpha,即,alpha(透明度)值对于笔画的长度来说固定)的情况下包括在“点”数据对象中的数据。
在第七行中,“x”指示点的第一坐标值。(与上面所描述的第二行相同。)
在第八行中,“y”指示点的第二坐标值。(与上面所描述的第三行相同。)
因此,“x”和“y”一起定义点的2D坐标。
在第九行中,“radius”指示包括作为中心的点的圆的半径的大小。(与上面所描述的第四行相同。)
因为在笔画对象210具有要应用于形成笔画对象210的点对象中的每一个的固定alpha值的情况下,不为点对象定义alpha值。
如上所述,如将在下面参考图57更充分地描述的,数据对象“点”的语法取决于指示笔画对象210是否沿着长度包括可变alpha值或固定alpha值的variableAlpha值(TRUE或FALSE)而改变。
第十二行和后续行指示语法取决于reserveRawflag值而针对每个“点”数据对象改变,以选择性地包括附加属性。例如,当reserveRawflag被设定为TRUE时,能够将数据对象扩展(扩大)成包括每个点的“时间戳”信息,而不丢失原始信息。
已经在上面参考图48A-48L描述了根据本发明的实施例的墨水数据模型以及通过该墨水数据模型的语法和语义定义的笔画文件格式(SFF)的数据对象InkDataFile。接下来,对可操作来生成并输出具有根据本发明的实施例的这样的数据结构的墨水数据200的墨水数据处理部100(100T)进行描述。
[3]墨水数据处理部(图49-63)
图49是根据本发明的实施例的墨水数据处理部100T的功能框图。墨水数据处理部100T对应于图5中的100T。墨水数据处理部100T基于由输入装置所提供的笔事件和笔事件上下文信息(输入2)根据如以上图48A-48L中所描述的墨水数据模型的定义来生成墨水数据。墨水数据处理部100T例如在以上图48J-48L中所描述的SFF文件(“InkDataFile”)中、在二进制序列、字节序列中、在分组中等输出所生成的墨水数据200。
墨水数据处理部100T包括墨水数据生成部120和墨水数据格式化部140。墨水数据生成部120对应于图7中的笔画数据对象处理部122。墨水数据生成部120接收各种类型的装置相关的输入数据(“输入1”),诸如包括笔压力数据的类型1的笔事件数据以及不包括笔压力数据的类型2的笔事件数据。在图49中,类型1的笔事件数据包括时间戳信息(例如,“double timestamp”)、多组XY坐标(例如,“float x、y”)以及笔压力数据(例如,“floatpressure”),而类型2的笔事件数据包括时间戳信息(例如,“double timestamp”)和多组XY坐标(例如,“float x,y”)。代替接收时间戳信息,墨水数据生成部120可以使用它接收到笔事件数据所在的时间,例如,作为时间戳信息。
墨水数据生成部120还从用来输入笔事件数据的应用或操作系统接收关于笔事件数据的上下文信息(“输入2”)。例如,在使用绘图应用绘制的笔画的情况下,上下文信息(输入2)可以包括由绘图应用设定来绘制笔画的各种参数值。也就是说,上下文信息(输入2)可以包括出于生成(绘制)笔画的目的而定义的配置信息。在类型1的笔事件数据和类型2的笔事件数据分别由两个不同的应用生成的情况下,可以从这两个应用分别为类型1的笔事件数据和类型2的笔事件数据提供上下文信息(输入2)。替换地,类型1和类型2的笔事件数据的上下文信息(输入2)可以由通常用来生成类型1和类型2的笔事件数据的同一应用或操作系统来提供。
如在第一实施例中参考图7中的笔画对象处理部122上面所描述的,墨水数据生成部120基于所接收到的类型1或类型2的笔事件数据以及所接收到的上下文信息(输入2)来输出各自包括有关点的XY坐标(位置)数据以及半径和alpha数据的一系列点对象。如在图48L中参考数据对象“点”上面所描述的,半径是与点相关联的属性并且未必与压力或笔尖力相关联,而是相反是根据本发明的实施例的墨水数据模型的定义具有包含诸如压力和笔尖力的低级概念的语义的广义装置无关的更高概念。
墨水数据格式化部140接收包括点的XY坐标以及半径和alpha数据的每个点的数据,将所输入的数据格式化成与点对象的数据结构对应的数据结构,例如如上面在图48L中所描述的,并且输出经格式化的数据。与具有通常用在绘图处理应用中的浮点数据类型(“float”)对照,经格式化的点对象中的数据具有“int”(整数)、“ushort”、“uchar”等的数据类型。
图50A是图示根据本发明的实施例的由图49的墨水数据生成部120执行以将半径和alpha信息作为点对象的属性来输出的过程的流程图。输出XY坐标数据(Position(X,Y))的描述被省略,因为通常墨水数据生成部120仅将它接收的XY坐标数据传递到墨水数据格式化部140上。
在步骤S1201中,墨水数据生成部120获得包括要处理的点的每个笔画所必需的上下文信息(输入2)。将在下面参考图50B描述示例上下文信息(输入2)。
在步骤S1202中,判定了所输入的数据是否包括笔压力数据。
在步骤S1203中,在步骤S1202中判定了所输入的数据包括笔压力数据(“TRUE”)之后,点的笔压力数据可以被用来得到在那时的参数(vn-速率)。可以看出,当在一点处施加更大的笔压力时,在该点处的速率变得更慢。因此,能够通常与压力数据成反比使vn相关。
在步骤S1204中,在步骤S1202中判定了所输入的数据不包括笔压力数据(“FALSE”)之后,获得了点的时间信息。时间信息可以作为形成笔画的每个点的输入信息被接收,或者可以被设定为墨水数据生成部120(或墨水数据处理部100T)接收到点信息的时间。
在步骤S1205中,点的速率是基于点和相邻点的时间信息而得到的,如将在下面参考图51更充分地描述的。
在步骤S1207中,点的半径信息是基于vn(速率)、phase(阶段)信息和pen type(笔类型)信息来获得的,如将在下面参考图52更充分地描述的。
在步骤S1209中,点的alpha(透明度或不透明度)信息是基于vn(速率)、phase(阶段)信息和pen type(笔类型)信息来获得的,如将在下面参考图55更充分地描述的。
图50B图示可以被用来设定与墨水数据生成部120有关的上下文信息(输入2)中的一些的应用或操作系统的示例GUI。提供给墨水数据生成部120的上下文信息(输入2)可以包括例如最大和最小半径值(“Cntx1”)、如将下面参考图51所描述的与最大和最小半径值相关联的最大和最小速率值(“Cntx2”)、用来得到半径或alpha值的函数(“Cntx3”)、可以为笔画的起始和结束阶段点设定的例外值(参见图53)(“Cntx4”)以及笔类型信息(未示出)。上下文信息(输入2)可以针对墨水数据生成部120被提前设定,或者,如图50B中所示,可以由用户经由设定GUI显式地定义。
图51是图示根据本发明的实施例的在图50A的步骤S1205中基于时间信息得到速率的过程的图。
速率是通过将距离除以时间而得到的。除法的分母可以是获得当前点坐标的时间与获得前一个点坐标的时间之间的差。除法的分子可以是当前点坐标与前一个点坐标之间的差(距离)。当采样速率是固定的时(当分母是固定的时),相对于前一个点坐标的当前点坐标之间的位移可以被用来指示速率。
在本发明的实施例中,速率作为具有最小值0.0和最大值1.0的参数值(vn),即作为min-max归一化速率值被输出,所述参数值(vn)可以用图50B的“Cntx2”设定。
图52是图示在图50A的步骤S1207中得到作为点对象的属性的半径的过程的流程图。一般而言,根据本发明的实施例,半径是从可以为以上步骤S1205中计算出的归一化速率值的参数vn得到的,或者可以是在步骤S1203中从笔压力数据得到的。
在步骤S1207_01中,确定了当前点的“阶段(phase)”。附加地参考图示根据本发明的实施例的笔画中的点的“阶段”的定义的图53,阶段是指示当前点位于在笔画内哪里(在哪一个位置处)的概念。例如,笔画的第一点是起始阶段,而笔画的最后点是结束阶段。第一点与最后点之间的点是中间阶段。能够针对每个笔事件类型,诸如下笔类型、笔移动类型和抬笔类型来确定每个点的阶段。下笔事件是用户起始使用指示体(笔、手指等)来绘制笔画的事件,抬笔事件是用户结束使用指示体来绘制笔画的事件,而笔移动事件是在下笔事件与抬笔事件之间发生的事件。
在步骤S1207_04中,在步骤S1207_01中确定了要处理的点是起始或结束阶段,即点是笔画的第一点或最后点之后,可以将一个或多个点添加到笔画的起始(在第一点前面)或者添加到笔画的结束(在最后点之后)。
在步骤S1207_02中,如在下面参考图72更充分地描述的,针对添加到笔画的起始或结束的这些点中的每一个,在图50B的“Ctnx4”中设定的例外半径值被设定为点的半径,诸如半径0或大于正常半径(例如,两倍)的半径。
在步骤S1207_03中,在步骤S1207_01中确定了要处理的点是中间阶段,即点既不是笔画的第一点也不是笔画的最后点之后,确定了用来输入笔事件数据的笔的笔类型。
在步骤S1207_05中,在步骤S1207_03中确定了笔类型是正常的(缺省的)之后,使用正常(缺省)函数(诸如图54的指数衰减(或阻尼)函数(参见图54中的“衰减”))从参数vn得到半径。
在步骤S1207_07中,在步骤S1207_03中确定了笔类型是特殊的,诸如具有特别软的笔尖的笔之后,通过使用诸如图54中的“S形”和“周期”函数从参数vn得到半径。可以经由设定GUI将正常函数或特殊函数中的任一个显式地定义或者修改为图50B的上下文信息“Cntx3”的一部分。
图54是图示根据本发明的实施例的如图52的步骤S1207_05和S1207_07中所使用的用于从参数vn(速率)得到半径的三个函数的曲线图。
水平轴指示参数vn(速率)而垂直轴指示半径。
被称为“衰减”的实线指示在图52中的步骤S1207_05中使用的正常衰减(或阻尼)函数。该函数定义当vn增加时半径以指数方式衰减的关系。正常函数被用于正常(缺省)类型的笔。使用这个函数来实现这样的vn至半径转换基于以下观察结果。
[观察结果A]由于笔压力而增加的线宽度对应于墨水在纸中渗出到其中的区域。
[观察结果B]笔移动越快,笔具有越短的时间段以在每个点处使墨水渗出。
基于以上观察结果A和B,推理了当笔更慢移动时线宽度增加,而当笔更快地移动时线宽度减小。该理论基于随着笔更快地移动、笔在每个点处具有更短的时间段以便使墨水在纸中渗出以形成线(笔画)。线宽度被认为是各自具有半径的一系列点。因此,根据本发明的实施例,针对正常笔,衰减(阻尼)函数被用来将参数vn转换为半径,使得当速率增加时半径以指数方式衰减。
应该注意,甚至相对于不能获得笔压力数据的装置,本发明的墨水数据处理部100T也能够使用时间戳信息来计算或者获得速率信息。例如,墨水数据处理部100T可以使用它从这样的装置接收到笔笔画信息的本地定时以从而计算或者获得时间戳信息,基于所述时间戳信息能够针对每个点确定速率vn。因此,墨水数据处理部100T能够相对于包括能够获得压力数据的装置以及不能获得压力数据的装置的各种类型的装置来基于速率vn容易地确定并输出每个点的半径。
在图54中,被称为“S形”的虚线指示与以指数方式不同地逐步发生衰减的特殊函数,并且被称为“周期”的虚线指示为周期性的另一特殊函数。可以应用这两个特殊函数来在图52的步骤S1207_07中针对特殊类型的笔从速率得到半径,如将在下面参考图71更充分地描述的。
应该注意,应用上面所描述的这些函数中的任一个来将速率转换为点半径可以是实时的。替换地,可以提前执行将参数vn转换为半径,并且可以将结果得到的数据存储在查找表中,所述查找表可能可由墨水数据处理部100T访问。
图55是图示根据本发明的实施例的在图50A的步骤S1209中得到指示每个点的透明度(或不透明度)的alpha值的过程的流程图。
在步骤S1209_03中,正被用来输入笔事件数据的笔的笔类型是根据上下文信息(输入2)来确定的。
在步骤S1209_05中,在步骤S1209_03中确定了笔类型是正常的(缺省的)之后,使用正常(幂)函数,诸如图56中所示出的“幂”函数,从参数vn得到alpha。
在步骤S1209_07中,在步骤S1209_03中确定了由上下文信息(输入2)所提供的笔类型是特殊的,诸如具有特别软的笔尖的笔之后,通过使用诸如图56中所示出的“S形”函数的特殊函数来从参数vn得到alpha。
图56是图示根据本发明的实施例的如在图55的步骤S1209_05和1209_07中所使用的用于从参数vn(速率)得到alpha(透明度/不透明度)的两个函数的曲线图。
水平轴指示参数vn而垂直轴指示指示透明度的alpha。例如,alpha0.0可以意指完全透明而1.0可以意指完全非透明,即,完全不透明。
被称为“幂”的实线指示在图55中的步骤S1209_05中使用的正常幂函数。该函数定义当速率vn增加时alpha以指数方式增加的关系。正常(幂)函数被用于正常(缺省)类型的笔。使用正常函数来实现从vn到alpha的这种转换基于以下观察结果。
[观察结果C]由于笔压力而增加的墨水暗度对应于墨水在纸中渗出到其中的区域。
[观察结果D]笔移动越快,墨水在每个点处从笔渗出的量越少(因为笔在较短时间段内在每个点处接触)。
基于以上观察结果C和D,推理了当笔缓慢移动时墨水暗度增加(不透明度增加),然而当笔更快地移动时墨水暗度减小。该理论基于随着笔更慢移动、更多的墨水在接触的每个点处从笔渗出到纸中以形成较暗的线(笔画),并且随着笔更快地移动,更少的墨水在接触的每个点处从笔渗出以形成较浅的线(笔画)。因此,根据本发明的实施例,针对正常笔,幂函数被用来将参数vn转换为半径,使得当速率增加时alpha(透明度)以指数方式衰减。
应该注意,甚至相对于不能获得笔压力数据的装置,本发明的墨水数据处理部100T也能够使用时间戳信息来计算或者获得速率信息。例如,墨水数据处理部100T可以使用它从这样的装置接收到笔笔画信息的定时以从而计算或者获得时间戳信息,基于所述时间戳信息能够容易地确定速率vn。因此,墨水数据处理部100T能够相对于包括能够获得压力数据的装置以及不能获得压力数据的装置的各种类型的装置来基于速率vn容易地确定并输出alpha。
在图56中,被称为“S形”的虚线指示作为可以被用来在图55的步骤S1209_07中针对特殊类型的笔从速率得到alpha的增加函数的示例的特殊函数。
应该注意,参考图56上面所描述的这些函数中的任一个的应用可以是实时的。替换地,可以提前执行将参数vn转换为alpha并且可以将结果得到的数据存储在查找表中,所述查找表可能可由墨水数据处理部100T访问。
如上所述,墨水数据处理部100T的墨水数据生成部120基于输入的可以包括或者可能不包括笔压力数据的笔事件数据来确定每个点的半径和alpha值。如图49中所示,点数据驱动部120在它自己的内部存储器中以“float”数据类型输出半径和alpha信息。然后,墨水数据格式化部140接收半径和alpha信息(float)作为点对象的属性,并且以笔画文件格式(SFF,参见图48L)或者以笔画消息格式(SMF)输出它们。
图57是图示将输入的半径和alpha信息以及所输入的X和Y坐标数据格式化成笔画文件格式(SFF)或者格式化成笔画消息格式(SMF)的墨水数据格式化过程的流程图。通常,格式化过程S140由墨水数据处理部100T的墨水数据格式化部140执行作为用于生成墨水数据200的过程的一部分。
<数据对象InkDataFile的序列化>
在步骤S1401中,当以SFF序列化InkDataFile时,出于将InkDataFile存留在SFF文件中的目的所必需的墨水数据和信息被序列化。作为这样的必要信息的示例,decimalPrecision值被序列化并编码。在所图示的示例中,值100被用作“unsigned int”数据类型的decimalPrecision值,并且值100使用ASN.1、BER编码方法或诸如“sint32-type”和“float”的第一实施例的图10的图式文件中所示出的编码方法来编码。另一方面,当以适合于实时传输或消息传送的SMF序列化InkDataFile时,可能不需要出于以SFF存留墨水数据的目的所必需的信息,并且因此可以在以SMF对墨水数据进行格式化时省略S1401。在步骤S1402中,以SFF(参见图48L)对InkDataFile的strokesCount值进行编码。另一方面,当格式化为SMF时,不包括strokesCount值,并因此,可以省略步骤S1402并且该过程可以替代地对指示正被处理的所有笔画中的最后一个的数据进行编码。
<数据对象“笔画”的序列化>
针对包括在InkDataFile中的N(strokesCount)个笔画中的每一个执行包括在图57中的点线的更大矩形中的从步骤S1403起始的以下步骤。结果,N个笔画对象使用定义编码方法来格式化并且被输出。
在步骤S1405中,variableAlpha值被编码在正被处理的笔画对象210中。如上所述,variableAlpha值(TRUE/FALSE)指示笔画的alpha值是否沿着笔画的长度可变。
在步骤S1406中,指示包括在笔画对象210中的点对象的数目的pointsCountvalue被编码。如果pointsCountvalue不可用,例如,在实时类型应用的情况下(即,当格式化为SMF时),可以省略步骤S1406并且该过程可以替代地对指示正被处理的笔画的结束的数据进行编码。
<数据对象“点”的序列化>
针对包括在正被格式化的笔画中的pointsCount个点中的每一个执行包括在图57中的点线的更小矩形中的从步骤S1407起始的以下步骤。结果,pointsCount个点对象被格式化并且被输出。
在步骤S1409中,确定了包括正被处理的点的笔画的alpha值是否是是可变的,即,确定了variableAlpha是TRUE还是FALSE。
在步骤S1411中,在步骤S1409中确定了alpha对于笔画来说沿着其长度可变(“TURE”)并因此alpha可以从一点向另一点变化之后,针对该点对XY坐标值以及半径和alpha值进行编码,如将在下面参考图58的上部更充分地描述的。
在步骤S1413中,在步骤S1409中确定了alpha对于笔画来说不是可变的(“FALSE”)之后,仅针对该点对XY坐标值和半径值进行编码而不对alpha进行编码,如将在下面参考图58的下部更充分地描述的。
这时,可以以适合的文件格式(例如,SFF)或者以消息格式(例如,SMF)将根据本发明的实施例的布置在定义数据结构中的墨水数据200输出给各种类型的媒体。
图58图示根据本发明的实施例的上面所描述的图57的步骤S1411和S1413的实现示例。
如果alpha值沿着笔画的长度是可变的,当针对点对XY坐标值以及半径和alpha值两者进行编码时,图58的上部中的第01-07行是与图57的步骤S1411对应的伪代码。
如果alpha对于笔画来说不是可变的,当针对点对XY坐标值和半径值进行编码但是不对alpha值进行编码时,图58的下部中的第08-13行是与图57的步骤S1413对应的伪代码。
在图58中,由“A”和“B”指示的部分示出了上面所描述的decimalPrecision值如何被用在本发明的实施例的实施方式中。
优选地,点的XY坐标值和半径值被以float数据类型或double数据类型保持直到紧接在输出定时之前为止,以便在处理器中维持这些值可能的最高准确度。另一方面,出于使墨水数据200可由不同的数据解释方法广泛(通常)理解的目的并且出于高效地压缩结果得到的墨水数据200的目的,可能期望使用最少数目的比特来表示每个值。
因此,在步骤S1411中,如图58的上部中所示,输入的X、Y和半径值被首先乘以指示用于使它们的单位标准化的分辨率(放大率)的decimalPrecision值,如图58中的“A”中所示,并且其后被转换(投射)为int(整数)数据类型,如“B”中所示。
在如同样在图58的下部中所示出的步骤S1413中,类似于步骤S1411,输入的X、Y和半径值被首先乘以decimalPrecision值并且其后被投射为int(整数)数据类型。
在这方面,图59图示根据本发明的实施例的在图57的步骤S1411和S1413中所使用的浮点数据类型到整数数据类型的转换。
在图59中,作为float数据类型存储的输入数据161是根据IEEE 754标准的示例。在输入数据161中,“s”是编码比特,“指数(exponent)”是浮点数的指数,并且“小数(fraction)”是浮点数的尾数。
输入数据161被乘以decimalPrecision值,如由图58中的“A”所指示并且上面所描述的,以产生图59的被乘输入数据163。被乘输入数据163也是包括指数和小数(尾数)的浮点数。
被乘输入数据163被从“float”转换(投射)为“int”(或“short”或“ushort”),如由图58中的“B”所指示并且上面所描述的,以从而产生绝对值165。绝对值165不再是浮点数。在所图示的实施例中,XY坐标值以及半径值全部被投射(转换)为int(整数)值,但是它们可以被投射为任何非浮点数据类型。
图60图示根据本发明的实施例的由上面所描述的从“float”到“int”的数据格式转换(投射)产生的增加压缩效率。
在图60中,为了易于说明和理解使用了十进制数。在所图示的示例中,圆周率pi(π)被乘以10的(0、+1、+2次幂)的不同指数。
图60的左手侧指示在图58的步骤S1411和S1413的处理之前获得的值。
图60的右手侧指示在图58的步骤S1411和S1413的处理之后获得的值。
包括在左手侧的矩形中的顶部三个值和最后值是在处理之前的不同浮点数(3.0、3.1和3.14),但是它们全部在如在右手侧示出的处理之后被转换为3。虽然每个数的准确度通过转换被稍微折衷,但是相同值(例如,在此示例中为3)的使用的频率增加以促进值在处理器中的高效处理,诸如值的高效压缩。例如,可以使用ASN.1、BER或DER编码方法将用数据类型整数表达的数据编码成文件或消息协议以被输出。
图61是图示根据本发明的实施例的可以在图49的“墨水数据格式化部”140中执行来压缩定义墨水数据对象的属性的过程的流程图。
在步骤S81中,作为初步步骤,如在图57的步骤S1411和S1413中所执行的那样,应该将所生成的要压缩的墨水数据200量化为整数精度值。
在步骤S183中,墨水数据格式化部140确定数据压缩的类型。例如,确定可能取决于所输出的格式类型。并且,确定可以基于压缩是针对需要实时数据的应用还是针对利用存储类型媒体中的数据的应用。如果将不执行压缩(“无”),则过程“照原样”按照整数数据类型输出墨水数据值。使用例如图60中所描述的顶部三个值,可以输出用32个比特表示的值“+3”三次。
在步骤S185中,在步骤183中确定了第一类型的压缩方法被选择之后,该过程根据它们的属性将诸如X坐标值、Y坐标值、半径值等的数据序列分类成流,并且对所生成的墨水数据200应用第一类型的压缩方法。例如,第一类型的压缩方法是游程长度编译方法。使用例如图60中所描述的顶部三个值,使用了指示值“+3”被重复3次的代码。能够在应用游程长度编译之前通过使用数个编译方法,诸如通过对值执行增量编码(数据差),来改进所建议的编译技术的效率。这将在值之间的变化是相对恒定的时增加重复值的数目。
在步骤S187中,在步骤S183中确定了第二类型的压缩方法被选择之后,该过程对所生成的墨水数据200应用第二类型的压缩方法。例如,第二类型的压缩方法是使用指数Golomb码的熵编译方法。它是与具有较大绝对值的值相比对具有较小绝对值的值应用较短比特长度的可变长度编译方法。
<墨水数据处理部100T和墨水数据生成方法的修改>
如上所述,根据本发明的实施例的墨水数据处理部100T能够处理从一些包括笔压力数据而其它数据不包括笔压力数据的各种类型的装置接收的数据,以得到半径和/或alpha(透明度/不透明度)信息作为形成每个笔画的点的属性,以从而生成装置无关的墨水数据200。墨水数据处理部100T以各种格式,诸如以文件格式(例如,SFF)或消息格式(例如,SMF),输出所生成的墨水数据200。
在图50A的示例中,在输入数据包括笔压力数据的情况下(当步骤S1202的结果是TRUE时),从笔压力数据得到半径和透明度信息,而无需使用定时信息,但是本发明不限于这样的实施方式。
可以使用接收定时信息和笔压力数据作为输入并且输出半径的函数。在这种情况下,不仅基于笔压力数据而且基于笔速率来改变笔画宽度和/或笔画透明度成为可能。
虽然在上面所描述的各种实施例中得到了速率,但是当笔包括例如加速度传感器时或者当仅与加速度对应的值是可获得的时,可以使用加速度。例如,通过对加速度进行积分以得到速率,可以利用与上面描述的处理类似的处理。
图62是图示替代参考图52上面所描述的方法,在图49的墨水数据生成部120中执行以输出半径信息作为墨水数据属性的过程的另一示例的流程图。
在步骤S192中,类似于图50A的步骤S1202,确定了所输入的数据是否包括笔压力数据。
在步骤S196中,在步骤S192中确定了所输入的数据不包括笔压力数据(“FALSE”)之后,如上面参考图54所说明的,使用从时间戳信息得到的速率与半径之间的关系来计算半径。也就是说,使用当速率增加时半径衰减的关系。
在步骤S194中,在步骤S192中确定了所输入的数据包括笔压力数据(“TRUE”)之后,所输入的压力数据和时间戳信息两者被用来得到半径。步骤S192使用包括两个变量的部分微分函数,其中,(i)如果笔压力是固定的,当速率增加时半径减小,以及(ii)如果速率是固定,当笔压力增加时半径增加。因此,能够基于点的速率和笔压力两者来对墨水数据200的每个点的半径进行编码。
在步骤198中,输出在步骤S196中或者在步骤S94中得到的半径。
图63是图示替代参考图55上面所描述的方法,在图49的墨水数据生成部120中执行以输出可变alpha信息作为墨水数据属性的过程的另一示例的流程图。
在步骤S2002中,类似于图50A的步骤S1202,确定了所输入的数据是否包括笔压力数据。
在步骤S2006中,在步骤S2002中确定了所输入的数据不包括笔压力数据(“FALSE”)之后,如上面参考图56所说明的,使用从时间戳信息得到的速率与alpha之间的关系来计算alpha(透明度/不透明度)。也就是说,使用当速率增加时alpha也增加(变得更透明)的关系。
在步骤S2004中,在步骤S2002中确定了所输入的数据包括笔压力数据(“TRUE”)之后,所输入的压力数据和时间戳信息两者被用来得到可变alpha值。步骤2004使用包括两个变量的部分微分函数,其中,(i)如果笔压力是固定的,当速率增加时alpha增加(变得更透明),以及(ii)如果速率是固定的,当笔压力增加时alpha减小(变得更不透明)。因此,能够基于点的速率和笔压力两者来对笔画对象210的每个点的alpha(透明度)进行编码。
在步骤S2008中,输出在步骤S2006中或者在步骤S2004中得到的alpha。
可以一起使用图62和图63的过程,使得可以从所输入的压力数据和时间戳信息得到半径值和alpha值两者。替换地,可以从所输入的压力数据和时间戳信息得到仅半径值或仅alpha值。
上面参考图54和图56描述了将速率(vn)变换为半径和alpha的示例函数。一般而言,应该使用什么函数来将速率(vn)变换为半径和/或alpha取决于笔的类型(或笔尖类型)和传感器表面被假定为模拟的“纸”的类型(例如,和纸、复写纸、普通纸、复印纸、相纸、吸墨纸等)。因此,可以取决于笔的类型和/或纸的类型来调整被选择来将速率变换为半径和/或alpha的函数中的任一个。换句话说,从速率得到的半径和/或alpha可以取决于笔的类型和/或纸的类型而改变。
依照本发明的另一个方面,在如上面所描述的本发明的各种实施例中利用的笔压力数据可以用可以从各种类型的输入装置接收的其它属性值代替,诸如笔角度(或笔倾斜)数据、笔旋转(笔滚动)数据等。代替上面描述的示例中所使用的笔压力数据,诸如笔角度/倾斜数据的这些属性值可以被用来得到根据本发明的各种实施例的半径和/或透明度(alpha)信息。例如,一些笔型输入装置能够生成指示由笔轴相对于传感器表面或者相对于传感器表面的法线而形成的角度的笔角度(笔倾斜)数据。可以看出,保持与传感器表面垂直的笔往往对传感器表面施加比倾斜的笔更多的压力以从而在与传感器表面更并行的方向上延伸。因此,类似于如何可以使笔压力数据与vn相关联,可以使笔角度/倾斜数据与参数vn(速率)相关联。
例如,可以使用编纂相对于传感器表面使笔保持得越直(即,更接近于传感器表面的法线)(即,更多压力)、速率(vn)变得越慢的关系的函数。一旦从角度/倾斜数据得到了vn,就可以使用上面所描述的与用来将vn变换为半径和/或alpha信息的那些函数类似的函数。也就是说,可以使笔角度/倾斜数据与vn相关联,所述vn然后被转换为半径和/或alpha信息。另一方面,还可以看出,可能由于倾斜笔尖与传感器表面之间的增加接触区域,保持与传感器表面垂直的笔往往产生比往往产生(绘制)较宽笔画的倾斜笔更窄的笔画。在这种情况下可以使用编纂这样的关系的适合函数,其中,相对于传感器表面使笔保持得越直,速率(vn)变得越快以产生较窄笔画。一旦从角度/倾斜数据得到了vn,就然后能够使用上面所描述的函数来将vn转换为半径和/或alpha信息。应该使用什么函数来将角度/倾斜数据变换为vn取决于笔的类型(或笔尖类型)以及传感器表面被假定为模拟的“纸”的类型(例如,和纸、复写纸、普通纸、复印纸、相纸、吸墨纸等)。还可以看出,保持与传感器表面垂直的笔往往产生比往往产生较窄且较细(更透明)的笔画的倾斜笔更宽且更暗的笔画。然后,在无需首先针对每个点使角度/倾斜数据与vn相关联并且将vn转换为半径和/或alpha信息的情况下,在一些实施例中可以使用将笔角度/倾斜数据直接变换为半径和/或alpha信息的适合函数。类似地,在一些实施例中,可以使用针对每个点将笔压力数据(如果可用)直接变换为半径和/或alpha信息而不是首先将压力数据转换为vn并然后将vn转换为半径和/或alpha信息的适合函数。
[4]墨水数据处理部/解码器(图64-66)
图64是图示根据本发明的实施例的墨水数据处理部100R与各种应用300-1、300-2、300-n之间的关系的图。墨水数据处理部100R对应于第一实施例的图22中的100R。
如图45中所示,墨水数据处理部100R基本上是软件库,所述软件库响应于来自各种应用300的请求,向存储器位置并且以可由应用使用的数据格式提取以文件或消息格式存储在存储器(“RAM”)或各种类型的媒体(例如,硬盘)中的墨水数据200。例如,当应用300-1是绘图处理应用(利用图5中的图形处理部300)时,墨水数据处理部100R向图形处理部300输出必要的数据对象“笔画”、“点”等(其中,每个笔画和/或点与半径和/或alpha信息相关联),但是不输出不必要的数据对象“作者”等。作为另一示例,当应用300-2仅需要作者信息以用于确定电子会议参与者的目的时,例如,墨水数据处理部100R在元数据对象250中输出数据对象作者。在本发明的实施例中,如将在图65中所描述的,墨水数据处理部100R被实现为由处理器执行的墨水数据再现过程S200。在下面,将连同绘图过程一起描述墨水数据再现过程S200,其中,应用300是绘图应用300-1。
图65是图示根据本发明的响应于来自绘图应用300-1的请求而再现(或者提取)生成的墨水数据200以获得半径和alpha信息以及X和Y坐标数据并且输出所获得的信息和数据的墨水数据再现过程S200的流程图。绘图应用300-1然后可以使用半径和alpha信息来将更逼真的样子和微妙的表达给予给如在屏幕上绘制/呈现的笔画(参见图68-72)。本质上,墨水数据再现过程S200是上面参考图57所描述的生成(格式化)墨水数据的过程S140的逆过程。
<数据对象InkDataFile的再现或提取>
在步骤S2001中,提取了包括要处理的笔画的墨水数据200的上下文信息(输入2)(或配置信息),诸如decimalPrecision值。再现处理相反地对应于图57的步骤S1401中的编码处理。
在步骤S2002中,提取了如图48L中所示出的包括在数据对象InkDataFile中的strokesCount值。如果strokesCount值例如在实时型应用中不可用,则可以省略步骤S2002并且该过程可以通过再现指示包括在InkDataFile中的所有笔画中的最后一个的数据来替代地确定何时结束处理。
<数据对象“笔画”的再现>
针对包括在InkDataFile中的N(strokesCount)个笔画中的每一个执行包括在图65中的点线的更大矩形中的从步骤S2003起始的以下步骤。结果,N个笔画对象被再现并输出。
在步骤S2005中,提取了数据对象“笔画”(参见图48L)中的“variableAlpha”。如上所述,variableAlpha值(TRUE/FALSE)指示正被处理的笔画是否包括沿着笔画的长度可变的alpha值。
在步骤S2006中,获得了指示包括在笔画对象210中的点对象的数目的“pointsCount”值。如果pointsCount值例如在实时型应用中不可用,则可以省略步骤S2006并且该过程可以通过再现指示正被处理的笔画的结束的数据来替代地确定处理的结束。
<数据对象“点”的再现>
针对包括在正被再现的笔画对象210中的pointsCount个点中的每一个执行包括在图65中的点线的更小矩形中的从步骤S2007起始的以下步骤。结果,pointsCount个点对象被再现并输出。
在步骤S2009中,确定了正被处理的笔画的alpha是否是可变的,即,确定了“variableAlpha”是否是TURE。
在步骤S2011中,在步骤S2009中确定了“variableAlpha”是TRUE之后,XY坐标值以及半径和alpha值针对点被解码和再现并被输出。该步骤将使在图57的步骤S1411中编码的数据倒转(转换)回为由正在请求经再现的墨水数据200的特定应用请求(可由其使用)的数据格式。
在步骤S2013中,在步骤S2009中确定了“variableAlpha”是FALSE之后,XY坐标值和半径值针对点被解码和再现并被输出,然而alpha值针对整个笔画被设定为固定值,如将在下面在图66的下部中更充分地描述的。该步骤将使在图57的步骤S1413中编码的数据倒转(转换)回为由正在请求经再现的墨水数据200的特定应用请求(可由其使用)的数据格式。
因此,墨水数据再现过程S200从数据对象“点”中提取XY坐标值和半径值以及alpha值(若有的话)。
图66图示根据本发明的实施例的上面所描述的图65的步骤S2011和S2013的实现示例。
如果在alpha值沿着包括点的笔画的长度可变(即,形成笔画的不同点具有不同的alpha值),当针对点提取XY坐标值以及半径值和alpha值两者时,图66的上部中的第01-07行是与图65的步骤S2011对应的伪代码。
如果在alpha值沿着包括点的笔画的长度不可变(即,形成笔画的所有点具有相同的alpha值),当针对点提取XY坐标值和半径值同时alpha值被设定为固定值(例如,所图示的示例中的“1.0”)时,图66的下部中的第08-14行是与图65的步骤S2013对应的伪代码。
在图66中,由“A”和“B”指示的部分示出了上面所描述的decimalPrecision值如何被用在本发明的实施例的实施方式中。具体地,使用以上图58中所示出的函数的逆函数,在步骤S2011中,输入的X、Y以及半径和alpha数据被首先从int(整数)转换(投射)回为float(浮点数)数据类型,如图66中的“INV_B”中所示。其后,X、Y和半径数据被除以指示分辨率(放大率)的decimalPrecision值,如图66的上部中的“INV_A”中所示。
在图66的下部中所示出的步骤S2013中,类似于步骤S2011,输入的X、Y和半径数据被首先投射为float(浮点数)数据类型,并且其后被除以decimalPrecision值。另一方面,alpha值被设定为固定值,诸如所图示的示例中的“1.0”。
因此,当应用300是例如需要输入数据具有“float”数据类型的绘图应用时,所生成的包括整数类型的数据的墨水数据200被再现(解码)回为所请求的浮点数数据类型,或如由应用300所请求的任何其它非整数原始数据类型。
[5]墨水数据绘图过程(图67)
图67是图示根据本发明的实施例的由利用墨水数据200来在屏幕上绘制(呈现)笔画的绘图应用300-1(以及图5中的图形处理部300)所执行的绘图过程S300-1的流程图。
在步骤S200中,如上所述,该过程使墨水数据处理部100R获得并再现InkDataFile以提取有关笔画以及包括在每个笔画中的点的信息(例如,半径和alpha信息),使得能够将所提取的信息用作绘图应用S300-1的输入数据。
接下来,确定与正被处理的笔画对象210相关联的绘图(栅格化)风格对象。如图48B中所示,墨水数据200被构造为使得每个笔画对象210(在笔画模型子域中)与定义笔画对象210在它被绘制(呈现、栅格化等)在屏幕上时的外观的一个或多个绘图风格对象(在栅格化子域中)相关联。虽然在图67的所图示的实施例中存在许多类型的绘图风格对象,但是两个选项是可用的:散射风格对象和形状填充风格对象(参见图48)。
当在子过程S300-1S中选择了散射风格对象时,首先,为每个笔画得到顶点(点)阵列,其中,顶点阵列由一组稀疏地定位的离散点构成。得到顶点阵列的过程使用由墨水数据处理部100生成的属性值,诸如“间距”和“范围”值。得到顶点阵列的过程还可以使用从应用或操作系统接收的上下文信息(输入2)。例如,关于屏幕被假定为模拟的纸类型(例如,和纸、复写纸、普通纸、复印纸、相纸、吸墨纸等)的上下文信息可以被用来增加或者减少顶点阵列中的稀疏地定位的离散点的数目。所生成的顶点阵列表示一系列粒子。在所图示的实施例中,正在控制绘图过程S300-1S的GPU基于每个点的“半径”值来对所生成的顶点阵列应用第一顶点着色器以将定义大小给予给粒子中的每一个。GPU还基于每个点的“alpha”值来对粒子的阵列应用第一分段着色器以将定义水平的透明度(或不透明度)给予给粒子中的每一个。绘图过程S300-1S因此按照“散射”粒子的风格绘制所给出的笔画(参见图48F)。
当在子过程S300-1F中选择了形状填充风格对象时,首先,为每个笔画得到样条段,其中,每个样条段是为连续笔画曲线的一部分而定义的足够平滑的多项式函数。也就是说,样条段的集合定义在顶点处连接以一起表示笔画的曲线段。GPU基于每个顶点(点)的“半径”值来对样条段的集合应用第二顶点着色器以将定义大小给予给沿着笔画以顶点为中心的圆中的每一个。GPU还基于每个顶点(点)的“alpha”值来对样条段的集合应用第二分段着色器以将定义水平的透明度(或不透明度)给予给这些圆中的每一个。绘图应用S300-1F因此按照“形状填充”的风格绘制所给出的笔画(参见图48)。
[6]效果:墨水数据绘图示例(图68-72)
图68-72图示根据本发明的实施例的被用来图示墨水数据生成方法、墨水数据再现方法以及墨水数据绘图(呈现)方法的效果的各种绘图呈现示例。在图68-72中,“s”指示笔画的起始位置并且“e”指示笔画的结束位置。在所有情况下,假定了笔移动的速率从“s”向“e”增加(加速)。
图68图示根据本发明的实施例的由基于图54的衰减(阻尼)函数而生成的墨水数据的输入产生的绘图呈现示例。利用衰减函数,当速率增加时,半径减小。因此,在图68中所图示的所有的绘图示例中,笔画的宽度从“s”向“e”减小。在这些示例中,alpha(透明度)被设定为固定值。
呈现示例依照上面所描述的观察结果,即由于笔压力而增加的线宽度对应于墨水在纸中渗出到其中的区域[观察结果A],以及笔移动越快,笔在每个点处使墨水渗出的时间段越短[观察结果B]。即便当给定的笔事件数据输入不包括压力信息时,根据本发明的实施例的墨水数据处理部也能够针对每个点获得速率信息并且基于该速率信息针对每个点来计算半径信息。所生成的墨水数据因此包括这些点中的至少一些中的每一个的半径信息。当墨水数据200被呈现(绘制)在屏幕上时,半径信息可以被用来给予所绘制的笔画精密地模拟用墨水手绘在纸上的真实笔画的外观的逼真的样子和微妙的表达。
图69图示根据本发明的实施例的由基于图56的幂函数而生成的墨水数据200的输入产生的绘图呈现示例。利用幂函数,当速率增加时,alpha(透明度)增加。因此,在图69中所图示的所有的绘图示例中,笔画从“s”向“e”变得更淡且更透明(即,暗度减小)。在这些示例中,半径被设定为固定值。
呈现示例依照上面所描述的观察结果,即由于笔压力而增加的墨水暗度对应于墨水在纸中渗出到其中的区域[观察结果C],以及笔移动越快,墨水在每个点处从笔渗出的量越少(因为笔在每个点处接触达较短时间段)[观察结果D]。即便当给定的笔事件数据输入不包括压力信息时,根据本发明的实施例的墨水数据处理部也能够针对每个点获得速率信息并且基于该速率信息针对每个点来计算alpha信息。所生成的墨水数据200因此包括这些点中的至少一些中的每一个的alpha信息。当墨水数据200被呈现(绘制)在屏幕上时,alpha信息可以被用来给予所绘制的笔画精密地模拟用墨水手绘在纸上的真实笔画的外观的逼真的样子和微妙的表达。
图70图示根据本发明的实施例的由基于图54的衰减函数和图56的幂函数两者而生成的墨水数据200的输入产生的绘图呈现示例。利用衰减函数,当速率增加时半径减小,而利用幂函数,当速率增加时alpha(透明度)增加。因此,在图70中所图示的所有的绘图示例中,笔画的宽度从“s”向“e”减小,而同时笔画从“s”向“e”变得更淡且更透明(即,暗度减小)。即便当给定的笔事件数据输入不包括压力信息时,根据本发明的实施例的墨水数据处理部也能够针对每个点获得速率信息并且基于该速率信息针对每个点来计算半径和alpha信息。所生成的墨水数据200因此包括这些点中的至少一些中的每一个的半径和alpha信息。当墨水数据200被呈现(绘制)在屏幕上时,半径和alpha信息可以被用来给予所绘制的笔画精密地模拟用墨水手绘在纸上的真实笔画的外观的逼真的样子和微妙的表达。
图71图示根据本发明的实施例的针对诸如具有特别软的笔尖的笔的特殊类型的笔示出如图52的步骤S1207_07中所使用的图54的其它函数(S形和周期函数)的效果的绘图呈现示例。
在左手侧的绘图示例由与如在“衰减”函数中一样以指数方式不同地逐步发生衰减的图54的“S形”函数产生。因此,在结果得到的绘制(呈现)的笔画中的每一个中,与如在图68的示例中一样逐渐地减小不同,笔画的半径(宽度)逐步从较宽部分向较窄部分减小。在图56的“S形(增大)”函数中,与逐步发生衰减的图54的“S形(减小)”函数不同,增加逐步发生。因此,由图56的“S形(增大)”函数产生的绘图示例具有与在图71的左手侧的绘图示例的那些外观类似的外观,但是其中“s”和“e”的位置被交换。
在图71的右手侧的绘图示例由半径输出周期性地改变(增加并减小)的图54的“周期”函数产生。因此,在结果得到的绘制(呈现)的笔画中的每一个中,笔画的半径(宽度)从“s”向“e”周期性地改变。
图72图示根据本发明的实施例的示出了将特殊值用作在图52的步骤S1207_04中添加的起始点和结束点的半径的效果的绘图呈现示例。
具体地,在图52的步骤S1207_02中,特殊值被设定为分别添加到笔画的起始和结束的起始点和结束点中的每一个的半径。
图72的左手侧图示当起始点和结束点的半径被设定为零(“0”)时的绘图示例。这意味着不管用户在笔画初期或在笔画末期移动笔有多快或多慢,笔画的起始点和结束点的半径(宽度)在结果得到的绘图中被基本上忽视。
图72的右手侧图示当起始点和结束点的半径被设定为大于(例如,两倍)通常计算出的半径,即使用如上面所描述的各种函数根据本发明的各种实施例计算出的半径时的绘图示例。如所示,这导致每个笔画的起始点和结束点衰减,类似于用户如何、何时用笔在纸上绘制笔画,每个笔画的起始点和结束点常常似乎在纸上衰减(因为笔常常在笔笔画初期和末期暂停)。
如上所述,根据本发明的各种实施例的墨水数据处理部、墨水数据生成方法、墨水数据处理部、墨水数据再现方法以及墨水数据绘图方法,可以生成并使用装置无关的墨水数据来呈现(绘制)具有逼真的外观的笔画。墨水数据200被构造为使得它能够被一些支持压力数据而其它的不支持压力数据的各种类型的装置和应用共享。墨水数据结构为形成每个笔画的点中的每一个定义半径和/或alpha值,并且能够使用半径和/或alpha值代替压力数据,以将逼真的外观和微妙的表达给予给精密地模拟用墨水手绘在纸上的实际笔画的外观的在屏幕上绘制的笔画。
尽管在上述描述中,压力被大概描述为由笔施加的笔压力,然而相对于能够获得(测量)由手指施加的压力的装置,例如,压力可能意指手指压力。因此,在本描述中,术语“笔压力”将被同义地理解为“压力”,并且术语“笔”将被同义地理解为可以包括笔(触针)、手指以及用户可以利用来在输入装置上指示位置的任何其它工具、设备和元件的“指示器”。
尽管在上述描述中,alpha被用来指示透明度的程度(较大的alpha意指较大的透明度),但是还可以使用指示不透明度的程度的参数,使得该参数的较大值指示较大程度的不透明度。
尽管墨水数据处理部通常被描述为与从墨水数据处理部请求再现的墨水数据200的各种应用分开的实体,然而例如,可以基于经由库链接的连接共同地或整体地形成它们。
第四实施例
本发明的第四实施例致力于接收基于用户的手绘图运动的笔事件数据并且接收由支持手绘图运动的应用或操作系统所提供的上下文信息(输入2)的系统和方法。上下文信息(输入2)包括关于笔事件数据的信息,诸如笔的类型、作者ID等。所述系统和方法基于所接收到的笔事件数据和所接收到的上下文信息(输入2)来生成包括笔画对象210、元数据对象250以及绘图风格对象230的墨水数据200。所述系统和方法还可以从支持手绘图运动的应用或操作系统接收操纵信息并且基于所接收到的笔事件数据、所接收到的上下文信息(输入2)以及所接收到的操纵信息来生成形成墨水数据的一部分的操纵对象。
第四实施例的背景
将允许在不同的操作系统、不同的应用、不同的服务、不同的图像格式、不同的原有笔画标准等之中共享数字化手绘输入数据或“墨水数据”的框架是期望的。简单地说,笔画数据模型的统一是期望的。
超文本标记语言(HTML)是成功的统一框架的一个示例。HTML已作为公共语言被广泛地采用来标记(1)基本上为设定数目的字符代码组合的“文本”,用(2)标记文本在显示时如何应该被表征或者描述的元标签加以标记。例如,元标签指示由不同类型的浏览器通常解释来指定文本的外观的字体大小、颜色、列、行、组、表等。这样的公共语言允许生成能够被以基本上相同的方式显示在不同计算环境中的不同装置上的文档(但是例如由于每个浏览器实施方式而可能存在一些较小变化和差异)。
相同情况是手绘输入数据所期望的。也就是说,定义(1)“笔画”(或由用户的手写运动所输入的“迹线”或“路径”)以及(2)诸如笔画的颜色、纹理、偏移位置等的表征或者描述“笔画”的“对象”的公共语言是期望的。这样的公共语言(或信息模型),在下文中被称为“笔画语言(SL)”,将允许生成能够被以基本上相同的方式(相同的外观)显示在不同计算环境中的不同装置上的数字文档,但是例如由于每个呈现引擎实施方式而可能存在一些较小变化和差异。
被配置成以可在不同应用之中共享的方式表示手绘笔画的一些数据结构,诸如InkML、ISF和JOT数据结构,像在以上文档(D1)、(D2)和(D5)中所描述的那样是已知的。
简要地,InkML(D1)是出于通过使用描述所输入的数据的标记语言来表示用电子笔或触针输入的墨水的目的而提供的。例如,InkML定义笔画的数据结构,其中,数据结构<trace>包含由输入装置生成的数据的序列,其中使用许多<channel>元素在单独的数据结构<traceformat>中指定这个数据的格式。
ISF(D2)是出于以旨在被用在像正将触针用作输入机构的PDA、平板PC和其它装置一样的移动装置中的二进制形式存储墨水数据的目的而提供的。例如,ISF定义笔画的数据结构,其中,数据结构TAG_STROKE包含由输入装置生成的数据的序列,其中使用像TAG_NO_X、TAG_BUTTONS和其它标签一样的各种标签来在单独的数据结构TAG_STROKE_DESC_BLOCK中指定这个数据的格式。ISF涉及压缩编码并且能够使用针对每个数据类型来拾取最适合的压缩技术的方法来生成静态(持久)流。例如,它们针对输入坐标、压力水平以及其它触针生成的数据使用霍夫曼算法的增量编码和调谐版本的组合,并且针对像定制绘图属性一样的定制属性使用LZ算法。
JOT(D5)是出于在具有各种操作系统和架构的不同机制之间交换由电子笔或触针所输入的数据的目的而提供的。例如,JOT定义笔画的数据结构,其中,数据结构tag_INK_POINT描述单个笔事件及其诸如其位置、力(压力)、旋转等的特性。
并且,出于以输入无关的方式描述向量图形的目的而存在不限于处理手绘笔画的不同标准。SVG1.1(D3)是一个这样的示例。SVG的版本1.1包括出于表示笔画的目的而依赖于线和Bezier曲线的路径元素。
第四实施例的概要
可以将本发明的实施例理解为解决三个方面中的一个或多个,特别是方面三。
系统和方法是为了生成、转换并以其它方式处理通过新颖语言(或信息模型)所定义的墨水数据200以实现上面所描述的本发明的一个或多个方面而提供的。
本发明的实施例致力于输出包括笔画对象的墨水数据200,所述笔画对象由元数据对象静态地描述和/或由绘图风格对象和操纵对象动态地控制或者操纵。笔画对象、元数据对象、绘图风格对象以及操纵对象共同地形成墨水数据200,所述墨水数据200可以被以记录格式(例如,笔画文件格式(SFF))或者以传输格式(例如,笔画消息格式(SFM))存储。
如在上面所描述的第三实施例中一样,根据本发明的实施例的笔画对象可以具有可变笔画宽度(即,沿着笔画的长度而变化的宽度)以及可变笔画颜色或透明度(alpha)/不透明度(即,沿着笔画的长度而变化的颜色或透明度/不透明度)。如在上面所描述的第一实施例中一样,根据本发明的实施例的笔画对象可以使用诸如Catmull-Rom样条方法的适合的插值方法来定义,并且使用特殊参数来描述任何部分笔画的起始和/或结束。
本发明的实施例致力于生成墨水数据200的方法,所述方法例如取决于与远程主机的连接/耦合状态,能够动态地操纵远程(远程定位的)笔画对象以及动态地操纵本地笔画对象。
第四实施例的描述
图73是图示根据本发明的实施例的在其中利用墨水数据200的总体系统的图。与图1中所描述的系统相比,图73的系统附加地包括支持由装置10-1-2和装置10-1-3访问的应用服务#2的服务器#2。图73中的应用服务#1和应用服务#2皆可以经由墨水数据交换基础设施10来利用和交换墨水数据200。在图73中,装置10-1是能够输出笔压力数据的笔型输入装置,并且使用通过应用服务#1提供的应用300-#1来生成墨水数据200。应用300-1链接TCP/IP库以及用于实现本发明的墨水数据生成方法的墨水数据处理部100和图形处理部300(图中未示出)的库。然后可以以与目的地媒体(例如,网络)对应的适合的输出形式(例如,在分组中)输出所生成的墨水数据200T。
装置10-1-2是能够接收通过用户的手指做出的手绘输入的平板型输入装置。装置10-1-2的传感器不能够输出笔压力数据,但是仍然可以使用为应用服务#2提供的应用300-2来生成墨水数据200。应用300-2链接或者利用像TCP/IP栈一样的库以及用于实现本发明的墨水数据生成方法的服务器#2上的墨水数据处理部100的库。然后可以以与目的地媒体(例如,网络)对应的适合的输出形式(例如,在分组中)输出所生成的墨水数据200T。
装置10-3是订阅应用服务#2的桌面型PC。装置10-3可以使用通过应用服务#2提供的应用300-2来处理(例如,在其显示屏幕上呈现或者再分发)从装置10-1-1或装置10-1-2输出的墨水数据200。应用300-2动态地链接或者利用像TCP/IP栈一样的库以及用于实现本发明的墨水数据再现方法的墨水数据处理部100的库。
图74是根据本发明的实施例的墨水数据处理部100的框图。墨水数据处理部100对应于图6中所示出的墨水数据处理部100。可以将墨水数据处理部100实现为动态地或静态地链接到诸如利用图6中的图形处理部300的绘图应用300-1的应用的库。墨水数据处理部100包括墨水数据生成部120和墨水数据格式化部140。墨水数据生成部120通常输入/包括/接收三种类型的信息:1)笔事件类型输入信息(“输入1”)、2)上下文信息(“输入2”)以及3)操纵信息(“输入3“)。
输入1:
“笔事件类型输入数据”或简单地输入数据或笔事件数据是从用于从诸如笔平板传感器的输入装置获得数据的OS、装置驱动程序、API输入的。如在图92的左手侧所图示的,输入数据可以来自各种输入装置。输入数据不限于来自输入装置的原始数据,并且可以通过处理原始数据而生成的笔事件数据,诸如InkML数据和ISF数据。
输入2:
上下文信息指示被用来支持上面所描述的笔事件类型输入数据的输入的上下文。上下文信息例如可以包括由用来生成笔画的应用(应用300-1)或OS所提供的有关笔画的日期和时间信息(例如,何时输入了笔画)、笔类型、笔颜色、笔ID、作者ID、输入装置的分辨率和采样速率等。
输入3:
操纵信息是用于指示要输入的下一个笔画将形成用来操纵原有笔画对象210的操纵对象而不是普通笔画对象210的命令。这样的命令可以通过用户对与输入装置相关联的开关或按钮的激活来输入,并且被从应用300-1提供给墨水数据生成部120。例如,当用户希望将原有笔画对象210“切片”时,用户发出操纵信息并且做出手绘运动以将原有对象切片。鉴于该操纵信息,墨水数据生成部120使用用户的切片运动来将原有笔画切片,而不是基于用户的切片运动来绘制另一笔画。
墨水数据生成部120输入/接收这三种类型的信息(输入1、输入2和输入3)并且根据如参考第三实施例上面所描述的图48B中所示出的笔画语言(SL)的定义来生成一组对象。
墨水数据格式化部140与生成包括各种对象的墨水数据的墨水数据语言处理部120分开。在图74中,从下面到上面,即,在输出方向上,由墨水数据生成部120生成的一组对象被输入到以“记录格式”或者以“传输格式”输出数据的墨水数据格式化部140。在图74中,从上面到下面,即,在输入方向上,记录格式或传输格式的数据被输入到墨水数据格式化部140,所述墨水数据格式化部140再现一组对象并且将经再现的该组对象提供给墨水数据生成部120。在以下图中,SL意指笔画语言(参见图48B),SFF意指作为一种记录格式的笔画文件格式,并且SMF意指作为一种传输格式的笔画消息格式。
图75是根据本发明的各种实施例的图74的墨水数据处理部的更详细的功能框图。此图中的墨水数据处理部100对应于图6中所示出的墨水数据处理部100。
墨水数据生成部120包括墨水对象210处理部122、元数据对象处理部124、呈现(绘图)风格对象处理部126以及操纵对象处理部128。
笔画对象处理部122接收笔事件类型输入数据作为输入(输入1),并且参考上下文信息(输入2),生成形成笔画语言的核心的笔画对象210。
元数据对象处理部124基于笔事件类型输入数据(输入1)和上下文信息(输入2)来生成描述笔画对象210的元数据对象250。元数据对象包含不影响如绘制在屏幕上的笔画对象210的外观的关于笔画对象210的非绘图相关信息,诸如日期和时间信息、作者ID和笔ID。
呈现(绘图风格)对象处理部126基于在笔画对象处理部122中生成的笔画对象并且参考上下文信息(输入2)来生成绘图风格对象230,所述绘图风格对象230控制笔画对象210的呈现(绘图)并且定义笔画对象210如何在被呈现在屏幕上时出现。
操纵对象处理部128在收到操纵信息(图75中的“输入3”)时,使用作为输入1接收的下一个“笔画”来生成被配置成操纵可以在本地(“本地”)或者通过网络远程地(“远程”)存在的原有笔画对象210的状态的操纵对象270。
因此,墨水数据生成部120基于三种类型的输入信息(图75中的“输入1”、“输入2”和“输入3”)来生成基于如图48B中所示出的笔画语言的一组对象。
墨水数据格式化部140包括被配置成以诸如SFF、InkML和JPEG格式的记录格式输出文件的记录格式数据处理部142以及被配置成以诸如SMF格式的传输格式输出消息的墨水数据通信部144。通过笔画语言根据这些各种格式的定义所定义的数据诸如在SFF结构描述文件(图式文件)(F142-1-1)、SVG结构描述文件(F142-2-1)以及SMF结构描述文件(F144-1)中输出。因此,依据笔画语言来生成并再现各种对象成为可能,其中,能够以各种记录格式和/或传输格式输入和输出对象。虽然如所图示的文件墨水数据格式化部140支持两种记录格式SFF和SVG,但是它可以支持超过两种记录格式,或者在应用300-1不必支持所有可能的文件格式时可以支持仅一种记录格式。
来自操纵对象处理部128的输出(例如,图75中的操纵对象270)可以被布置在SMF消息中并通过网络发送,以操纵(例如,切片)远程存在的一个或多个原有笔画对象。
<生成语言对象的方法>
图76-83B是图示根据本发明的实施例的笔画对象处理部122、元数据对象处理部124、呈现(绘图风格)对象处理部126以及操纵对象处理部128的结构和操作的功能框图和流程图。
<SM(笔画模型):用于生成笔画对象的设备/方法>
图76是图75的笔画对象处理部122的功能框图。笔画对象处理部122包括输入笔事件数据(“输入1”)或诸如InkML数据的笔事件类型数据并且输出点对象的笔画模型处理部(122_1)。每个点对象包括该点的x坐标和y坐标,并且还可以包括如上面参考第三实施例所描述的作为点的属性的半径和alpha值,使得所输出的点对象可以被表示为(x、y、半径、alpha)。笔画对象处理部122包括模型生成部(122_2),其接收上下文信息(“输入2”)并且准备要输出给笔画模型处理部(122_1)以用于在生成点对象时使用的配置。笔画对象处理部122还包括笔画模型构建器部(122_3),其将所生成的一起形成笔画的点对象组装成笔画对象210。笔画对象处理部122因此输出多个生成的笔画对象。
图77A是图示生成笔画对象210的过程的流程图。在S122_1中模型生成部122_2处理上下文信息(“输入2”)以提取用来定义配置的参数,诸如输入速率。在S122_6中,所定义的配置被加载到笔画模型处理部122_1并且用来生成点对象。如果配置指导笔画模型处理部122_1应用平滑,则在S122_2中笔画模型处理部122_1对点的阵列应用平滑以生成平滑的点对象。例如,可以使用可以被配置有适合的窗口大小、平滑数据因子和趋势平滑因子的二重指数平滑算法。如果配置指导将不施加平滑,则跳过S122_2。如果配置指导笔画模型处理部122_1生成附加点,则在S122_3中笔画模型处理部122_1生成附加点并且将它们附加到笔画的起始和/或结束。像S_122_2和S_122_3一样的步骤取决于在模型生成部122_2中处理的上下文信息在S122_7之前被执行。作为另一示例,形成笔画对象210的点对象的位置值可以取决于在S122_6中加载的配置中所指定的插值方法(例如,Catmull-Rom样条方法)。在步骤S122_7中,笔画模型构建部122_3组装所生成的点对象以形成新笔画对象210或者更新原有笔画对象210。
图77B描述图77A的S122_3的详细算法,其中,附加点被生成并附加到笔画的起始和/或结束。如所示,取决于正被处理的点的阶段,能够执行不同的算法。点的阶段指示该点相对于该点所属于的笔画的位置。例如,如果阶段是指示点为笔画的起始点的“起始”(“结束”是类似的,指示笔画的结束点),则在S122_4(对于“结束”阶段来说为S122_5)中,生成并附加了一个或多个(例如,3个)点以形成笔画的起始(结束)。与图77A中的S122_7类似,在S122_4(S122_5)中生成并添加的点对象的位置值可以取决于在S122_6中加载的配置中所指定的插值方法(例如,Catmull-Rom样条方法)。如果阶段是指示点在笔画的中间段中的“中间”,则不为该点生成附加点。
<MD(元数据):用于生成元数据对象的设备/方法>
图78是图75的元数据对象处理部124的功能框图。元数据对象处理部124包括接收上下文信息(“输入2”)并且从其中提取诸如作者ID、位置等的元数据的元数据生成部124-1。这样的元数据中的至少一些被布置到配置中并发送到元数据处理部124_2,所述元数据处理部124_2依据配置来处理从笔画对象处理部122接收的笔画对象210。元数据对象250将被生成来描述所接收到的笔画对象210。元数据处理部124_2从所接收到的笔画对象210中提取诸如时间信息的元数据并且将所提取的元数据发送到元数据构建部124_3。元数据生成部124_1还向元数据构建部124_3发送从上下文信息中提取的静态配置。通常,静态配置是整个绘图所公共的。元数据构建部124_3基于从元数据生成部124_1和元数据处理部124_2接收的元数据来构建元数据对象250。
图79是图示生成元数据对象250的过程的流程图。在S124_1中元数据生成部124_1和元数据处理部124_2从它们相应的输入中提取元数据,诸如笔ID、时间戳等。在S124_2中,所提取的作为应用上下文信息的元数据被加载到元数据构建部124_3。在S124_3中,确定了正被处理的点的阶段。如果点是笔画对象210的起始点,则元数据对象250被生成并且与该点相关联。因为通常每个笔画对象210需要仅一个元数据对象250,所以元数据对象250不必被生成并与除起始点以外的点的其余部分相关联。
<R(栅格化):用于生成呈现(绘图风格)对象的设备/方法>
图80是图75的呈现(绘图风格)对象处理部126的功能框图。呈现对象处理部126包括风格生成部126_1,所述风格生成部126_1接收上下文信息(“输入2”)并且提取诸如最小/最大半径信息、最小/最大速率信息、最小/最大压力信息、颜色信息等的信息。这样的信息中的至少一些被布置到配置中并发送到风格处理部126_2,所述风格处理部126_2依据配置来处理从笔画对象处理部122接收的笔画对象210。绘图风格对象230将被生成来定义如何绘制(呈现)所接收到的笔画对象210。风格处理部126_2从所接收到的笔画对象210和配置中提取风格相关参数,诸如(可变)半径、(可变)颜色、(可变)alpha(透明度)以及抗混叠参数,并且将所提取的信息发送到风格构建部126_3。风格生成部126_1还向风格构建部126_3发送从上下文信息中提取的静态配置。通常,静态配置是整个绘图所公共的。例如,如果绘图中的所有笔画具有相同的构图混合模式,则模式值是静态配置。
图81是图示生成风格对象的过程的流程图。在步骤S126_1中,风格处理部126_2基于笔画对象210以及可从应用得到的上下文信息来确定输入特性,诸如压力数据、时间戳数据、位置数据等。在S126_2中适合的配置是取决于在步骤S126_1中确定的特性而加载的。例如,如果应用中选择的工具是原子笔并且输入特性包含压力数据,则加载基于压力的原子笔的配置。作为另一示例,如果选择的工具是原子笔并且输入特性不包含压力数据但是包括时间戳,则加载基于速率的原子笔的配置(因为能够从时间戳信息得到速率)。在步骤S126_3中检查已加载的配置以确定宽度(或颜色)是否是可变的。然后在步骤S126_4中确定了宽度(或颜色)是否每点可变,意味着笔画能够具有沿着其长度而变化的宽度或颜色。如果“是”,则在S126_5中按每个点对象生成级联风格特性半径(和/或颜色)。否则在S126_6中为笔画对象210生成级联风格特性。
可选级联特性的另一示例是增建(build up)特性。增建特性被用来在输入装置处于静态位置和向下状态两者时模拟额外的墨水溢出量。针对这个特性的真实世界模拟是水彩画笔在软纸上的行为。当水彩画笔处于静态位置中时,软纸浸入颜料并因此接触点变得更暗且更大。如果所输入的笔画对象210满足由在S126_2中加载的配置所指定的增建条件,则在步骤S126_7中为每个点对象生成增建特性。例如,如果用户在向下状态下不产生任何移动并且在已加载的配置中激活了增建算法,则当前(最后生成的)点被复制或者更新,以增加此特定位置中的点密度。
可以取决于S126_2中加载的配置在S126_8之前执行与先前描述的步骤类似的其它步骤。在步骤S126_8中,生成风格对象。在步骤S126_5、S126_6和S126_7中更新的所有的级联风格特性及其它级联风格特性在S126_8中被组装成风格对象。
<M(操纵):用于生成操纵对象的设备/方法>
图82是图75的操纵对象处理部128的功能框图。操纵对象处理部128包括接收并处理上下文信息(“输入2”)以准备用于由操纵处理器128_2使用的配置的操纵器生成部128_1。操纵处理器部128_2参考从操纵器生成部128_1接收的配置并且还参考从应用接收的操纵信息(“输入3”)来处理笔事件数据(“输入1”),以从而生成操纵实体,诸如切片实体。操纵构建器128_3接收操纵实体(诸如切片实体),并且构建操纵对象,诸如切片对象274。操纵对象被配置成对原有笔画对象210执行定义操作。例如,切片对象274被用来将原有笔画对象210切片为两个切片片。由操纵构建器128_3生成的操纵(例如,切片)对象的合集可以通过网络被发送来在远程存在的原有笔画对象上执行,或者可以在本地在笔画对象处理部122中生成并存储的原有笔画对象上执行。如所图示的,操纵处理器128_2还可以从笔画对象处理部122接收生成操纵实体所基于的笔画对象。
图83A是图示生成操纵对象的过程的流程图。在步骤S128_1中从输入1和输入中提取输入特性,诸如压力、位置和时间戳信息,并且还接收操纵信息(输入3)。在步骤S128_2中,加载适合的配置,其中,该配置是根据所提取的输入特性和应用上下文信息(“输入2”)来确定的。在步骤S128_3中,根据已加载的配置来处理新输入并且将形成操纵对象。例如,如果新输入是多边形形状,则该多边形形状定义操纵区域。例如,如果要生成的操纵对象是套索工具,则多边形形状定义该套索工具的范围。在S128_4中从多个原有笔画对象中选择一个原有笔画对象210,并且在S128_5中,计算所选择的原有笔画对象210与操纵区域(例如,多边形形状)之间的任何交点。如果在S128-7中未找到交点,则选择另一原有笔画对象210并且重复步骤S128_4、S128_5和S128_6,直到找到与一个原有笔画的至少一个交点为止。当在S128-7中找到原有笔画对象210与操纵区域之间的交点时,生成被配置成在交点处将原有笔画对象210“切片”的切片操作对象。在S128_14中确定了是否存在操纵区域可以与其相交的更多的原有笔画对象。如果“是”,则过程返回到步骤S128_4。如果所有的原有笔画对象是为它们与操纵区域的交点而检查的,则在S128_15中所生成的切片对象被组装成切片对象的合集。
图83B是图示生成切片对象的过程的流程图。在S128_8中,在S128_2中加载的配置被用来确定“操纵准确度”。如果操纵准确度是“整个笔画”,则在S128_9中生成切片对象274,这将原有笔画对象210切片以生成两个切片片,其中,这些片中的每一个由形成原有笔画对象210的原始点对象的子集来定义。换句话说,即便当与操纵区域的交点位于原有笔画对象210的两个相邻点对象之间时,交点的确切位置也未被用来定义两个切片片。
如果操纵准确度是“确切点”,则在S128_10中,找到两个相邻点对象之间的已相交的(曲线)段,其中,已相交的段是操纵区域和原有笔画对象210相交的地方。找到一个或多个相交的段。例如,在S128_11中已相交的段中的每一个被处理以使用插值方法来找到交点的确切位置。在S128_12中,针对每个相交的段,生成两个切片片,每个都具有交点的确切位置作为结束位置或起始位置。在S128_13中所生成的切片片被更新来分别成为新笔画对象,并且重新创建的笔画对象中的每一个与元数据对象250和绘图风格对象230相关联。
如上所述,墨水数据处理部100及其关联的方法生成笔画对象以及与笔画对象210相关联的对象,包括元数据对象250、栅格化绘图风格对象230以及操纵对象270。
现在参考图84-90C描述墨水数据格式化部140的配置和操作。
图84是图75的墨水数据格式化部140的功能框图。如参考图75上面所描述的,墨水数据格式化部140包括以诸如SFF、InkML和JPEG格式的记录格式输出文件的记录格式数据处理部142以及以传输格式输出各种对象(笔画对象210、元数据对象250、绘图风格对象230以及操纵对象270)的墨水数据通信部144。因此,能够依据笔画语言来生成并再现能够被以各种记录格式和/或传输格式输入和输出的各种对象。
记录格式数据处理部142被配置成以记录格式布置笔画对象、元数据对象和绘图风格对象。子部142-1、142-2等是被配置成依据相应的输出文件格式来布置对象的处理部。
墨水数据通信部144以适合于通过网络(实时)传输到远程装置的笔画消息格式布置操纵对象,诸如切片对象274。能够对在本地存在或者可以通过网络远程地存在的任何原有笔画对象执行以传输格式布置的操纵对象。
图85是图示在墨水数据格式化部140中执行的过程的流程图。首先,确定了是否需要发送对象。可以基于在目前在本地构造的笔画对象210是否与任何远程终端共享来做出确定。如果是,则在步骤S144中,对象被以笔画消息格式(SMF)布置成通过网络来发送。另一方面,如果确定了将不发送对象,则以从多个记录格式中选择的适合的记录格式布置对象。如果笔画文件格式(SFF)将被用作输出格式,则在步骤S142-1中执行SFF生成过程。如果将使用诸如SVG和JPEG格式的其它格式,则在步骤S142-2中,例如,执行SVG生成过程以基于SVG的扩展输出包括笔画语言信息的SVG格式文件。
图86是图示输出笔画文件格式(SFF)数据的过程的流程图。在S142-1-1中,SFF结构描述文件(F142-1-1)被解析以生成SFF结构。使用接口描述语言来描述SFF结构。使用SFF的每个软件应用需要理解(解析)描述文件以便适当地利用SFF数据工作。例如,如果使用协议缓冲器IDL来表达SFF结构,则在S142-1-1中加载由协议缓冲器编译器所生成的存根类。在S142-1-2中,SFF结构用在图75的墨水数据生成部120中生成的各种对象填充。在S142-1-3中SFF结构使用用于抽象数据类型的最佳内存表示的各种技术,诸如可变整数编码技术和指数Golomb代码技术来处理。在S142-1-4中,所生成的SFF结构的内存表示被包装成内存流。可以将所生成的内存流保存在文件系统或文件结构中。
S142-1-2可以包括用于适当地填充SFF数据结构的多个步骤。针对包括在正被处理的墨水数据中的每个笔画对象210(S142-1-5)并且针对包括在正被处理的笔画对象210中的每个点对象(S142-1-6),确定了是否将执行压缩操作。如果“是”,则在S142-1-7中所有浮点值被转换为定点精度值并表示为整数。能够通过将点对象浮点值舍入到所期望的精度来在笔画对象处理部122中或者在呈现对象处理部126中对精度的任何损失进行补偿。在S142-1-8中对所生成的整数值应用压缩算法,诸如增量编码。在S142-1-9中,在应用压缩的情况下已经历压缩过程的对象被用来填充SFF结构。
图87是图示输出JPEG格式数据的过程的流程图。针对包括在正被处理的墨水数据中的每个笔画对象210(S142-2-1),在S142-2-2中检索与笔画对象210链接的所有绘图风格对象并且加载绘图风格对象中所定义的所有栅格化(绘图)特性(例如,混合和纹理特性)。这时所有级联值,诸如颜色和半径值,被分解。在S142-2-3中使用CPU或GPU来生成笔画的几何形状。在S142-2-3中使用CPU或GPU通过对所生成的几何形状应用所有栅格化/图形信息(诸如颜色、纹理等)来栅格化(绘制)笔画。在S142-2-5中一起组成所有栅格化笔画。在S142-2-6中生成包含如呈现(绘制、栅格化)的所有的笔画对象的位图。在S142-2-7中使用JPEG算法来压缩位图数据。
图88是图示输出笔画消息传送格式(SMF)数据的过程的流程图。在S144-1中从图75的对象处理部122、124、126或128中的一个接收对象。在S144-2中对象类型被确定为笔画对象210、元数据对象250、绘图风格对象230或操纵对象。在S144-3中标识符(例如,笔画ID、风格ID)被指派给对象以指示该对象与正被处理的墨水数据200中的其余对象之间的连接。在S144-4中解析SMF结构描述文件(F144-4)并且加载与所确定的对象类型对应的SMF结构。例如,如果使用协议缓冲器IDL来表达SMF结构,则加载由协议缓冲器编译器所生成的存根类。在S144-5中,确定了是否将对所确定的对象执行压缩操作。如果“是”,则在S144-6中所有浮点值(例如,x、y、半径、不透明度、透明度)被转换为定点精度值并表示为整数。在S144-7中对所生成的整数值应用压缩算法,诸如增量编码。在S144-8中,在应用压缩的情况下已经历压缩过程的对象被用来填充SMF结构。在S144-9中SMF数据被保存到内存流中。
图89是说明已经以各种文件格式和传输格式输出的数据(SFF/JPEG和SMF)的输入处理的功能框图。
在图89中,在左手侧图示的墨水数据输出处理部140T执行上面所描述的输出处理。墨水数据200被以诸如SFF格式和JPEG格式的记录格式或者以诸如SMF格式的传输格式输出。
以各种格式输出的这些文件和/或消息然后可以由在图89的右手侧图示的墨水数据输入处理部140R输入(接收)。在各种实施例中,在共享相同库的相同处理部中,诸如在相同的子部142-1(既输入又输出)和子部142-2(既输入又输出)中,执行墨水数据输入处理和墨水数据输出处理。
墨水数据输入处理部140R中的记录格式数据处理部142从所输入的数据中去除格式相关的数据,提取有关各种类型的墨水数据对象的信息,并且将所提取的有关墨水数据对象的信息输出给接收侧的墨水数据生成部120。
墨水数据输入处理部140R中的墨水数据通信部144R从所接收到的分组或消息中提取操纵对象,并且指导每个提取的操纵对象在接收侧的墨水数据生成部120中对原有笔画对象执行(应用)每个提取的操纵操作。
图90A是用于解释并再现布置在SFF文件中的对象的过程的流程图。在S142-1(IN)-1中,SFF结构描述文件被解析以生成SFF结构。在S142-1(IN)-2中SFF结构被解包。一个或多个SFF结构被解包,并且针对经解包的SFF结构中的每一个(S142-1(IN)-3),确定了经解包的SFF结构是否被压缩了。如果“是”,则在S142-1(IN)-4中,经解包的SFF结构被解压缩,并且在S142-1(IN)-5中,被表示为整数的解压缩的定点值被转换回为浮点表示。在S142-1(IN)-6中,创建对应的笔画语言对象(例如,笔画对象210、绘图风格对象230、元数据对象250)。
图90B是用于基于InkML的输入来解释并再现对象的过程的流程图。在S142-2(IN)-1中,InkML文件被解析并加载在内存中。在S142-2(IN)-2中迹线对象被转换为指示体输入事件样本。这个过程涉及提取输入数据,诸如位置、压力、角度、倾斜和时间戳数据,以及将所提取的输入数据建模成指示体输入事件序列。在步骤S142-2(IN)-3中指示体输入事件序列被传递给笔画对象处理部122,所述笔画对象处理部122还接收基于包含在InkML文件中的数据的上下文信息(例如,是否存在压力通道)。笔画对象处理部122生成笔画对象。在步骤S142-2(IN)-5中,元数据对象处理部124生成元数据对象。在步骤S142-2(IN)-4中,栅格化(绘图风格)对象处理部126生成绘图风格对象。
图90C是图示在SMF中接收并执行操纵(切片)对象的过程的流程图。在S144-1中接收SMF的切片对象274的合集。在S144-2中切片对象274被解包。在S144-3中原有笔画对象被遍历以定位受在S144-2中解包的切片对象274影响的笔画对象。在S144-4中受影响的笔画对象被遍历。在S144-5中每个受影响的笔画对象210使用所对应的切片对象来修改(切片)。所对应的切片对象中所指定的点范围内的所有点对象被去除(擦除)。在S144-6中,如果需要则创建一个或两个新笔画对象。例如,如果经去除的点对象是在被切片的笔画对象210中间,则原始笔画对象210的起始部分可以形成新笔画对象210并且原始笔画对象210的结束部分可以形成另一新笔画对象210。在S144-8中切片对象被检查以确定是否应该修改受影响的笔画的风格特性。如果应该修改风格特性,则S144-9为重新创建的笔画对象设定新风格特性值。否则S144-7简单地将原始笔画对象210的风格特性值复制到重新创建的笔画对象上。同一过程适用于元数据。如果应该修改元数据,则S144-11对重新生成的笔画对象应用新元数据。否则S144-10简单地将原始笔画对象210的元数据复制到重新创建的笔画对象上。在S144-12中可以将原始笔画对象210的startParameter 301和endParameter 303的值复制到重新创建的笔画对象上。针对所有受影响的笔画对象重复上面所描述的过程。在S144-13中执行检查以确定是否需要重绘当前画面。如果“是”,则在S144-14中在修改区域中的已被切片对象274中的一个或多个切片的笔画对象被绘制(呈现)在屏幕上。
实施例1-4的效果
图91是说明使用图75的墨水数据200处理装置(101)来解决上面所描述的方面一的效果的图。根据本发明的各种实施例的操纵对象允许使用传输格式来发送操纵操作内容,以从而容易地使位于多个位置处的笔画对象的状态同步。例如,假定在图91的左手侧的一个装置以及在图91的右手侧的两个装置(分别对应于图1和图73中的装置10-1-1、10-1-2、10-1-3)正在执行实时协作应用。还假定装置正在共享尚未被切片的要处理的笔画对象210。然后,根据本发明的实施例以下操作是可能的。
1.首先,在左手侧的装置对具有定义笔画宽度WIDTH的笔画对象210执行切片操纵操作。
2.接下来,墨水数据200处理装置101(操纵对象处理部128)基于切片操纵操作来生成操纵对象。
3.接下来,墨水数据处理装置101通过对本地笔画对象210执行切片操纵操作来修改其本地笔画对象210(参见图75中的“本地”箭头)。可以在以上步骤2之前或者与以上步骤2并行执行这个过程。
4.接下来,墨水数据处理装置101(墨水数据通信部144)将操纵对象格式化在SMF数据中并且将该SMF数据发送到网络(参见图75中的“远程”箭头)。
5.在SMF数据中接收到操纵对象的装置10-1-2和10-3提取与该操纵对象相关联的笔画ID,并且对由所提取的笔画ID标识的笔画对象中的每一个执行操纵操作(切片操作)。结果,在左手侧的装置#1和右手侧的装置10-1-2和10-3之中使由所提取的笔画ID标识的笔画对象的(切片)状态同步。
因此,根据本发明的实施例的墨水数据处理方法能够实时地或者在不同时间跨越两个远程定位的装置之间的网络既在本地又远程动态地操纵笔画数据。
图92是说明使用图75的墨水数据处理装置(101)来解决上面所描述的方面二的效果的图。
图92的左手侧示出输入侧的装置相关的原始数据,并且图92的右手侧示出要作为最终产品包括在输出文件中的数据。左手侧示出能够被用来生成笔画的四种类型的输入数据,如下:
1.由类型1装置,即诸如结合电容型触摸传感器的装置的更简单装置,所获得的一系列点坐标。
2.由能够获得笔压力信息的类型2装置所获得的一系列点坐标以及一系列笔压力信息。
3.例如,如可通过用来生成计算机图形的专业级硬件和应用的组合获得的、包括诸如笔旋转角度、笔压力、X方向笔倾斜角度、Y方向笔倾斜角度的各种细节的类型N数据。
4.可以表示方位角、高程和笔定向信息的标准化数据,诸如InkML。
如参考方面二上面所描述的,一般而言,需要基于手绘输入数据再现的信息不是手绘数据“如何”被输入,诸如以什么角度保持笔(触针)并且施加了多少笔压力等。相反,需要再现的信息是这样的笔操作的“结果”,其包括通过笔操作生成的一个或多个笔画。因此,期望使用使手绘输入数据变得尽可能抽象和广义,即尽可能多地处理在图92的右手侧的手绘输入数据的笔画模型。这样的笔画模型然后能够吸收可能存在于以各种特定(非抽象)方式记录“如何”的不同装置之中的差异。
图92的远右手侧示出作为根据本发明的实施例的墨水数据处理的最终产品包括在图像文件中的数据结构或文件格式。图92的中间部分示出适合于在诸如文本化、签名验证、调绘和实时协作应用的各种应用中使用的、可以从根据本发明的实施例的墨水数据200处理产生的中间向量数据。中间向量数据包括以输入无关的方式,即以不面向笔输入的方式定义向量图形的原有SVG数据(D3)。因此,SVG不容易允许变化或者调整诸如笔画宽度、笔画颜色和笔画透明度的面向笔的数据,并且结果,不特别适合于标记(表征)笔画数据。另一方面,根据本发明的实施例的基于笔画语言(SL)的中间向量数据提供被配置成标记、表征或者操作从原始输入数据得到的笔画对象的各种对象,诸如元数据对象、呈现对象和操纵对象。
图93是说明使用图75的墨水数据处理装置(101)来解决上面所描述的方面三的效果的图。未束缚于特定格式但是可以与各种格式一起使用的公共笔画语言(或定义语言语义和语法的公共信息模型)的提供允许延长墨水数据生态系统的生存期。在图93中,100-1、100-2…100-N表示其中嵌入了根据本发明的实施例的墨水数据处理方法的不同应用。当原始“输入数据”被输入到应用100-1(图93中的“步骤1”)时,应用100-1的墨水数据生成部120用笔画语言(或定义笔画语言的信息模型)使原始输入数据抽象化成对象。对象然后被转换为记录格式或传输格式(“第一格式”或所图示的示例中的SVG)并输出(图93中的“步骤2”)。应用100-2接收并解释SVG的数据以用笔画语言提取对象以供呈现或操纵。应用100-2可以以另一记录格式或传输格式(“第二格式”或图93的“步骤3-2”中的SFF)对对象进行格式化。然后输出SFF的数据以由应用100-N接收,所述应用100-N解释SFF的数据以用笔画语言提取对象以供呈现或操纵。应用100-N可以以又一种记录格式或传输格式(“第三格式”或位图)对对象进行格式化以被输出。因此,与例如使用单一格式来处理墨水数据结构的(D5)中的JOT相比,本发明的实施例能够以各种格式处理墨水数据,从而延长墨水数据200的生存期。在图93的所图示的示例中,墨水数据200可由应用100-1、由应用100-2并且由包括最后应用100-N的另外的应用使用。
本领域的技术人员应该了解,取决于每个实施方式和应用,上面所描述的元件、装置、步骤和过程中的每一个可以与其它元件、装置、步骤和过程组合,或者可以被进一步划分成子元件、子装置、子步骤和子过程。更进一步地,取决于每个实施方式和应用,可以在单个处理器中执行这些步骤和过程,或者可以在多个处理器中分布地执行这些步骤和过程。

Claims (13)

1.一种墨水数据输出方法,是输出墨水数据的方法,其中,包括:
生成步骤,基于伴随指示体的移动而检测到的位置数据,来生成通过预定的曲线插值来表示所述移动的轨迹的控制点数据;
导出步骤,判定所述位置数据是否伴有笔压数据,在所述位置数据伴有笔压数据的情况下基于所述笔压数据来导出所述控制点数据所形成的曲线的宽度数据,在所述位置数据不伴有笔压数据的情况下基于所述位置数据的位移量来导出所述控制点数据所形成的曲线的宽度数据;以及
输出步骤,将所述宽度数据与所述控制点数据建立关联而输出点数据。
2.根据权利要求1所述的墨水数据输出方法,其中,
在所述输出步骤中,将所述控制点数据的所表示的位置坐标和所述宽度数据包含于1个所述点数据而输出。
3.根据权利要求2所述的墨水数据输出方法,其中,
在所述输出步骤中,将多个所述点数据包含于1个笔画数据而输出。
4.根据权利要求3所述的墨水数据输出方法,其中,
被输出了的所述笔画数据是线宽度基于所述宽度数据而变化的可变宽度的笔画数据。
5.根据权利要求1所述的墨水数据输出方法,其中,
在所述导出步骤中,在所述位置数据不伴有笔压数据的情况下,基于所述位置数据的位移量和与所述位置数据相关的时刻信息来导出所述宽度数据。
6.根据权利要求3所述的墨水数据输出方法,其中,
所述导出步骤包括函数步骤,
在所述函数步骤中,基于所述位置数据和与所述位置数据相关的时刻信息,来导出构成所述笔画数据的所述多个点数据的各个的与速度对应的参数,使用在所述与速度对应的参数增加时所述宽度数据的值减小的函数,来决定所述宽度数据。
7.根据权利要求6所述的墨水数据输出方法,其中,
在所述函数步骤中,根据所述指示体的类型,来从具有不同的特征的多个函数中选择所述函数。
8.根据权利要求7所述的墨水数据输出方法,其中,
在所述函数步骤中,针对所述笔画数据所包含的最初的点数据及最后的点数据,以与根据所述函数而决定的值不同的方式决定所述宽度数据。
9.根据权利要求1所述的墨水数据输出方法,其中,
在所述位置数据伴有笔压数据的情况下,基于所述位置数据的位移量及所述笔压数据来导出所述宽度数据。
10.根据权利要求1所述的墨水数据输出方法,其中,
所述预定的曲线插值是Catmull-Rom曲线插值。
11.一种墨水数据输出装置,输出墨水数据,其中,执行如下步骤:
生成步骤,基于伴随指示体的移动而检测到的位置数据,来生成通过预定的曲线插值来表示所述移动的轨迹的控制点数据;
导出步骤,判定所述位置数据是否伴有笔压数据,在所述位置数据伴有笔压数据的情况下,基于所述笔压数据来导出所述控制点数据所形成的曲线的宽度数据,在所述位置数据不伴有笔压数据的情况下,基于所述位置数据的位移量来导出所述控制点数据所形成的曲线的宽度数据;以及
输出步骤,将所述宽度数据与所述控制点数据建立关联而输出点数据。
12.一种墨水数据输出方法,输出包含用于再现指示体的移动的轨迹的笔画数据的墨水数据,其中,包括:
生成步骤,基于伴随所述指示体的移动而检测到的位置数据,来生成用于通过使用了Catmull-Rom曲线的插值来表示所述移动的轨迹的控制点数据;
导出步骤,判定所述位置数据是否伴有笔压数据,在所述位置数据伴有笔压数据的情况下,基于伴随所述位置数据而取得的笔压数据,来导出所述控制点数据的位置处的宽度数据,在所述位置数据不伴有笔压数据的情况下,基于所述位置数据的位移量来导出所述控制点数据的位置处的宽度数据;以及
输出步骤,通过输出包含多个点数据的笔画数据,来输出可变宽度的所述笔画数据,所述点数据包含所述控制点数据的位置和所述宽度数据。
13.根据权利要求12所述的墨水数据输出方法,其中,
所述控制点数据的位置处的曲线的宽度数据作为所述控制点数据的位置的半径数据而表示。
CN201910047465.5A 2013-11-19 2014-11-19 墨水数据输出方法及墨水数据输出装置 Active CN110109558B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201361906334P 2013-11-19 2013-11-19
US61/906,334 2013-11-19
US201361908647P 2013-11-25 2013-11-25
US61/908,647 2013-11-25
US201461973161P 2014-03-31 2014-03-31
US61/973,161 2014-03-31
US201462042747P 2014-08-27 2014-08-27
US62/042,747 2014-08-27
CN201480062786.8A CN106170748B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480062786.8A Division CN106170748B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统

Publications (2)

Publication Number Publication Date
CN110109558A CN110109558A (zh) 2019-08-09
CN110109558B true CN110109558B (zh) 2020-12-08

Family

ID=53179215

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201480062786.8A Active CN106170748B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统
CN201480062807.6A Active CN105765502B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统
CN201480062875.2A Active CN105765503B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统
CN201910047465.5A Active CN110109558B (zh) 2013-11-19 2014-11-19 墨水数据输出方法及墨水数据输出装置
CN201480062846.6A Active CN105745608B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN201480062786.8A Active CN106170748B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统
CN201480062807.6A Active CN105765502B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统
CN201480062875.2A Active CN105765503B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480062846.6A Active CN105745608B (zh) 2013-11-19 2014-11-19 用于墨水数据生成、墨水数据呈现、墨水数据操纵以及墨水数据通信的方法和系统

Country Status (7)

Country Link
US (17) US9448648B2 (zh)
EP (4) EP3072038B1 (zh)
JP (20) JP6937575B2 (zh)
KR (2) KR102255050B1 (zh)
CN (5) CN106170748B (zh)
BR (1) BR112016009938B1 (zh)
WO (4) WO2015075933A1 (zh)

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8594740B2 (en) 2008-06-11 2013-11-26 Pantech Co., Ltd. Mobile communication terminal and data input method
WO2014205632A1 (en) * 2013-06-24 2014-12-31 Adobe Systems Incorporated Gravity point drawing method
KR102255050B1 (ko) 2013-11-19 2021-05-25 가부시키가이샤 와코무 잉크 데이터의 생성, 잉크 데이터의 렌더링, 잉크 데이터의 조작, 및 잉크 데이터의 전달을 위한 방법 및 시스템
CN105183333A (zh) * 2014-06-12 2015-12-23 福建福昕软件开发股份有限公司北京分公司 一种显示画布上的笔画的方法
WO2015192270A1 (zh) * 2014-06-19 2015-12-23 福建福昕软件开发股份有限公司北京分公司 一种在pdf文件中显示笔迹的方法
DE202015006142U1 (de) 2014-09-02 2015-12-09 Apple Inc. Elektronische Touch-Kommunikation
WO2016157400A1 (ja) 2015-03-31 2016-10-06 株式会社ワコム インクファイルの出力方法、出力装置、及びプログラム
US9740310B2 (en) * 2015-05-22 2017-08-22 Adobe Systems Incorporated Intuitive control of pressure-sensitive stroke attributes
WO2016208396A1 (ja) 2015-06-23 2016-12-29 株式会社リコー 通信端末、管理システム、通信システム、表示方法、及びプログラム
US9898841B2 (en) * 2015-06-29 2018-02-20 Microsoft Technology Licensing, Llc Synchronizing digital ink stroke rendering
JP6503945B2 (ja) * 2015-07-13 2019-04-24 富士通株式会社 情報処理装置、並列計算機システム、ファイルサーバ通信プログラム及びファイルサーバ通信方法
US10739911B2 (en) * 2015-09-30 2020-08-11 Apple Inc. Unified drawing framework
JP6746090B2 (ja) * 2015-10-06 2020-08-26 大日本印刷株式会社 線分入力システム
US10324618B1 (en) * 2016-01-05 2019-06-18 Quirklogic, Inc. System and method for formatting and manipulating digital ink
US10755029B1 (en) 2016-01-05 2020-08-25 Quirklogic, Inc. Evaluating and formatting handwritten input in a cell of a virtual canvas
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
US10228775B2 (en) * 2016-01-22 2019-03-12 Microsoft Technology Licensing, Llc Cross application digital ink repository
US20170221449A1 (en) * 2016-01-28 2017-08-03 Tesseract Dev Sp. z o.o. Remote and comparative display of a graphic art with color accuracy simulation in a standard web browser
JP6668386B2 (ja) * 2016-02-05 2020-03-18 株式会社ワコム 電子ペン
US10049289B2 (en) * 2016-02-12 2018-08-14 Wacom Co., Ltd. Method and system for generating and selectively outputting two types of ink vector data
US9792517B2 (en) 2016-02-12 2017-10-17 Wacom Co., Ltd. Method and system for generating and selectively outputting two types of ink vector data
US20170236318A1 (en) * 2016-02-15 2017-08-17 Microsoft Technology Licensing, Llc Animated Digital Ink
US10120187B2 (en) * 2016-02-18 2018-11-06 Nvidia Corporation Sub-frame scanout for latency reduction in virtual reality applications
CN105760019B (zh) * 2016-02-22 2019-04-09 广州视睿电子科技有限公司 基于交互式电子白板的触摸操作方法及其系统
US10269143B2 (en) 2016-03-25 2019-04-23 Microsoft Technology Licensing, Llc Multiple texture variable opacity stroke rendering and blending
US10347011B2 (en) * 2016-04-01 2019-07-09 Microsoft Technology Licensing, Llc. Ink effects
KR101737065B1 (ko) * 2016-04-14 2017-05-29 오스템임플란트 주식회사 펜차팅 시스템, 방법 및 컴퓨터 판독 가능한 저장 매체
DK201670596A1 (en) * 2016-06-12 2018-02-19 Apple Inc Digital touch on live video
US10614607B2 (en) * 2016-06-12 2020-04-07 Apple Inc. Playback of handwritten message
US11037342B1 (en) * 2016-07-31 2021-06-15 Splunk Inc. Visualization modules for use within a framework for displaying interactive visualizations of event data
US10459939B1 (en) 2016-07-31 2019-10-29 Splunk Inc. Parallel coordinates chart visualization for machine data search and analysis system
US10853380B1 (en) 2016-07-31 2020-12-01 Splunk Inc. Framework for displaying interactive visualizations of event data
US10861202B1 (en) 2016-07-31 2020-12-08 Splunk Inc. Sankey graph visualization for machine data search and analysis system
US10459938B1 (en) 2016-07-31 2019-10-29 Splunk Inc. Punchcard chart visualization for machine data search and analysis system
CN106325737B (zh) * 2016-08-03 2021-06-18 海信视像科技股份有限公司 一种书写路径擦除方法及设备
CN106295912B (zh) * 2016-08-30 2021-10-22 成都科来网络技术有限公司 一种基于业务逻辑对交易路径配置、展现的方法及装置
US10817169B2 (en) * 2016-10-14 2020-10-27 Microsoft Technology Licensing, Llc Time-correlated ink
US10915185B2 (en) * 2016-10-31 2021-02-09 Hewlett-Packard Development Company, L.P. Generating a three-dimensional image using tilt angle of a digital pen
WO2018124209A1 (ja) * 2016-12-30 2018-07-05 株式会社ワコム デジタルインクの符号化方法、復号化方法
US10248226B2 (en) 2017-02-10 2019-04-02 Microsoft Technology Licensing, Llc Configuring digital pens for use across different applications
US10627910B2 (en) * 2017-02-21 2020-04-21 Adobe Inc. Stroke operation prediction for three-dimensional digital content
US10134158B2 (en) * 2017-02-23 2018-11-20 Microsoft Technology Licensing, Llc Directional stamping
RU2677573C2 (ru) 2017-04-05 2019-01-17 Общество С Ограниченной Ответственностью "Яндекс" Система и способ дополнения изображения стилизованными свойствами
US10657682B2 (en) 2017-04-12 2020-05-19 Adobe Inc. Drawing curves in space guided by 3-D objects
US20180300302A1 (en) * 2017-04-15 2018-10-18 Microsoft Technology Licensing, Llc Real-Time Collaboration Live Ink
US10469274B2 (en) 2017-04-15 2019-11-05 Microsoft Technology Licensing, Llc Live ink presence for real-time collaboration
US10409481B2 (en) * 2017-06-06 2019-09-10 Polycom, Inc. Adaptive inking in an electronic presentation system
WO2018225204A1 (ja) 2017-06-08 2018-12-13 株式会社ワコム ポインタの位置検出方法
US10783322B2 (en) * 2017-09-29 2020-09-22 Microsoft Technology Licensing, Llc Enhanced digital ink erasing
US10489642B2 (en) * 2017-10-12 2019-11-26 Cisco Technology, Inc. Handwriting auto-complete function
US10564741B2 (en) * 2017-10-19 2020-02-18 Microsoft Technology Licensing, Llc Active stylus pairing with a digitizer
US10545740B2 (en) * 2017-10-25 2020-01-28 Saudi Arabian Oil Company Distributed agent to collect input and output data along with source code for scientific kernels of single-process and distributed systems
CN107909537B (zh) * 2017-11-16 2020-11-06 厦门美图之家科技有限公司 一种基于卷积神经网络的图像处理方法及移动终端
US10810769B2 (en) * 2017-11-27 2020-10-20 Adobe Inc. Continuous-curvature rational curves for drawing applications
WO2019109231A1 (zh) * 2017-12-04 2019-06-13 深圳市柔宇科技有限公司 一种书写笔划的处理方法及相关设备
US10573033B2 (en) * 2017-12-19 2020-02-25 Adobe Inc. Selective editing of brushstrokes in a digital graphical image based on direction
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
WO2019124275A1 (ja) * 2017-12-21 2019-06-27 村田機械株式会社 通信システムの制御方法、通信システム、及び、中継装置
EP3738074A4 (en) * 2018-01-08 2021-10-13 Immersion Networks, Inc. PROCESSES AND APPARATUS FOR THE PRODUCTION OF REGULAR REPRESENTATIONS OF A MOVEMENT OF ENTRY IN TIME AND SPACE
CN108280864B (zh) * 2018-01-24 2022-11-11 福建升腾资讯有限公司 一种用于优化动态显示手写电子签名过程的方法
TWI657369B (zh) * 2018-03-08 2019-04-21 和碩聯合科技股份有限公司 傳送連續資料的方法及資料傳輸系統
US10380769B1 (en) * 2018-03-14 2019-08-13 Adobe Inc. Arrangement of drawing objects along arbitrary paths
CN110297568A (zh) * 2018-03-22 2019-10-01 阿里巴巴集团控股有限公司 电子白板实现方法、装置、设备以及存储介质
CN108564639A (zh) * 2018-04-27 2018-09-21 广州视源电子科技股份有限公司 笔迹保存方法、装置、智能交互设备及可读存储介质
CN108763320A (zh) * 2018-04-28 2018-11-06 广东蜂助手网络技术股份有限公司 一种书写笔记数据存储方法、装置、终端及存储介质
US10872199B2 (en) 2018-05-26 2020-12-22 Microsoft Technology Licensing, Llc Mapping a gesture and/or electronic pen attribute(s) to an advanced productivity action
US10579163B2 (en) * 2018-06-02 2020-03-03 Mersive Technologies, Inc. System and method of annotation of a shared display using a mobile device
CN110570501B (zh) * 2018-06-06 2023-02-14 腾讯科技(深圳)有限公司 一种线条动画绘制方法及其设备、存储介质、电子设备
CN108805120A (zh) * 2018-06-13 2018-11-13 广州视源电子科技股份有限公司 笔迹的处理方法和装置
CN108762579B (zh) * 2018-06-15 2021-09-28 广州华欣电子科技有限公司 一种多支压感笔书写笔迹的生成方法、系统及相关组件
CN109271470A (zh) * 2018-09-17 2019-01-25 中国地质调查局发展研究中心 一种地质调查gis数据处理方法及系统
US10652208B2 (en) * 2018-10-03 2020-05-12 Axonius Solutions Ltd. System and method for managing network connected devices
JP6918252B2 (ja) * 2018-11-02 2021-08-11 株式会社ワコム インクデータ生成装置、方法及びプログラム
KR102127091B1 (ko) * 2018-11-13 2020-06-25 주식회사 코닥트 로프형 승강장치
JP7238371B2 (ja) * 2018-12-06 2023-03-14 セイコーエプソン株式会社 表示装置、表示システム及び表示方法
CN111383294B (zh) * 2018-12-27 2023-10-17 杭州海康威视数字技术股份有限公司 一种安防雷达系统中防区的绘制方法及装置
US10911573B2 (en) 2018-12-28 2021-02-02 Microsoft Technology Licensing, Llc Web-based collaborative inking via computer networks
JP6616534B2 (ja) * 2019-01-25 2019-12-04 株式会社ワコム ポインタの位置検出方法及びセンサコントローラ
US11126836B2 (en) * 2019-03-28 2021-09-21 Microsoft Technology Licensing, Llc Grouping strokes of digital ink
WO2020208937A1 (ja) 2019-04-08 2020-10-15 株式会社ワコム デジタルインクを管理するホームuiシステム
JP6734502B1 (ja) 2019-04-25 2020-08-05 株式会社ワコム デジタルインク由来のコンテンツを共有するコンテンツ共有装置、方法、プログラム及びシステム
US11108406B2 (en) * 2019-06-19 2021-08-31 Intel Corporation System, apparatus and method for dynamic priority-aware compression for interconnect fabrics
US11460987B2 (en) * 2019-08-06 2022-10-04 Adobe Inc. Modifying graphical user interface processing based on interpretation of user intent
JP7373712B2 (ja) * 2019-08-19 2023-11-06 株式会社リコー 通信端末、通信システム、データ共有方法およびプログラム
JP7014757B2 (ja) * 2019-09-03 2022-02-01 株式会社ワコム ペンの位置を導出し、導出したペンの位置を示すレポートをホストコンピュータに対して送信するデバイスにより実行される方法及びタッチコントローラ。
KR102149105B1 (ko) * 2019-09-18 2020-08-27 세종대학교산학협력단 혼합현실 기반 3차원 스케치 장치 및 방법
CN110727361A (zh) * 2019-09-30 2020-01-24 厦门亿联网络技术股份有限公司 一种信息交互方法、交互系统和应用
CN110780800B (zh) * 2019-10-25 2021-03-23 河北华发教育科技股份有限公司 一种触控设备书写笔迹优化方法
US11483367B2 (en) * 2019-11-27 2022-10-25 Screenbeam Inc. Methods and systems for reducing latency on a collaborative platform
CN111124333A (zh) * 2019-12-05 2020-05-08 视联动力信息技术股份有限公司 电子白板显示内容同步的方法、装置、设备以及存储介质
CN111273807B (zh) * 2020-01-07 2024-03-29 通彩视听科技(上海)有限公司 笔迹实现与优化方法、装置与计算机设备
CN111340720B (zh) * 2020-02-14 2023-05-19 云南大学 一种基于语义分割的套色木刻版画风格转换算法
US10976867B1 (en) * 2020-03-06 2021-04-13 Wacom Co., Ltd. System and method providing pen up positioning assist for a sensor surface
TWI731650B (zh) * 2020-04-15 2021-06-21 宏碁股份有限公司 觸控筆、觸控電子裝置與觸控系統
EP4105823A4 (en) 2020-04-27 2023-08-09 Wacom Co., Ltd. INK DATA MODIFICATION METHOD, INFORMATION PROCESSING DEVICE AND PROGRAM
CN113589999B (zh) * 2020-04-30 2024-01-30 京东方科技集团股份有限公司 笔迹处理方法、笔迹处理装置、非瞬时性存储介质
CN114041111A (zh) * 2020-05-20 2022-02-11 京东方科技集团股份有限公司 笔迹绘制方法、装置、电子设备、介质和程序产品
CN111858513A (zh) * 2020-07-22 2020-10-30 深圳市昇利扬科技有限公司 一种数字墨水笔迹的数据存储格式
CN111625171B (zh) * 2020-07-28 2020-11-03 深圳市千分一智能技术有限公司 笔画显示方法、装置、设备及可读存储介质
US11256402B1 (en) * 2020-08-12 2022-02-22 Facebook, Inc. Systems and methods for generating and broadcasting digital trails of visual media
CN112052057B (zh) * 2020-08-12 2021-10-22 北京科技大学 一种基于弹簧模型优化颜色表的数据可视化方法及系统
CN115698911A (zh) * 2020-08-13 2023-02-03 株式会社和冠 墨水量算出方法、信息处理装置及程序
WO2022046046A1 (en) * 2020-08-26 2022-03-03 Hewlett-Packard Development Company, L.P. Touch pen sensor
CN114339111A (zh) * 2020-09-25 2022-04-12 华为技术有限公司 一种视频通话方法及装置
KR20220049407A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 디스플레이 장치 및 그 제어 방법
JP7200446B2 (ja) * 2020-12-16 2023-01-06 株式会社ワコム 画像処理方法
US20220206676A1 (en) * 2020-12-28 2022-06-30 Adobe Inc. Modifying drawing characteristics of digital raster images utilizing stroke properties
US11232608B1 (en) 2020-12-31 2022-01-25 Google Llc Polybezier-based digital ink strokes
CN112764616B (zh) * 2021-01-22 2021-11-26 广州文石信息科技有限公司 一种电子墨水屏手写加速方法、装置、设备及存储介质
CN112929582A (zh) * 2021-02-04 2021-06-08 北京字跳网络技术有限公司 一种特效展示方法、装置、设备及介质
US20220270312A1 (en) * 2021-02-19 2022-08-25 Apple Inc. Perspective correct vector graphics rendering techniques
KR102558566B1 (ko) * 2021-03-09 2023-07-24 (주)비케이 벡터 이미지의 재생방법
JP2023025503A (ja) * 2021-08-10 2023-02-22 株式会社ニューフレアテクノロジー データ生成方法、荷電粒子ビーム照射装置及びプログラム
CN113888546A (zh) * 2021-09-01 2022-01-04 浙江大华技术股份有限公司 手绘图形的规整方法、电子设备及存储介质
CN113448486B (zh) * 2021-09-01 2021-12-24 广州朗国电子科技股份有限公司 电子白板用笔笔锋实现方法、装置、存储介质及电子白板
US11651536B2 (en) 2021-09-16 2023-05-16 Adobe Inc. Directional pattern generation for digital images
US11704848B2 (en) * 2021-10-19 2023-07-18 Adobe Inc. Systems for generating stroked paths
CN114168060A (zh) * 2021-12-10 2022-03-11 天津洪恩完美未来教育科技有限公司 电子白板渲染方法、装置、设备和存储介质
TWI801115B (zh) * 2022-01-27 2023-05-01 宏碁股份有限公司 可提供書寫感之主動筆與觸控顯示面板及其阻尼控制方法
CN114816629B (zh) * 2022-04-15 2024-03-22 网易(杭州)网络有限公司 绘制显示对象的方法、装置、存储介质及电子装置
US20230367754A1 (en) * 2022-05-11 2023-11-16 Adobe Inc. Document co-editing using a forest representation
US20240020891A1 (en) * 2022-07-12 2024-01-18 Adobe Inc. Vector Object Jitter Application
WO2024029582A1 (ja) * 2022-08-03 2024-02-08 株式会社ワコム 判定方法、コンピュータ、及びプログラム

Family Cites Families (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60205686A (ja) * 1984-03-30 1985-10-17 Hitachi Ltd 手書き文字・図形認識システム
JP2978502B2 (ja) 1989-01-20 1999-11-15 東京電力株式会社 描画データ入力装置及び画像処理装置
JPH03171321A (ja) * 1989-11-30 1991-07-24 Hitachi Ltd 入出力装置
JP2601949B2 (ja) 1990-11-30 1997-04-23 シャープ株式会社 通信会議システム
WO1993005468A1 (en) * 1991-09-05 1993-03-18 Mark Alan Zimmer System and method for digital rendering of images and printed articulation
JP2917187B2 (ja) 1992-03-26 1999-07-12 株式会社日立情報システムズ ベクトル・データ消去方式
US5404439A (en) * 1992-04-15 1995-04-04 Xerox Corporation Time-space object containment for graphical user interface
JP3215162B2 (ja) 1992-05-25 2001-10-02 武藤工業株式会社 曲線形成方法および装置
JP3250841B2 (ja) * 1992-06-12 2002-01-28 新日鉄ソリューションズ株式会社 図形データの処理方法及び装置
JPH0696178A (ja) * 1992-09-16 1994-04-08 Hitachi Ltd 図形処理システム
US5425109A (en) * 1992-10-22 1995-06-13 Mutoh Industries Ltd. System for identifying freehand drawings
JPH06149468A (ja) * 1992-11-11 1994-05-27 Hitachi Ltd 手書き文字処理方式およびペン状態入力装置
JPH0721099A (ja) * 1993-07-03 1995-01-24 Wacom Co Ltd 手書き通信方法および手書き通信装置
JP2663857B2 (ja) * 1993-12-03 1997-10-15 日本電気株式会社 近似曲線生成装置
JP3486876B2 (ja) * 1994-01-28 2004-01-13 ソニー株式会社 手書き入力装置および方法
JPH0816800A (ja) * 1994-06-24 1996-01-19 Hitachi Ltd 情報処理装置
JPH08202893A (ja) * 1995-01-27 1996-08-09 Sony Corp 掠描画方法及び掠描画装置
JPH08305821A (ja) * 1995-04-28 1996-11-22 Canon Inc データ処理方法とその装置
US5940534A (en) * 1995-07-17 1999-08-17 Nippon Telegraph And Telephone Corporation On-line handwritten character recognition using affine transformation to maximize overlapping of corresponding input and reference pattern strokes
US6278445B1 (en) * 1995-08-31 2001-08-21 Canon Kabushiki Kaisha Coordinate input device and method having first and second sampling devices which sample input data at staggered intervals
JPH0969022A (ja) * 1995-08-31 1997-03-11 Canon Inc サンプリング方法及び装置及び情報処理装置
JPH09106321A (ja) * 1995-10-11 1997-04-22 Canon Inc 座標入力方法及びその装置
JP2627407B2 (ja) * 1995-11-10 1997-07-09 株式会社日立製作所 手書き入力情報処理方法および装置
US6730862B1 (en) * 1995-12-27 2004-05-04 Lsi Logic Corporation Erase feature in pen-based computing
JPH09258716A (ja) * 1996-03-25 1997-10-03 Sanyo Electric Co Ltd ストローク情報処理方法
US6111588A (en) 1996-12-05 2000-08-29 Adobe Systems Incorporated Creating and modifying curves on a computer display
US5883622A (en) * 1997-01-17 1999-03-16 Tritech Microelectronics International Ltd. Touchpad pen-input controller
US6125122A (en) * 1997-01-21 2000-09-26 At&T Wireless Svcs. Inc. Dynamic protocol negotiation system
US5940082A (en) * 1997-02-14 1999-08-17 Brinegar; David System and method for distributed collaborative drawing
JPH1185381A (ja) 1997-09-11 1999-03-30 Hitachi Seiko Ltd 座標読み取り装置
JPH11143628A (ja) * 1997-11-05 1999-05-28 Seiko Epson Corp 手書き情報消去方法及び手書き情報処理機器並びに手書き情報消去処理プログラムを記録した記録媒体
US6208355B1 (en) * 1998-04-07 2001-03-27 Adobe Systems Incorporated Sketch-based editing of curves
US6625296B2 (en) * 1998-11-03 2003-09-23 Fuji Xerox Co., Ltd. Method and system for freeform digital ink annotation of data traces
US20020054026A1 (en) * 2000-04-17 2002-05-09 Bradley Stevenson Synchronized transmission of recorded writing data with audio
US6931153B2 (en) * 2000-04-20 2005-08-16 Matsushita Electric Industrial Co., Ltd. Handwritten character recognition apparatus
JP4348831B2 (ja) * 2000-04-28 2009-10-21 ブラザー工業株式会社 手書き入力データ表示システム,座標データ入力装置,表示装置及び手書き入力データ表示装置
JP2001331802A (ja) * 2000-05-22 2001-11-30 Interlink Kk 筆跡イメージの生成装置及び表示装置並びに筆跡イメージ生成用プログラムを記憶した記憶媒体
CN1148675C (zh) * 2000-06-20 2004-05-05 国际商业机器公司 基于网络的输入系统和方法
US6956970B2 (en) * 2000-06-21 2005-10-18 Microsoft Corporation Information storage using tables and scope indices
JP4686502B2 (ja) * 2000-10-31 2011-05-25 株式会社東芝 オンライン文字認識装置
US6970935B1 (en) 2000-11-01 2005-11-29 International Business Machines Corporation Conversational networking via transport, coding and control conversational protocols
US6707473B2 (en) * 2001-08-01 2004-03-16 Microsoft Corporation Dynamic rendering of ink strokes with transparency
US6741749B2 (en) * 2001-01-24 2004-05-25 Advanced Digital Systems, Inc. System, device, computer program product, and method for representing a plurality of electronic ink data points
US7057615B2 (en) * 2001-06-28 2006-06-06 Microsoft Corporation Method and system for representing and displaying digital ink
US7039234B2 (en) * 2001-07-19 2006-05-02 Microsoft Corporation Electronic ink as a software object
JP4088681B2 (ja) * 2001-10-29 2008-05-21 独立行政法人情報通信研究機構 複数言語入力での言語処理装置
US20030215145A1 (en) * 2002-05-14 2003-11-20 Microsoft Corporation Classification analysis of freeform digital ink input
US7158675B2 (en) * 2002-05-14 2007-01-02 Microsoft Corporation Interfacing with ink
JP2003345505A (ja) * 2002-05-23 2003-12-05 Takeo Igarashi 固有のデバイスidを有する入力操作手段を用いるコンピュータシステム
JP2003346171A (ja) * 2002-05-24 2003-12-05 Wacom-It Co Ltd 描画装置および描画プログラム
US20040070616A1 (en) 2002-06-02 2004-04-15 Hildebrandt Peter W. Electronic whiteboard
US7116844B2 (en) 2002-08-09 2006-10-03 Celsys Co., Ltd. Method for generating vector data for a hand-drawn curve
JP2004185436A (ja) * 2002-12-04 2004-07-02 Hirohiko Sakai 動画の作成方法、装置、プログラム及び該プログラムを記録したコンピュータ読み取り可能な記録媒体
US7218779B2 (en) * 2003-01-21 2007-05-15 Microsoft Corporation Ink divider and associated application program interface
US7490296B2 (en) * 2003-01-31 2009-02-10 Microsoft Corporation Utility object for specialized data entry
JP2004272473A (ja) * 2003-03-06 2004-09-30 Ricoh Co Ltd 会議支援装置、電子会議システム、およびコンピュータが読取可能なプログラム
US7966368B2 (en) * 2003-05-02 2011-06-21 Microsoft Corporation Communicating messages over transient connections in a peer-to-peer network
WO2004097722A1 (ja) * 2003-05-02 2004-11-11 Fujitsu Limited 手書き文字入力装置および手書き文字入力処理方法
US7302106B2 (en) * 2003-05-19 2007-11-27 Microsoft Corp. System and method for ink or handwriting compression
AU2003262758B8 (en) * 2003-08-21 2010-04-29 Microsoft Corporation Electronic ink processing
US7310091B2 (en) * 2003-09-16 2007-12-18 Acer Incorporated Handwriting pen capable of simulating different strokes
US20050088427A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Transferring pen information between unmanaged and managed code
US7436535B2 (en) * 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
US7427984B2 (en) * 2003-10-26 2008-09-23 Microsoft Corporation Point erasing
EP1562138B1 (en) 2004-02-06 2009-08-19 Dassault Systèmes A process for drafting a curve in a computer-aided design system
US7284192B2 (en) * 2004-06-24 2007-10-16 Avaya Technology Corp. Architecture for ink annotations on web documents
JP2006018760A (ja) * 2004-07-05 2006-01-19 Casio Comput Co Ltd 画像共有システム及びプログラム
JP4102395B2 (ja) 2004-08-23 2008-06-18 松下電器産業株式会社 高圧放電ランプの製造方法およびランプユニット
US7574048B2 (en) * 2004-09-03 2009-08-11 Microsoft Corporation Freeform digital ink annotation recognition
JP2006091938A (ja) * 2004-09-16 2006-04-06 Ricoh Co Ltd 電子会議システム
WO2006093116A1 (ja) 2005-03-04 2006-09-08 Shima Seiki Manufacturing, Ltd. 刺繍データの作成装置と作成方法およびそのプログラム
JP4635219B2 (ja) * 2005-03-28 2011-02-23 株式会社国際電気通信基礎技術研究所 グラフィクス対話装置およびグラフィクス対話プログラム
US7577925B2 (en) * 2005-04-08 2009-08-18 Microsoft Corporation Processing for distinguishing pen gestures and dynamic self-calibration of pen-based computing systems
JP2007233339A (ja) * 2006-01-31 2007-09-13 Canon Inc 情報処理方法、情報処理装置、プログラム及び記憶媒体
US20070268304A1 (en) 2006-05-22 2007-11-22 Microsoft Corporation Gradient Brush and Stroke
JP5028983B2 (ja) 2006-12-05 2012-09-19 富士ゼロックス株式会社 筆記情報処理装置、筆記情報処理システム、及びプログラム
US7697002B2 (en) * 2007-01-25 2010-04-13 Ricoh Co. Ltd. Varying hand-drawn line width for display
US20080229186A1 (en) * 2007-03-14 2008-09-18 Microsoft Corporation Persisting digital ink annotations as image metadata
US8014630B1 (en) * 2007-05-02 2011-09-06 Evernote Corporation Method and apparatus for representing image data using digital filtering and adaptive parameterization
JP5030729B2 (ja) * 2007-10-04 2012-09-19 パイオニア株式会社 オブジェクトの編集方法、データ共有システムおよび電子遠隔会議システム
JP5242262B2 (ja) 2008-07-03 2013-07-24 ルネサスエレクトロニクス株式会社 移相回路、装置及び方法
JP2009048656A (ja) * 2008-10-16 2009-03-05 Toho Business Kanri Center:Kk 端末装置、表示システム、表示方法、プログラム、及び記録媒体
US8102397B2 (en) * 2009-01-26 2012-01-24 Mitsubishi Electric Research Laboratories Inc. Method for improving uniform width character strokes using multiple alignment zones
JP2010204745A (ja) 2009-02-27 2010-09-16 Panasonic Corp 文書処理装置、及び文書処理方法
JP2010271855A (ja) 2009-05-20 2010-12-02 Nippon Telegr & Teleph Corp <Ntt> 描画装置、描画方法、プログラムおよび記録媒体
WO2010138568A2 (en) * 2009-05-28 2010-12-02 Kent Displays Incorporated Writing tablet information recording device
JP2011022685A (ja) * 2009-07-14 2011-02-03 Univ Of Tokyo 描画装置および描画プログラム
KR101080255B1 (ko) * 2009-07-21 2011-11-08 (주)펜앤프리 필기 패턴에 따른 필기 정보 입력 장치 및 필기 정보 입력 방법
GB0913170D0 (en) * 2009-07-28 2009-09-02 Advanced Risc Mach Ltd Graphics processing systems
WO2011044677A1 (en) * 2009-10-15 2011-04-21 Smart Technologies Ulc Method and apparatus for drawing and erasing calligraphic ink objects on a display surface
JP5668365B2 (ja) 2009-11-20 2015-02-12 株式会社リコー 描画処理システム、サーバ装置、ユーザ端末、描画処理方法、プログラム及び記録媒体
JP4886863B2 (ja) * 2010-01-12 2012-02-29 パナソニック株式会社 電子ペンシステム及び電子ペン
JP4857385B2 (ja) * 2010-01-12 2012-01-18 パナソニック株式会社 電子ペンシステム
US8766982B2 (en) * 2010-01-19 2014-07-01 Disney Enterprises, Inc. Vectorization of line drawings using global topology and storing in hybrid form
US9189086B2 (en) * 2010-04-01 2015-11-17 Smart Technologies Ulc Interactive input system and information input method therefor
JP5540883B2 (ja) * 2010-05-19 2014-07-02 大日本印刷株式会社 ストローク表示装置及びプログラム
US8847961B2 (en) 2010-06-14 2014-09-30 Microsoft Corporation Geometry, speed, pressure, and anti-aliasing for ink rendering
US9189147B2 (en) * 2010-06-22 2015-11-17 Microsoft Technology Licensing, Llc Ink lag compensation techniques
US20120032883A1 (en) * 2010-08-04 2012-02-09 Cheng Uei Precision Industry Co., Ltd. Computer mouse
JP2012058799A (ja) 2010-09-06 2012-03-22 Ricoh Co Ltd 画像表示システム、画像表示方法およびプログラム
JP2012063844A (ja) * 2010-09-14 2012-03-29 Fuji Xerox Co Ltd ユーザ識別システム、装置及びプログラム
US9110581B2 (en) * 2010-10-05 2015-08-18 Citrix Systems, Inc. Touch support for remoted applications
CN102156608B (zh) 2010-12-10 2013-07-24 上海合合信息科技发展有限公司 多字符连续书写的手写输入方法
CN102081803B (zh) * 2011-01-20 2012-10-10 北京壹人壹本信息科技有限公司 一种手写原笔迹的笔锋实现方法
KR101267629B1 (ko) * 2011-03-02 2013-05-27 한국과학기술원 밀집된 데이터를 갖는 1차원 그래프 간소화 방법, 장치, 시스템 및 이를 위한 기록 매체
US8504907B2 (en) * 2011-03-07 2013-08-06 Ricoh Co., Ltd. Generating page and document logs for electronic documents
JP2012190303A (ja) * 2011-03-11 2012-10-04 Yappa Corp コメント共有システム、方法、ならびにプログラム
JP2012252637A (ja) * 2011-06-06 2012-12-20 Dainippon Printing Co Ltd 電子ペン、端末装置、及びプログラム
JP5747715B2 (ja) 2011-07-28 2015-07-15 大日本印刷株式会社 電子ペン収容ユニット、電子ペンシステム、及びプログラム
US9075561B2 (en) * 2011-07-29 2015-07-07 Apple Inc. Systems, methods, and computer-readable media for managing collaboration on a virtual work of art
JP5603305B2 (ja) * 2011-08-08 2014-10-08 任天堂株式会社 手書き学習支援プログラムおよび手書き文字認識プログラム
JP5810779B2 (ja) * 2011-09-16 2015-11-11 株式会社リコー 画面共有システム、画面共有端末、電子黒板システムおよびプログラム
US9948988B2 (en) * 2011-10-04 2018-04-17 Ricoh Company, Ltd. Meeting system that interconnects group and personal devices across a network
US9134561B2 (en) 2011-11-01 2015-09-15 Kent Displays Incorporated Writing tablet information recording device
JP6003047B2 (ja) * 2011-11-24 2016-10-05 富士ゼロックス株式会社 画像処理装置及び画像処理プログラム
JP2013125488A (ja) 2011-12-16 2013-06-24 Konica Minolta Business Technologies Inc 手書き入力装置及び情報編集プログラム並びに情報編集方法
KR20130081780A (ko) * 2012-01-10 2013-07-18 주식회사 시우엘케이 터치스크린 상의 터치지점 직관적 인식을 위한 인터페이스 개선 방법
WO2013121455A1 (ja) * 2012-02-13 2013-08-22 日立コンシューマエレクトロニクス株式会社 プロジェクタ、図形入力・表示装置、携帯端末およびプログラム。
US9529486B2 (en) * 2012-03-29 2016-12-27 FiftyThree, Inc. Methods and apparatus for providing a digital illustration system
US20130257792A1 (en) * 2012-04-02 2013-10-03 Synaptics Incorporated Systems and methods for determining user input using position information and force sensing
JP5270018B1 (ja) 2012-05-11 2013-08-21 株式会社東芝 システム及び手書き文書管理方法
JP5377708B2 (ja) * 2012-05-11 2013-12-25 株式会社東芝 データ処理システム、データ処理方法およびプログラム
JP5248696B1 (ja) 2012-05-25 2013-07-31 株式会社東芝 電子機器、手書き文書作成方法、及び手書き文書作成プログラム
US9118744B2 (en) 2012-07-29 2015-08-25 Qualcomm Incorporated Replacing lost media data for network streaming
US10217253B2 (en) * 2012-09-14 2019-02-26 Adobe Inc. Methods and apparatus for simulation of a stateful brush tip in a natural media drawing and/or painting simulation
CN102937849B (zh) * 2012-12-04 2015-09-23 上海合合信息科技发展有限公司 实时手写笔迹的美化方法及电子设备
US8958644B2 (en) * 2013-02-28 2015-02-17 Ricoh Co., Ltd. Creating tables with handwriting images, symbolic representations and media images from forms
US9286703B2 (en) * 2013-02-28 2016-03-15 Microsoft Technology Licensing, Llc Redrawing recent curve sections for real-time smoothing
US9196065B2 (en) * 2013-03-01 2015-11-24 Microsoft Technology Licensing, Llc Point relocation for digital ink curve moderation
JP2014203393A (ja) * 2013-04-09 2014-10-27 株式会社東芝 電子機器、手書き文書処理方法、及び手書き文書処理プログラム
CN103310474B (zh) * 2013-06-08 2016-04-06 深圳市经纬科技有限公司 一种手写原笔迹的实现方法及系统
US9811238B2 (en) * 2013-08-29 2017-11-07 Sharp Laboratories Of America, Inc. Methods and systems for interacting with a digital marking surface
US20150116282A1 (en) * 2013-10-24 2015-04-30 Livescribe Inc. Organizing Written Notes Using Contextual Data
KR102255050B1 (ko) * 2013-11-19 2021-05-25 가부시키가이샤 와코무 잉크 데이터의 생성, 잉크 데이터의 렌더링, 잉크 데이터의 조작, 및 잉크 데이터의 전달을 위한 방법 및 시스템
US9418281B2 (en) * 2013-12-30 2016-08-16 Google Inc. Segmentation of overwritten online handwriting input
JP6430197B2 (ja) * 2014-09-30 2018-11-28 株式会社東芝 電子機器および方法
JP6465277B6 (ja) * 2014-10-23 2019-03-13 Dynabook株式会社 電子機器、処理方法およびプログラム

Also Published As

Publication number Publication date
US10768805B2 (en) 2020-09-08
JP2017126376A (ja) 2017-07-20
US20200019306A1 (en) 2020-01-16
US20220164100A1 (en) 2022-05-26
JP7210817B2 (ja) 2023-01-24
CN106170748A (zh) 2016-11-30
CN105745608B (zh) 2018-07-10
JP6043020B1 (ja) 2016-12-14
BR112016009938A2 (zh) 2017-08-01
JP2016532165A (ja) 2016-10-13
EP3072038A4 (en) 2017-08-23
JP2017021819A (ja) 2017-01-26
CN106170748B (zh) 2019-02-22
US20200167069A1 (en) 2020-05-28
KR20160086359A (ko) 2016-07-19
JP2020057414A (ja) 2020-04-09
WO2015075933A1 (en) 2015-05-28
JP2016541033A (ja) 2016-12-28
JP2017068855A (ja) 2017-04-06
CN105765502B (zh) 2019-10-08
JP6665262B2 (ja) 2020-03-13
US10331338B2 (en) 2019-06-25
US9430065B2 (en) 2016-08-30
KR102255049B1 (ko) 2021-05-25
EP3072039B1 (en) 2019-08-14
US11042292B2 (en) 2021-06-22
US20160224239A1 (en) 2016-08-04
US11169696B2 (en) 2021-11-09
US20160328624A1 (en) 2016-11-10
JP2021005412A (ja) 2021-01-14
JP2017204283A (ja) 2017-11-16
JP2019117635A (ja) 2019-07-18
BR112016009938B1 (pt) 2022-01-25
JP6686114B2 (ja) 2020-04-22
KR20160087825A (ko) 2016-07-22
US20150371417A1 (en) 2015-12-24
US9904465B2 (en) 2018-02-27
EP3072038A1 (en) 2016-09-28
JP2017041279A (ja) 2017-02-23
WO2015075931A1 (en) 2015-05-28
WO2015075932A1 (en) 2015-05-28
US20200401306A1 (en) 2020-12-24
JP6937575B2 (ja) 2021-09-22
EP3072039A1 (en) 2016-09-28
CN105745608A (zh) 2016-07-06
US20180004407A1 (en) 2018-01-04
CN105765502A (zh) 2016-07-13
EP3072036A4 (en) 2017-08-16
US9766804B2 (en) 2017-09-19
JP2019036366A (ja) 2019-03-07
JP6772395B2 (ja) 2020-10-21
EP3072037A4 (en) 2017-08-16
JP2016537694A (ja) 2016-12-01
JP2017062826A (ja) 2017-03-30
US10191653B2 (en) 2019-01-29
US20190310769A1 (en) 2019-10-10
JP6446076B2 (ja) 2018-12-26
EP3072038B1 (en) 2019-09-18
JP6231180B2 (ja) 2017-11-15
WO2015075930A1 (en) 2015-05-28
EP3072039A4 (en) 2017-08-02
US11747976B2 (en) 2023-09-05
US20150378450A1 (en) 2015-12-31
JP6046298B1 (ja) 2016-12-14
US9448648B2 (en) 2016-09-20
EP3072037A1 (en) 2016-09-28
JP6633235B2 (ja) 2020-01-22
JP2019050044A (ja) 2019-03-28
US10534530B2 (en) 2020-01-14
KR102255050B1 (ko) 2021-05-25
US9904466B2 (en) 2018-02-27
JP2020057442A (ja) 2020-04-09
CN105765503A (zh) 2016-07-13
EP3072036A1 (en) 2016-09-28
US9875021B2 (en) 2018-01-23
JP2020102275A (ja) 2020-07-02
JP6498733B2 (ja) 2019-04-10
US20190155498A1 (en) 2019-05-23
US20160328145A1 (en) 2016-11-10
JP6126292B2 (ja) 2017-05-10
US10078445B2 (en) 2018-09-18
JP2023015147A (ja) 2023-01-31
US11188223B2 (en) 2021-11-30
JP5997414B1 (ja) 2016-09-28
EP3072036B1 (en) 2019-12-25
US20160253090A1 (en) 2016-09-01
US20180203599A1 (en) 2018-07-19
CN105765503B (zh) 2018-10-19
EP3072037B1 (en) 2019-08-14
US20180101299A1 (en) 2018-04-12
JP2018005922A (ja) 2018-01-11
CN110109558A (zh) 2019-08-09
JP7446385B2 (ja) 2024-03-08
JP2017102968A (ja) 2017-06-08
JP6043019B2 (ja) 2016-12-14
US20190050143A1 (en) 2019-02-14
JP6845910B2 (ja) 2021-03-24
JP2016529572A (ja) 2016-09-23
US10409484B2 (en) 2019-09-10
JP6096976B1 (ja) 2017-03-15
JP6449941B2 (ja) 2019-01-09
JP7094318B2 (ja) 2022-07-01
US20160328625A1 (en) 2016-11-10
US11023127B2 (en) 2021-06-01
JP6166496B2 (ja) 2017-07-19

Similar Documents

Publication Publication Date Title
CN110109558B (zh) 墨水数据输出方法及墨水数据输出装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant