Ink file searching method, apparatus, and program
11580761 · 2023-02-14
Assignee
Inventors
Cpc classification
G06V30/1423
PHYSICS
G06F3/041
PHYSICS
G06F3/0416
PHYSICS
G06F2203/0382
PHYSICS
International classification
G06F3/041
PHYSICS
G06V30/142
PHYSICS
Abstract
An ink file output method is provided, which includes: generating M (M is an integer of 1 or more) pieces of stroke data SD on the basis of event data generated as M input devices move, respectively; generating N (N is an integer of 1 or more and M or less) kinds of logical names LN (metadata) identifying the M number of input devices; generating a metadata block associating the M pieces of stroke data SD with the N kinds of logical names LN; and writing the M pieces of stroke data SD and the metadata block to an ink file.
Claims
1. A method of searching for an ink file, the method comprising: obtaining plural ink files, each of the ink files including M (M is an integer of 1 or more) pieces of stroke data and a metadata block, wherein each of the M pieces of stroke data includes plural coordinates data, and the metadata block associates the M pieces of stroke data respectively with a metadata set per ink file such that plural metadata sets exist for the plural ink files, wherein the metadata set per ink file is indicative of which one of N (N is an integer of 1 or more and M or less) kinds of input devices is used to input the respective one of the M pieces of stroke data; obtaining a search condition which specifies a first metadata set out of the plural metadata sets; referring to a table within a storage, the table associating the first metadata with an ink file name; selecting, from among the plural ink files, one or more ink files associated with the ink file name; and drawing the pieces of stroke data included in the selected one or more ink files, wherein the M pieces of stroke data are respectively encoded according to one format selected from multiple formats and stored in the ink file; the ink file stores information, which identifies the selected one format and which is in another format independent of the selected one format, in a first area different from a second area in which the M pieces of stroke data are stored; and the selecting of the one or more ink files includes selecting the one or more ink files including the pieces of stroke data encoded according to the selected one format, in reference to the information.
2. The method of searching for an ink file according to claim 1, wherein the drawing of the pieces of stroke data includes drawing only the pieces of stroke data associated with the first metadata set specified by the search condition.
3. The method of searching for an ink file according to claim 1, wherein at least one of the ink files includes pieces of stroke data differently encoded according to different formats, and the drawing of the pieces of stroke data includes drawing only the pieces of stroke data encoded according to the selected one format.
4. The method of searching for an ink file according to claim 1, wherein the ink files respectively include ordering information indicative of a relative drawing order of the M pieces of stroke data, and the drawing of the pieces of stroke data includes drawing the pieces of stroke data associated with the first metadata set specified by the search condition in the relative drawing order indicated by the ordering information.
5. The method of searching for an ink file according to claim 4, wherein the ordering information includes information indicative of a relative drawing order of a first piece of stroke data and a second piece of stroke data that intersect each other.
6. The method of searching for an ink file according to claim 1, wherein the first metadata set includes information indicative of which one of the N kinds of input devices is used to input the respective one of the M pieces of stroke data among the M pieces of stroke data, wherein the information is converted to a character string.
7. An ink file searching apparatus, comprising: obtaining circuitry, which, in operation, obtains plural ink files, each of the ink files including M (M is an integer of 1 or more) pieces of stroke data and a metadata block, wherein each of the M pieces of stroke data includes plural coordinates data, and the metadata block associates the M pieces of stroke data respectively with a metadata set per ink file such that plural metadata sets exist for the plural ink files, wherein the metadata set per ink file is indicative of which one of N (N is an integer of 1 or more and M or less) kinds of input devices is used to input the respective one of the M pieces of stroke data; reception circuitry, which, in operation, obtains a search condition which specifies a first metadata set out of the plural metadata sets; selection circuitry, which, in operation, refers to a table within a storage, the table associating the first metadata with an ink file name, and selects, from among the plural ink files, one or more ink files associated with the ink file name, and drawing circuitry, which, in operation, draws the pieces of stroke data included in the selected one or more ink files, wherein the M pieces of stroke data are respectively encoded according to one format selected from multiple formats and stored in the ink file; the ink file stores information, which identifies the selected one format and which is in another format independent of the selected one format, in a first area different from a second area in which the M pieces of stroke data are stored; and the selecting of the one or more ink files includes selecting the one or more ink files including the pieces of stroke data encoded according to the selected one format, in reference to the information.
8. The ink file searching apparatus according to claim 7, wherein the drawing circuitry, in operation, draws only the pieces of stroke data associated with the first metadata set specified by the search condition.
9. The ink file searching apparatus according to claim 7, wherein at least one of the ink files includes pieces of stroke data differently encoded according to different formats, and the drawing circuitry, in operation, draws only the pieces of stroke data encoded according to the selected one format.
10. The ink file searching apparatus according to claim 7, wherein the ink files respectively include ordering information indicative of a relative drawing order of the M pieces of stroke data, and the drawing circuitry, in operation, draws the pieces of stroke data associated with the first metadata set specified by the search condition in the relative drawing order indicated by the ordering information.
11. The ink file searching apparatus according to claim 10, wherein the ordering information includes information indicative of a relative drawing order of a first piece of stroke data and a second piece of stroke data that intersect each other.
12. The ink file searching apparatus according to claim 7, wherein the first metadata set includes information indicative of which one of the N kinds of input devices is used to input the respective one of the M pieces of stroke data among the M pieces of stroke data, wherein the information is converted to a character string.
13. A computer-readable tangible and non-transitory medium including computer-executable instructions which, when loaded on a computer, cause the computer to function as an ink file searching apparatus which, in operation, performs: obtaining plural ink files, each of the ink files including M (M is an integer of 1 or more) pieces of stroke data and a metadata block, wherein each of the M pieces of stroke data includes plural coordinates data, and the metadata block associates the M pieces of stroke data respectively with a metadata set per ink file such that plural metadata sets exist for the plural ink files, wherein the metadata set per ink file is indicative of which one of N (N is an integer of 1 or more and M or less) kinds of input devices is used to input the respective one of the M pieces of stroke data; obtaining a search condition which specifies a first metadata set out of the plural metadata sets; referring to a table within a storage, the table associating the first metadata with an ink file name; selecting, from among the plural ink files, one or more ink files associated with the ink file name; and drawing the pieces of stroke data included in the selected one or more ink files, wherein the M pieces of stroke data are respectively encoded according to one format selected from multiple formats and stored in the ink file; the ink file stores information, which identifies the selected one format and which is in another format independent of the selected one format, in a first area different from a second area in which the M pieces of stroke data are stored; and the selecting of the one or more ink files includes selecting the one or more ink files including the pieces of stroke data encoded according to the selected one format, in reference to the information.
14. The computer-readable tangible and non-transitory medium according to claim 13, wherein the drawing includes drawing only the pieces of stroke data associated with the first metadata set specified by the search condition.
15. The computer-readable tangible and non-transitory medium according to claim 13, wherein at least one of the ink files includes pieces of stroke data differently encoded according to different formats, and the drawing includes drawing only the pieces of stroke data encoded according to the selected one format.
16. The computer-readable tangible and non-transitory medium according to claim 13, wherein the ink files respectively include ordering information indicative of a relative drawing order of the M pieces of stroke data, and the drawing includes drawing the pieces of stroke data associated with the first metadata set specified by the search condition in the relative drawing order indicated by the ordering information.
17. The computer-readable tangible and non-transitory medium according to claim 16, wherein the ordering information includes information indicative of a relative drawing order of a first piece of stroke data and a second piece of stroke data that intersect each other.
Description
BRIEF DESCRIPTION OF DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
MODES FOR CARRYING OUT THE INVENTION
(30) Preferred embodiments of the present invention will hereinafter be described in detail with reference to the accompanying drawings.
(31) A method of outputting an ink file according to a first embodiment of the present invention will first be described.
(32) The position detector 20 is a device having a flat panel surface and a sensor disposed directly under the panel surface. The position detector 20 is used together with one or more electronic pens P.
(33) An electronic pen P is a pen-shaped input device. The electronic pen P is usually used in a state of being held by a hand of a user. The user inputs a character or a drawing by moving the pen point (pen tip) of the electronic pen P on the position detector 20. Though not shown in the figures, the electronic pen P includes: a storage device that stores pen identification information PID (input device identification information) unique to the electronic pen P in advance; a pen pressure detecting device that detects a force with which the electronic pen P presses the panel surface of the position detector 20, that is, a pen pressure; a side switch capable of assuming either an on state or an off state; and a transmitting device for transmitting various kinds of signals from the electronic pen P to the position detector 20. The signals transmitted by the transmitting device include a signal indicating the pen identification information PID, a signal indicating the pen pressure detected by the pen pressure detecting device, a signal indicating the state of the side switch, and the like. The transmitting device is configured to transmit these signals in fixed cycles.
(34) The position detector 20 has a function of detecting the position of each electronic pen P within the panel surface and a function of receiving each piece of the above-described information transmitted by each electronic pen P. To detect the position of the electronic pen P, the sensor constituting the position detector 20 has a constitution, in which a plurality of linear conductors each extending in an x-direction (one direction within the surface of the position detector 20) and a plurality of linear conductors each extending in a y-direction (direction orthogonal to the x-direction within the surface of the position detector 20) are each arranged at equal intervals. The position detector 20 detects point data PD indicating the position of the electronic pen P within the panel surface on the basis of a change in potential of these linear conductors, wherein such change is caused by the electronic pen P approaching the panel surface. The point data PD is data constituted of a combination (x, y) of an x-coordinate and a y-coordinate. This detection is performed in the same cycles as the signal transmission cycles of the electronic pen P. The position detector 20 is coupled to the digital ink generating device 30 by an interface such as USB, FC, or the like. The position detector 20 is configured to output the detected point data PD at each time of detection and the received various kinds of information at each time of reception to the digital ink generating device 30 via the interface.
(35) The digital ink generating device 30 is a device that generates an ink file 40 on the basis of the point data PD and the various kinds of information supplied from the position detector 20. The digital ink generating device 30 is implemented as a library dynamically or statically linked by an application 100, wherein the library is executed on the CPU of the computer 1, or as a service used by the application 100. Details of the ink file 40 will be described later. Briefly, the ink file 40 includes one or more pieces of stroke data, each including a series of pieces of point data PD for reproducing the movement trajectory of the electronic pen P and metadata (logical name LN to be described later) corresponding to the pen identification information PID of the electronic pen P used to generate the stroke data. The metadata is generated for each piece of stroke data, and is stored within the ink file 40 in association with the corresponding stroke data. The ink file 40 is stored in the storage device of the computer 1, though the storage device is not shown in the figures. The ink file 40 becomes an object to be uploaded to various servers, to be transmitted by electronic mail, or the like, as required.
(36) The digital ink reproducing device 50 is a device that reproduces the ink file 40 generated by the digital ink generating device 30. As with the digital ink generating device 30, the digital ink reproducing device 50 may be implemented as a library dynamically or statically linked by the application 100, wherein the library is executed on the CPU of the computer 1, or as service. Specifically, the digital ink reproducing device 50 is configured to receive an instruction from the application 100, selectively extract and decode desired stroke data from the ink file 40, and perform processing of rendering the decoded stroke data, to thereby generate a video signal to be displayed on the display 60 or generate an image file 61 as raster data. The image file 61 is, for example, a JPEG or PNG file. The digital ink reproducing device 50 according to the present embodiment in particular has a function of extracting and decoding only stroke data generated by a particular electronic pen P by referring to the metadata within the ink file 40, and setting the stroke data generated by the particular electronic pen P as an object of rendering processing. This will be described later in detail.
(37)
(38) In this case, the application 100 shown in
(39) The input processing section 31 is a functional unit that, each time the input processing section 31 receives various kinds of information (the point data PD, the pen identification information PID, the information indicating the pen pressure, the information indicating the state of the side switch, or the like) from the position detector 20, generates event data on the basis of the received information, and distributes and supplies the event data to the stroke data generating section 32, the metadata generating section 33, and the application 100. The input processing section 31 is typically implemented as a device driver corresponding to the position detector 20, wherein the device driver is included in an operating system operating on the computer 1. Data supplied from the input processing section 31 to the stroke data generating section 32 includes the point data PD. Data supplied to the metadata generating section 33 includes the pen identification information PID. Meanwhile, the application 100 is supplied with information D_inf indicating conditions of processing of stroke data SD. The application 100 is configured to control the operation of the digital ink generating device 30 according to the information D_inf.
(40) The event data generated by the input processing section 31 includes not only the information supplied from the position detector 20 but also event type identification information ETYPE (not shown) indicating the state of the electronic pen P. The event type identification information ETYPE is information for identifying to which part in a series of strokes does a point indicated by the point data PD input from the position detector 20 belong. Though not shown in
(41) The input processing section 31 is configured to be able to detect that the electronic pen P is in contact with the position detector 20 (pen-down) and that the electronic pen P is separated from the position detector 20 (pen-up) on the basis of the information received from the position detector 20. When the input processing section 31 detects that the electronic pen P is in contact with the position detector 20 (pen-down), the input processing section 31 sets the value of the event type identification information ETYPE to the pen-down state Pdown in the event data to be next generated. Thereafter, while the electronic pen P is in contact with the panel surface of the position detector 20 (that is, while various kinds of information continue to be supplied from the position detector 20), the input processing section 31 continues to set the pen-moved state Pmvd as the value of the event type identification information ETYPE within event data. Finally, when the input processing section 31 detects that the electronic pen P is separated from the position detector 20 (pen-up), the input processing section 31 sets the value of the event type identification information ETYPE to the pen-up state Pup in the event data to be generated next. The input processing section 31 thus generates a series of pieces of event data starting with the pen-down state Pdown and ending with the pen-up state Pup.
(42) The stroke data generating section 32 is a functional unit, which is supplied with point data PD from the input processing section 31 and which generates stroke data SD including one or more pieces of point data PD. The stroke data generating section 32 is typically implemented by a program, which is referred to as a library or a service executed by the CPU of the computer 1. By referring to the value of the event type identification information ETYPE supplied from the input processing section 31, the stroke data generating section 32 generates one piece of stroke data SD including a series of pieces of point data PD included in each piece of event data, from event data indicating the pen-down state Pdown to event data indicating the pen-up state Pup.
(43) In this case, there are various types of point data PD included in the stroke data SD. The stroke data generating section 32 may include, in the stroke data SD, the values of the point data PD supplied from the input processing section 31 as they are, or may include, in the stroke data SD, the values of the point data PD processed by performing smoothing processing such as a weighted mean, exponential smoothing, or the like, by performing thinning-out processing, or by performing compression processing as in the digital ink described in Patent Document 1, or the like. In addition, the position or two-dimensional vector of an external control point not present on the trajectory reproduced, used in determining the curve shape of an interpolation curve such as a Bezier curve or the like, may be added as a value of point data PD to the stroke data SD. The stroke data generating section 32 is configured to store the generated stroke data SD in the ink data retaining section 34.
(44) The metadata generating section 33 is a functional unit that generates a logical name LN as metadata on the basis of pen identification information PID supplied from the input processing section 31. The metadata generating section 33 is also typically implemented by a program, which is referred to as a library or a service executed by the CPU of the computer 1. When event data supplied from the input processing section 31 includes event type identification information ETYPE indicating the pen-down state Pdown, the metadata generating section 33 generates a logical name LN corresponding to the pen identification information PID included in the event data. As shown in
(45) The ink data retaining section 34 is configured to store the logical name LN supplied from the metadata generating section 33 and the stroke data SD supplied from the stroke data generating section 32 in association with each other. Specifically, the logical name LN supplied from the metadata generating section 33 in response to the bringing of a certain electronic pen P into the pen-down state Pdown and the stroke data SD supplied from the stroke data generating section 32 in response to the subsequent bringing of the electronic pen P into the pen-up state Pup are stored in association with each other.
(46) The ink file generating section 37 is a functional unit that generates an ink file 40 on the basis of the stroke data SD and the logical name LN retained in the ink data retaining section 34. As shown in
(47) The stroke data SD is stored in the ink chunk in a state of being encoded by a stroke data encoding section 35 corresponding to one format selected by the application 100 from among the stroke data encoding sections 35-1 to 35-n corresponding to formats (data structures and encoding systems) different from each other. Examples of the stroke data formats, to which the stroke data encoding sections 35-1 to 35-n correspond, include the formats described in Non-Patent Documents 1 to 4, such as InkML, ISF, and the like, a format according to the present invention be described with reference to
(48) The application 100 selects a stroke data encoding section 35 by supplying a stroke data format S_Fmt, which is information specifying the data format of strokes, to the ink file generating section 37. Details of the stroke data format S_Fmt will be described later with reference to
(49) On the other hand, the logical name LN is stored in the metadata chunk as a part of a metadata block including a description for associating one or more pieces of stroke data SD with the logical name LN. The metadata block is described in an XML format. More specifically, the metadata block is described in an XMP (Extensible Metadata Platform) format. The described metadata block is encoded (binarized) by the metadata encoding section 36 using an encoding system such as UTF-8 or the like, and stored within the metadata chunk.
(50)
(51) In this processing as shown in
(52) Next, the input processing section 31 detects the state of an electronic pen P (step S2). When detecting that the electronic pen P is in the pen-down state Pdown in step S2, the input processing section 31 obtains the pen identification information PID from the position detector 20 (step S10), and supplies the pen identification information PID to the metadata generating section 33. The metadata generating section 33 generates a (stroke_id)th logical name LN on the basis of the supplied pen identification information PID (step S11). The processing of generating the logical name LN will be described later in more detail with reference to
(53) Next, the input processing section 31 obtains style information such as a line width or the like on the basis of input information from the position detector 20, wherein the input information includes information indicating a pen pressure (step S12), and obtains point data PD from the position detector 20 (step S13). The point data PD obtained in step S13 is start coordinates (x0, y0) indicating a start point of one stroke. Incidentally, the order of obtainment of the various kinds of information in step S10, S12, and S13 is not limited to that described above.
(54) Next, the input processing section 31 sets the value of the variable stroke_id at a given point in time as a stroke identifier Stroke_id(PID) (step S14). As with the variable stroke_id, the stroke identifier Stroke_id(PID) is information for identifying each stroke. However, for making distinction by pen identification information PID, the stroke identifier Stroke_id(PID) is retained in the form of an associative array having the pen identification information PID as an index (or key). This associative array is used to temporarily store the variable stroke_id to be given to the stroke data SD to be hereafter generated by the electronic pen P indicated by the pen identification information PID obtained in step S10. The various kinds of variables (stroke_id, uorder, and the like) are thus retained separately in the form of an associative array in addition to the normal variables in order to make it possible to distinguish and extract, by index (or key), the values of stroke_id and uorder given to each of a plurality of strokes in a process of being input while stroke data is input simultaneously by a plurality of different electronic pens P.
(55) In addition, the input processing section 31 assigns the value of the variable uorder at a given point in time to order information Uorder(PID) (step S15). The order information Uorder(PID) is also an associative array having the pen identification information PID as an index. The order information Uorder(PID) is information indicating relative detection order (rendering order) between a plurality of pieces of point data PD (or between segments of point data PD) detected for a plurality of electronic pens P, respectively. The order information Uorder(PID) is stored in association with the detected point data PD (steps S16, S24, and S34 to be described later). The value of the order information Uorder(PID) may be updated by order confirmation processing performed in steps S23 and S33 to be described later. Details of the order confirmation processing will be described later with reference to
(56) Next, the digital ink generating device 30 stores the pen identification information PID obtained in step S10, the point data PD obtained in step S13, and the latest order information Uorder(PID) in association with each other (step S16). Thereafter, the variable stroke_id, the variable CS, and the variable uorder are each incremented by 1 (step S17). The processing is then returned to step S2.
(57) Next, after detecting that the electronic pen P is in the pen-moved state Pmvd in step S2, the input processing section 31 first obtains the pen identification information PID and point data PD from the position detector 20 (steps S20 and S21). The point data PD obtained in step S21 is movement coordinates (x1, y1) to (xn−1, yn−1) indicating intermediate points of one stroke. Incidentally, the order of obtainment of the various kinds of information in steps S20 and S21 is not limited to that described above, either.
(58) Next, the input processing section 31 determines whether or not the variable CS is 2 or more (step S22). When the variable CS is 2 or more, the input processing section 31 performs order confirmation processing (step S23). The input processing section 31 next stores the pen identification information PID obtained in step S20, the point data PD obtained in step S21, and the latest order information Uorder(PID) in association with each other (step S24). Thereafter, the processing is returned to step S2.
(59) Next, after detecting that the electronic pen P is in the pen-up state Pup in step S2, the input processing section 31 first obtains the pen identification information PID and point data PD from the position detector 20 (steps S30 and S31). The point data PD obtained in step S31 is end coordinates (xn, yn) indicating an end point of one stroke. Incidentally, the order of obtainment of the various kinds of information in steps S30 and S31 is not limited to that described above, either.
(60) Next, the input processing section 31 determines whether or not the variable CS is 2 or more (step S32) in order to determine whether or not there is a stroke being input simultaneously. When the variable CS is 2 or more, the input processing section 31 performs order confirmation processing similar to that of step S23 (step S33). The input processing section 31 next stores the pen identification information PID obtained in step S30, the point data PD obtained in step S31, and the latest order information Uorder(PID) in association with each other (step S34). The value of the variable CS is then decremented by 1 (step S35).
(61) Next, the stroke data generating section 32 generates (Stroke_id(PID))th stroke data SD on the basis of the series of pieces of point data PD and the order information Uorder(PID) stored in association with the pen identification information PID obtained in step S30 (step S36). Incidentally, the value of the stroke identifier Stroke_id(PID) is set in step S14. The stroke data SD generated here includes the series of pieces of point data PD and the order information Uorder(PID) as well as information indicating the (Stroke_id(PID))th stroke data SD and the style information obtained in step S12. The stroke data SD generated in step S36 is retained in the ink data retaining section 34 in association with the logical name LN generated in step S11 in relation to the pen identification information PID obtained in step S30 (step S37).
(62) The above processing is performed repeatedly (negative determination in step S38) until the above-described stroke data format S_Fmt is supplied from the application 100. When the stroke data format S_Fmt is supplied from the application 100, the ink file generating section 37 determines that an instruction to output an ink file 40 is given (positive determination in step S38), and performs ink file generation processing shown in step S40. An ink file 40 including a series of pieces of stroke data SD generated thus far is thereby generated. Details of the ink file generation processing will be described later in detail with reference to
(63) The digital ink generating device 30 generates the ink file 40 as described above. Each piece of processing mentioned as to be described later will be described in order in the following.
(64) The processing of generating the logical name LN will first be described with reference to
(65)
(66) On the other hand, the various kinds of information transmitted by the electronic pen P, such as the pen identification information PID and the like, in the cases of the types TY1 and TY2 are once received by the position detector 20, and supplied to the input processing section 31. In the case of the type TY3, the various kinds of information transmitted by the electronic pen P are directly transmitted from the electronic pen P to the input processing section 31. Electronic pens Ps of the type TY3 include pens such as an electronic pen described in Patent Document 2, listed above. The point data PD of the electronic pen P is detected by the position detector 20 as a capacitance type touch panel, and supplied by an internal interface, whereas data such as a pen pressure and the like, which is not the point data PD, is supplied to the input processing section 31 through another communication channel using Bluetooth (registered trademark) or the like.
(67) The electronic pen P of the type TY4 is typically an input device such as a touch pen used on a capacitance type touch panel. The electronic pen P of the type TY4 may be a device such as a mouse device for performing position input. The electronic pen P of the type TY4 does not store pen identification information PID. Hence, when the electronic pen P of this type is used, pen identification information PID is not supplied to the input processing section 31. In the following, (TYn) added to an end of the reference numeral of the electronic pen P or the position detector 20 indicates that the electronic pen P or the position detector 20 is of a type TYn (n is an integer of 1 to 4). In addition, the pen identification information PID of the types TY1 to TY3 will be written as pen identification information PID1 to PID3, respectively.
(68) The input processing section 31 includes an input-output interface (I/O) 310 and drivers 311 to 315. The input-output interface 310 is a communication circuit configured according to a communication standard such as USB, I.sup.2C, Bluetooth (registered trademark), or the like. The input processing section 31 plays a role of realizing communication performed between the position detector 20 of each type and the electronic pen P (TY3) of the type TY3.
(69) The driver 311 is software (device driver) for controlling and operating the position detector 20 (TY1). The driver 311 has a function of receiving various kinds of information including point data PD and the pen identification information PID1 from the position detector 20 (TY1), and outputting the point data PD to the stroke data generating section 32 and outputting the pen identification information PID1 to the metadata generating section 33.
(70) The pen identification information PID1 as first pen identification information PID is information according to the example of UniqueID described in Non-Patent Document 5. The pen identification information PID1 uses an ID space of K bits. The pen identification information PID1 is described in a format (first format) in which K1 bits of unique information UID including number information different for each electronic pen P and K2 bits as pen point identification bits are mixed in the K bits. More specifically, as shown in
(71) The driver 312 is software (device driver) for controlling and operating the position detector 20 (TY2). The driver 312 has a function of receiving various kinds of information including point data PD and the pen identification information PID2 from the position detector 20 (TY2), and outputting the point data PD to the stroke data generating section 32 and outputting the pen identification information PID2 to the metadata generating section 33.
(72) The pen identification information PID2 as second pen identification information PID uses an ID space of L bits. The pen identification information PID2 is described in a format (second format) in which L2 bits (16 bits) of device information DID and L1 bits (35 bits) of unique information UID provided to uniquely identify the casing of each electronic pen are simply coupled to each other. Specifically, as shown in
(73) The driver 313 is software for controlling and operating the electronic pen (TY3). The driver 313 has a function of receiving various kinds of information including the pen identification information PID3 from the electronic pen (TY3) and outputting the various kinds of information to the metadata generating section 33.
(74) The pen identification information PID3 as third pen identification information PID uses an ID space of M bits. The pen identification information PID3 is described in a format (third format) in which the casing of each electronic pen is identified by the entire M bits. Specifically, as shown in
(75) The driver 314 is software (device driver) for controlling and operating the position detector 20 (TY3). The driver 314 has a function of receiving various kinds of information including point data PD from the position detector 20 (TY3) and outputting the received point data PD to the stroke data generating section 32.
(76) The driver 315 is software (sensor driver) for controlling and operating the position detector 20 (TY4). The driver 315 has a function of receiving various kinds of information including point data PD from the position detector 20 (TY4) and outputting the received point data PD to the stroke data generating section 32.
(77) The metadata generating section 33 includes an address space unifying section 330, an LID converting section 331, and a device type recording section 332. Of the constituent elements, the address space unifying section 330 includes, as an internal configuration thereof, UID extracting sections 3300 and 3301 and an N-bit space mapping processing section 3302. In addition, the LID converting section 331 includes, as an internal configuration thereof, a switching section 3310, a name deriving section 3311, a hash section 3312, and a URN converting section 3313. Functions of these sections will be described in the following while the processing of the metadata generating section 33 is described in a processing flowchart of
(78) First, the metadata generating section 33 obtains the device type (above-described type TY1 to TY4) of the electronic pen P and the position detector 20 coupled to the digital ink generating device 30 (step S110). Then, processing corresponding to the format of the pen identification information PID, which is identified according to the obtained device type, is performed (each of various options branching out from step S111). The following description will be made for each type.
(79) First, when the device type is the type TY1, the format of the pen identification information PID is identified as the first format. The first format is a format in which unique information UID including number information different for each electronic pen P and pen point identification bits are mixed in K bits. Thus, the UID extracting section 3300 extracts the unique information UID including number information different for each electronic pen P from the pen identification information PID1 supplied through the corresponding driver 311 (step S111). Specifically, as shown in
(80) Next, when the device type is the type TY2, the format of the pen identification information PID2 obtained by the driver is the second format. In the second format, L1 bits of device information DID and L2 bits of unique information UID provided to uniquely identify the casing of each electronic pen are coupled to each other. Hence, the UID extracting section 3301 extracts the unique information UID including number information different for each electronic pen P from the pen identification information PID2 supplied through the corresponding driver 312 (step S111). As shown in
(81) Next, when the device type is the type TY3, the obtained pen identification information PID is in the third format. The third format uses an ID space of M bits, and is described as a format in which the casing of each electronic pen is identified by the entire M bits. Hence, the entirety of the pen identification information PID3 is supplied as unique information UID3 corresponding to the type TY3 to the N-bit space mapping processing section 3302 (step S112).
(82) Finally, when the device type is the type TY4, there is no pen identifier obtained. When there is no pen identifier obtained, the N-bit space mapping processing section 3302 sets NULL (predetermined dummy data) as unique information UID4 corresponding to the type TY4 (step S113). This is a measure to also treat the electronic pen P (TY4) of the type TY4 not storing the pen identification information PID in a similar manner to electronic pens P of the other types. The unique information UID4 does not have a function of uniquely identifying the electronic pen P.
(83) After the unique information UID is obtained in steps S111 to S114, the N-bit space mapping processing section 3302 maps the unique information UID to an N-bit space (step S115). As a result of this mapping processing, logical identification information LID is obtained. Detailed description will be made in the following with reference to
(84) The number of bits of the space to which mapping is performed is not particularly limited. However, the number of bits of the space to which mapping is performed is 64 in
(85) First, in the first step, a number of bits LLEN (52 bits in the example) is determined, wherein the number of bits LLEN is equal to or more than a largest number of bits (48 bits) of the numbers of bits of the unique information UID, wherein the numbers are different according to the formats of pen identifiers (K1 (42) bits in the first format, L1 (35) bits in the second format, M (48) bits in the third format, and 0 bits for a device of the type TY4). It suffices to make this determination once beforehand. The unique information UID obtained in the various kinds of formats is unified into information of LLEN bits (52 bits) by adding padding data of “0” to the head of the unique information UID obtained by mask processing or separation processing so that the unique information UID is adjusted to the number of bits LLEN.
(86) Next, in the second step, information of PLEN bits (12 bits in the example) for indicating a device type or a format type is added to the head of the unique information of LLEN bits. In the example of
(87) Information of N bit (64 bits) as LLEN bits (52 bits)+PLEN bits (12 bits), which is ultimately obtained by the mapping processing including the two steps, constitutes logical identification information LID. The pieces of logical identification information LID obtained for the respective types TY1 to TY4 are supplied as logical identification information LID1 to LID4, respectively, from the N-bit space mapping processing section 3302 to the switching section 3310 within the LID converting section 331.
(88) The switching section 3310 selects one of the name deriving section 3311, the hash section 3312, and the URN converting section 3313 on the basis of metadata information M_inf supplied from the application 100 (see
(89) The name deriving section 3311 is a functional unit that converts the logical identification information LID into a character string and which outputs the obtained character string as a logical name LN (steps S121 and S122). The application 100 supplies the name deriving section 3311 with one table M_Tbl, which associates the logical identification information LID and the character string with each other. Even in an environment in which a plurality of formats are mixed with each other as formats of pen identifiers, it suffices to supply one table from the application 100, because the logical identification LID is mapped to the single space by the above-described mapping processing. The name deriving section 3311 receives the table M_Tbl in which sets of logical identification information LID and character strings are enumerated, and performs the above-described conversion by reading, from the table MTbl, the character string corresponding to the logical identification information LID supplied from the switching section 3310. Incidentally, even in a case where the conversion of the name deriving section 3311 is performed on the application 100 side, it suffices for the application 100 to similarly implement only a routine processing only the logical identification information LID described in the single format.
(90)
(91) As shown in
(92) As is also shown in
(93) The device type recording section 332 has a function of generating device information D_dscr on the basis of device information DID supplied from the address space unifying section 330, and outputting the device information D_dscr to the outside. This device information D_dscr can be treated as a part of the logical name LN in subsequent processing by being added to the logical name LN, for example. This enables the device information DID to be used as a part of filter information at a time of reproduction of the ink file 40, which will be described later.
(94) The processing of generating the logical name LN has been described above. The order confirmation processing shown in step S23 in
(95) <Order Confirmation Processing>
(96) The order confirmation processing will be described in the following with reference to an example of
(97) In the processing flow shown in
(98)
(99) The order confirmation processing ends when a negative determination is obtained in step S232. When a positive determination is obtained in step S232, on the other hand, the variable uorder is incremented by 1 (step S233), and further the order information Uorder(PID) is updated based on the new variable uorder (step S234). The pen identification information PID in this case is the pen identification information PID of the electronic pen P.sub.A.
(100)
(101) Incidentally, the sequential order of the drawing as stored need not reflect time order in which the input was performed. For example, the order confirmation processing according to the present embodiment does not detect which of the coordinate B4 and the coordinate A4 is drawn first.
(102) However, it is also possible, for example, to store, in association with each coordinate, information indicating the time (an absolute time or a relative time from a start of drawing) when the electronic pen P reaches the coordinate. According to this method, it is possible to accurately store before-and-after relation between all of coordinates, and reproduce drawing processing on the screen as in the case of an animation. Incidentally, for the purpose of properly restoring the before-and-after relation of the stroke data SD using a smallest possible amount of data, it suffices to store the order information Uorder(PID) as described above. Which method of storing a before-and-after relation to use can be specified by the application 100.
(103) The order confirmation processing will be described again with reference to another example shown in
(104) Electronic pens P used simultaneously in the present example are the two electronic pens P.sub.A and P.sub.B as in the example of
(105) As in the example of
(106) On the other hand, order information Uorder(PID) of “2” is associated with the trajectory of the electronic pen P.sub.A at and after a point in time when the coordinate A3 is reached. This is because the stroke segment represented by the segment that connects the coordinate B2 to the coordinate B3 is present directly under the stroke segment represented by the segment that connects the coordinate A2 to the coordinate A3 at a point in time when the stroke segment represented by the segment that connects the coordinate A2 to the coordinate A3 is drawn. Thereafter, the order information Uorder(PID) of “2” is associated with each of the coordinates A3 to A9 that indicate the trajectory of the electronic pen P.sub.A.
(107) Order information Uorder(PID) of “3” is associated with the coordinate B5 of the electronic pen P.sub.B. This is because the stroke segment represented by the segment that connects the coordinate A7 to the coordinate A8 is present directly under the stroke segment represented by the segment that connects the coordinate B4 to the coordinate B5 at a point in time when the stroke segment represented by the segment that connects the coordinate B4 to the coordinate B5 is drawn.
(108) As a result of the above processing, as shown in
(109) The before-and-after relation stored as described above is simplified to represent a superposition relation, in the segment unit, only when the superposition relation actually occurs that requires determination of which coordinate to display in an uppermost layer and which coordinate to display in a lowermost layer. In most other cases, the output Uorder(PID) is provided in the stroke unit. Order information is added only in rare cases where two strokes occur simultaneously and segments thereof intersect each other. In addition, the value is incremented only when intersection occurs, such that an amount of data can be reduced by performing differential coding as in the encoding of the point data PD.
(110)
(111) As shown in
(112) A record having “stroke” as the unit for storing the order information in
(113) The order confirmation processing has been described above. The ink file generation processing shown in step S40 in
(114) <Ink File Generation Processing>
(115)
(116) As shown in
(117)
(118) Concrete contents of data stored in the regions A1 to A9 are as follows. First, in the region A1, four characters “R,” “I,” “F,” and “F” indicating that the ink file 40 is generated in RIFF are arranged. In addition, in the region A2, a numerical value indicating the size of the ink file 40 is arranged. The regions A1 and A2 each have a size of four bytes. The file size indicated within the region A2 is used by a device that reproduces the ink file 40 (for example the digital ink reproducing device 50 shown in
(119) In the region A3, four characters (for example “W,” “I,” “L,” and “L”) are arranged, wherein the four characters indicate that the entire ink data stored in the regions A4 to A9 is described by an ink data output method according to the present invention (“WILL” is a trademark of the ink data and the ink data input/output/communication methods, systems and programs according to various embodiments of the present invention). The region A3 also has a size of four bytes. When the data within the regions A4 to A9 is described in another form such as InkML or the like, the contents stored in the region A3 are different from the above, of course.
(120) In the region A4, four characters of a character string (for example “I,” “N,” “K,” and “1”) are arranged, wherein the character string indicates that the data stored in the regions A5 and A6 is related to an ink chunk generated in a stroke data format to be described with reference to
(121) In the region A5, an ink chunk size, which is data indicating the size of the region A6, is stored. The region A5 also has a size of four bytes. This ink chunk size is used by the device that reproduces the ink file 40 (for example the digital ink reproducing device 50 shown in
(122) In the region A6, an ink chunk including one or more pieces of stroke data SD is stored. The size of the region A9 is an integer multiple of four bytes. When an amount of data of the ink chunk is not exactly an integer multiple of four bytes, predetermined padding data is inserted at an end. Concrete contents stored in the region A6 will be described later in detail with reference to
(123) In the region A7, four characters “X,” “M,” “P,” and “-” are arranged, wherein the four characters indicate that data stored in the regions A8 and A9 is described in an XMP format, out of XML formats. The region A7 also has a size of four bytes. “-” is padding data for adjusting the size of the region A7 to four bytes.
(124) The region A8 stores a metadata chunk size, which is data indicating the size of the region A9. The region A8 also has a size of four bytes. This metadata chunk size is used by the device that reproduces the ink file 40 (for example the digital ink reproducing device 50 shown in
(125) The region A9 stores a metadata chunk including the above-described metadata block. The size of the region A9 is an integer multiple of four bytes. When an amount of data of the metadata chunk is not exactly an integer multiple of four bytes, predetermined padding data is inserted at an end. Concrete contents stored in the region A9 will be described later in detail with reference to
(126) The description returns to
(127)
(128)
(129) An attribute having a hierarchical structure such as the stroke attribute or the like is described by a structure that has plural pairs of a key (k) and a value (V) arranged in each value, as shown in
(130) The description returns to
(131) The encoding of the stroke data SD according to the first format will be described in more detail.
(132) Next, the ink file generating section 37 encodes the key (3) and value of a style attribute (step S4043). Here, the style attribute has a hierarchical structure, as is understood from the description within the stroke data format S_Fmt (see
(133) Next, the ink file generating section 37 encodes the key (4) of a stroke attribute (step S4044), and thereafter encodes the value of the stroke attribute (steps S4045 to S4052). Specifically, the key (1) of a point attribute is first encoded in relation to each of coordinates included within the stroke data SD (step S4045), and the value of the point attribute is next encoded (steps S4046 to S4048). The value of the point attribute is formed by a combination of point data PD and order information Uorder(PID).
(134) Specifically, the value of the point attribute is encoded as follows. First, each of an x-coordinate and a y-coordinate is converted into an integer value by the following Equation (1) using the value of the integer conversion precision information attribute obtained in step S4042 (step S4046). Incidentally, xfloat and yfloat in Equation (1) respectively denote the X-coordinate and the y-coordinate of a floating point number type before the conversion. Xint and yint respectively denote the x-coordinate and the y-coordinate of an integer type after the conversion. decimalPrecision denotes the value of the integer conversion precision information attribute. In addition, a symbol (int) at a start of a right side denotes a function of extracting only an integer part.
(135)
(136) Next, a differential value of each of the x-coordinate and the y-coordinate is derived (step S4047). As shown in the following Equation (2) and Equation (3), for a zeroth coordinate, the differential value is derived by outputting the value of the coordinate as the differential value, and for an ith coordinate, the differential value is derived by outputting, as the differential value, a value obtained by subtracting the value of the ith coordinate from an immediately preceding (i−1)th coordinate. Incidentally, x.sub.diff and y.sub.diff in Equation (2) and Equation (3) denote the differential values derived for the x-coordinate and the y-coordinate, respectively. The differential values are thus obtained and encoded after the conversion into the integer values in order to reduce an amount of data of the stroke data SD by performing entropy encoding, in which use of the variable length encoding method of the variable byte code described with reference to
(137)
(138) After deriving the differential values, the ink file generating section 37 encodes the derived differential values and the order information Uorder(PID) (step S4048). Details of this encoding are described above with reference to
(139) The ink file generating section 37 repeats the processing of steps S4045 to S4048 for all of point data PD within the stroke data SD (step S4050). Then, after the processing for all of the point data PD is completed, the key (2) of a stroke identification information attribute is encoded (step S4051), and further the variable Stroke_id(PID) is encoded as the value of the stroke identification information attribute (step S4052). The value of the stroke identification information attribute is thus information uniquely identifying the stroke data SD within the ink file 40. As a result of the above processing, the encoding of the key and value of the stroke attribute is completed. Thereafter, the ink file generating section 37 outputs the encoded series of pieces of data (step S4053).
(140) The description returns to
(141) Here,
(142) The description returns to
(143) <Grouping Processing>
(144)
(145) The description returns to
(146)
(147) <Generation of Metadata Block>
(148) The metadata block is information retained in the metadata chunk, separate from the stroke data chunk, in order to perform N:M association of M (M is an integer of 1 or more) pieces of stroke data generated by the stroke data generating section 32 with N kinds (N is an integer of 1 or more and M or less) of metadata generated by the metadata generating section 33, wherein the N kinds of metadata respectively identify N kinds of input devices, such as electronic pens or the like.
(149) A description B1a within the metadata block B1 shown in
(150) Similarly, a description B2a within the metadata block B2 represents a corresponding logical name LN (“Greg Nelson” in this case). A description B2b within the metadata block B2 represents the value (sixth to ninth in this case) of a stroke identification information attribute assigned to each of one or more pieces of stroke data SD corresponding to the logical name LN “Greg Nelson.” Based on these descriptions B2a and B2b, the metadata block B2 functions as information associating the logical name LN (second metadata) identifying the electronic pen P.sub.B (second input device) with a second group formed by grouping one or more pieces of stroke data SD (second stroke data) generated by the electronic pen P.sub.B (group identified by the values of the stroke identification information attributes described within the description B2b).
(151) In this case, in the metadata blocks B1 and B2 shown in
(152) The description returns to
(153) As described above, the ink file output method according to the present embodiment can store the logical names LN and the stroke data SD in association with each other within the ink file 40. Hence, when the ink file 40 is reproduced, a logical name LN and stroke data SD can be associated with each other on the basis of the information written within the ink file 40. The processing of reproducing the ink file 40 depending on (according to) the logical name LN, that is, the electronic pen P can therefore be realized.
(154) In addition, in a case where the particular stroke data encoding method is not supported, it becomes possible to determine whether or not stroke data written by a particular input device is included in the ink file before attempting to decode the stroke data.
(155) Reproduction of the ink file 40 as described above will be described in the following with reference to
(156) <Processing of Reproducing Ink File 40>
(157)
(158) The ink file receiving section 51 is a functional unit that receives an input of the ink file 40 generated by the digital ink generating device 30. The ink file receiving section 51 is configured to output the metadata chunk MC and the ink chunk IC included in the ink file 40 to the metadata decoding section 52 and the stroke data decoding sections 53-1 to 53-n, respectively.
(159) The metadata decoding section 52 is a functional unit that decodes the metadata chunk MC, and which receives an input of filter information from the application 100. The filter information is information identifying one or more logical names LN. The filter information is specified by the user, for example. According to the filter information, the metadata decoding section 52 extracts stroke identification information stroke_id to be reproduced from the decoded metadata chunk MC. In addition, the metadata decoding section 52 identifies the encoding system of the ink chunk IC from a description in the metadata chunk MC. The metadata decoding section 52 is configured to then supply the extracted stroke identification information stroke_id to a stroke data decoding section 53 corresponding to the identified encoding system.
(160) To describe the above-described processing by the metadata decoding section 52 by referring to a concrete example, when filter information “David Smith” is specified for the ink file 40 having the metadata chunk shown in
(161) In addition, the metadata decoding section 52 supplies the one or more logical names LN specified by the filter information to the ink data retaining section 54.
(162) As with the stroke data encoding sections 35-1 to 35-n shown in
(163) The ink data retaining section 54 is configured to extract a series of pieces of point data PD and order information Uorder(PID) from the stroke data SD supplied from the stroke data decoding section 53, and supply the series of pieces of point data PD and the order information Uorder(PID) to the image generation processing section 55. The image generation processing section 55 is configured to generate, on the basis of the series of pieces of point data PD and the order information Uorder(PID) thus supplied, a video signal to be displayed on the display 60 or an image file 61 as raster data.
(164)
(165) As shown in
(166)
(167) Next, the stroke data decoding section 53 corresponding to the encoding system obtained in step S512 decodes the ink chunk (step S514). Apart decoded here is a part corresponding to the stroke data format S_Fmt encoded in step S402 in
(168) As described above, according to the ink file reproducing method according to the present embodiment, when the ink file 40 generated by the ink file output method according to the present embodiment is reproduced, only the stroke data SD corresponding to the logical name LN specified by the filter information can be set as an object of rendering.
(169) In addition, when the ink file 40 generated by the ink file output method according to the present embodiment is reproduced, it is possible to determine in advance whether or not the stroke data corresponding to the logical name LN specified by the filter information is included.
(170) In addition, the stroke data decoding section 53 decodes only the stroke data SD corresponding to the logical name LN specified by the filter information. Thus, processing load (overhead) required for the decoding can be reduced as compared with a case where only after the entire ink chunk IC is decoded can the stroke data SD corresponding to the logical name LN specified by the filter information be selected.
(171) In addition, the order of rendering of coordinates is stored within the stroke data SD by storing order information Uorder(PID) in association with the respective coordinates within the stroke data SD when the ink file is generated. As such, at a time of reproduction of the ink file, the coordinates are rendered according to the rendering order. Thus, complex before-and-after relation among a plurality of pieces of stroke data SD, as illustrated in
(172) Description will next be made of an ink file managing method according to a second embodiment of the present invention.
(173) Each computer 1 is similar to that described in the first embodiment. Each computer 1 is coupled to a position detector 20 or a display 60, and is configured to be able to generate and reproduce an ink file 40. However, in the present embodiment, the ink server 70 reproduces the ink file 40. Therefore each computer 1 does not necessarily need to include the digital ink reproducing device 50 shown in
(174) The ink server 70 is a server that implements a service known as a cloud service. The ink server 70 has the configuration (not shown) of an ordinary server computer, which includes a CPU, a communication circuit, a storage device, and the like. The storage device includes a main storage device such as a main memory or the like and an auxiliary storage device such as a hard disk or the like. Each function of the ink server 70 is implemented by the operation of the CPU according to a program stored in the storage device.
(175) A storage 71 as an external storage device is coupled to the ink server 70. When an ink file 40 is transmitted (uploaded) from a computer 1 to the ink server 70 by a user operation on the computer 1, the ink server 70 stores the received ink file 40 in the storage 71.
(176) The storage 71 stores an ink table illustrated in
(177) When the ink server 70 receives the ink file 40 from the computer 1, the ink server 70 obtains the one or more logical names LN described within the metadata chunk and the encoding system of the stroke data SD by decoding the ink file 40. Then, the one or more logical names LN and the encoding system of the stroke data SD are additionally written to the ink table together with the file name and the information indicating the account of the user.
(178) Here, the ink file 40 described in the first embodiment may not include the description of logical identification information LID. In this case the ink server 70 cannot obtain the logical identification information LID when decoding the ink file 40. Hence, when using the ink file 40 described in the first embodiment, the ink server 70 needs to obtain the logical identification information LID of each logical name LN from the computer 1 separately from the ink file 40. On the other hand, when using the ink file 40 that includes the description of the logical identification information LID, it suffices for the ink server 70 to obtain the logical identification information LID from the description within the ink file 40 as in the case of the above-described logical name LN.
(179) When one or both of the logical name LN and the logical identification information LID cannot be obtained, it suffices for the ink server 70 to leave the corresponding field or fields in the ink table blank. In addition, it is not essential to provide the column of logical identification information LID in the ink table. When logical identification information LID need not to be used as one of search conditions, the column of logical identification information LID may be omitted from the ink table.
(180)
(181) The ink file selecting section 73 is a functional unit that selects one or more ink files 40 from among one or more ink files 40 already stored in the storage 71. In addition, a receiving section 72 is a functional unit that receives, from a computer 1, an input of a search condition specifying one or more of a file name, an account, a logical name LN, logical identification information LID, and an encoding system shown in
(182) The receiving section 72 identifies an ink file 40 meeting the condition specified by the search condition in reference to the ink table within the storage 71 and makes the ink file selecting section 73 select the ink file 40. In addition, the receiving section 72 is configured to notify the switching section 75 of an ink chunk encoding system corresponding to the identified ink file 40, and when a logical name LN or logical identification information LID is specified, to output filter information identifying the specified logical name LN or the specified logical identification information LID to the metadata decoding section 74. The filter information is similar to the filter information described with reference to
(183) The metadata decoding section 74 is a functional unit that decodes the metadata chunk MC supplied from the ink file selecting section 73, and when supplied with the filter information from the receiving section 72, extracts only the stroke identification information stroke_id to be reproduced from the decoded metadata chunk MC according to the filter information. Functions of the metadata decoding section 74 are similar to those of the metadata decoding section 52 shown in
(184) Here, the ink file 40 described in the first embodiment may not include logical identification information LID within metadata thereof. In such case, when logical identification information LID is specified by the filter information, the metadata decoding section 74 cannot extract stroke identification information stroke_id properly. The specification of the logical identification information LID by the filter information is effective only when the logical identification information LID is stored within the metadata of the ink file 40.
(185) The switching section 75 is a functional unit that supplies the ink chunk IC supplied from the ink file selecting section 73 to a stroke data decoding section corresponding to the encoding system notified from the receiving section 72 among the stroke data decoding sections 76-1 to 76-n. The stroke data decoding section 76 decodes the ink chunk IC supplied from the ink file selecting section 73 using the corresponding encoding system. At this time, within the ink chunk IC, only the stroke data SD corresponding to the one or more pieces of stroke identification information stroke_id supplied from the metadata decoding section 74 is set as an object for the decoding processing. As in the case of the above-described stroke data decoding section 53, this is intended to reduce processing load (overhead) of the decoding processing. The stroke data decoding section 76 is configured to then output the decoded one or more pieces of stroke data SD to the ink data retaining section 77.
(186) As with the ink data retaining section 54 shown in
(187) The ink server 70 transmits one or more image files 61 generated as described above to the computer 1 in response to the received search condition. The user of the computer 1 can thereby obtain, or view on the display 60, the image file 61 of each of the one or more ink files 40 matching contents specified by the search condition. In addition, when a logical name LN or logical identification information LID is specified in the search condition, each image file 61 can be formed with only the stroke data SD corresponding to the specified logical name LN or the specified logical identification information LID.
(188)
(189) As shown in
(190) Next, the ink server 70 refers to the ink table within the storage 71, and obtains the file name of each of one or more ink files 40 matching the search condition. The ink server 70 then selects the one or more ink files 40 each corresponding to the obtained file name from one or more ink files 40 stored within the storage 71 (step S62).
(191) The image generation processing described with reference to
(192) As described above, the ink file managing method according to the present embodiment allows for use of an input device, in reference to a logical name LN, logical identification information LID, or the like, as a search condition to search for (or in) an ink file 40. That is, it becomes possible to specify an input device as one of search conditions in a search for an ink file 40.
(193) In addition, according to the ink file managing method according to the present embodiment, when a logical name LN or logical identification information LID is specified as a search condition, each image file 61 output as a result of a search can be formed with only the stroke data SD corresponding to the specified logical name LN or the specified logical identification information LID.
(194) Description will next be made of an ink file output method according to a third embodiment of the present invention.
(195) Each computer 1 is configured to transmit stroke data SD, which may be retained in the ink data retaining section 34 among the functional blocks of the ink file generating device 30 shown in
(196) The ink server 70 includes a transfer filter 80 and an ink file generating section 81. The transfer filter 80 is provided between the plurality of computers 1, which are used to generate one ink file 40 simultaneously. The transfer filter 80 has a configuration including a switch inserted between an up line from each computer 1 and a down line to each other computer 1. When the switch is on, stroke data SD and a logical name LN uploaded from each computer 1 are transferred to the other computer 1 in real time. Each computer 1 is configured to display the stroke data SD and the logical name LN thus transferred in real time on a display 60 together with stroke data SD and a logical name LN generated by the computer 1 itself. The user of each computer 1 can thereby experience generating one ink file 40 simultaneously (and collaboratively) with a user present at a remote place. In addition, the display of the logical name LN together with the stroke data SD enables the user of each computer 1 to determine which entity is drawing the stroke data SD being displayed.
(197) The stroke data SD and the logical name LN uploaded from each computer are supplied to the ink file generating section 81 within the ink server 70. The ink file generating section 81 is configured to temporarily retain the stroke data SD and the logical name LN that are supplied. The ink file generating section is configured to start to generate an ink file 40 on the basis of the stroke data SD and the logical name LN that are retained, using an instruction received from one of the computers 1 to output the ink file 40 as a trigger.
(198) The processing of generating the ink file 40 by the ink file generating section 81 is basically similar to the processing by the ink file generating section 37 shown in
(199)
(200) For example, descriptions within the ink table in relation to the file name #F4 are obtained in a case where David Smith generates stroke data SD using two electronic pens P whose logical identification information LID are “Pid #1” and “Pid #2,” respectively, on a computer 1 that has logged in to the ink server 70 under an account #AC1, and where Greg Nelson simultaneously generates stroke data SD using an electronic pen P whose logical identification information LID is “Pid #3” on another computer 1 that has logged in to the ink server 70 under an account #AC2, wherein David Smith specifies WILL as the encoding system of the stroke data SD and Greg Nelson specifies InkML as the encoding system of the stroke data SD. Configuring the ink table as in
(201) As described above, the ink file output method according to the present embodiment can provide the user of each computer 1 with an experience of generating one ink file 40 simultaneously with a user located at a remote place. In addition, at the time of reproduction of the ink file 40, an appropriate search can be made for the thus generated ink file 40 according to search conditions such as an account, a logical name LN, logical identification information LID, the encoding system of stroke data SD, or the like.
(202) Preferred embodiments of the present invention have been described above. However, the present invention is not limited to these embodiments. The present invention can be carried out in various further modes without departing from the spirit of the present invention.
(203) For example, in
(204) While pen pressure information is not used in the processing of generating an ink file 40 as described with reference to
(205) In addition, with regard to the rendering of an ink file 40 described in the third embodiment, identification of the encoding system of stroke data SD may be included in the filter information. In other words, while the third embodiment has been described above in reference to an ink file 40 including a plurality of pieces of stroke data SD encoded by encoding systems different from each other, in reproducing such ink file 40, the digital ink reproducing device 50 (see
DESCRIPTION OF REFERENCE SYMBOLS
(206) 1 Computer 20 Position detector 30 Digital ink generating device 31 Input processing section 32 Stroke data generating section 33 Metadata generating section 34 Ink data retaining section 35-1 to 35-n Stroke data encoding section 36 Metadata encoding section 37 Ink file generating section 40 Ink file 50 Digital ink reproducing device 51 Ink file receiving section 52 Metadata decoding section 53-1 to 53-n Stroke data decoding section 54 Ink data retaining section 55 Image generation processing section 56 Display 61 Image file 70 Ink server 71 Storage 72 Receiving section 73 Ink file selecting section 74 Metadata decoding section 75 Switching section 76-1 to 76-n Stroke data decoding section 77 Ink data retaining section 78 Image generation processing section 80 Transfer filter 81 Ink file generating section 90, 91 Computer system 100 Application 310 Input-output interface 311 to 315 Driver 330 Address space unifying section 331 LID converting section 332 Device type recording section 3300, 3301 UID extracting section 3302 N-bit space mapping processing section 3310 Switching section 3311 Name deriving section 3312 Hash section 3313 URN converting section B1, B2 Metadata block P Electronic pen