Method and system for indicating a license status of an object

A tag is attached to an unlicensed object indicating that a user does not have an appropriate license for using the object. The tag partially obscures the object while allowing the object to function as a licensed object. The tag may be indicia that indicates the unlicensed status of the object. Drawings created with unlicensed objects may also be partially obscured with a tag.

BACKGROUND OF THE INVENTION

The invention relates in general to licensing objects and more specifically to a method and system for indicating the status of a license.

Numerous software applications exist for performing various types of functions on computers. Software distribution schemes allow users to download software through communication networks such as the Internet. Due to competition in the market, many software manufactures have used these distribution schemes to provide a free trial application to a potential customer allowing the potential customer to use the software application for a limited time or in a limited capacity. If satisfied, the customer may purchase the full commercial version of the software or may purchase a license to continue using the trial software application.

Conventional licensing schemes, however, are limited in several ways. If the licensing techniques provide a functionally limited version of the commercial software application, the software provider risks that the trial version will be adequate for the potential customer. If the trial version is severely limited in functionality, the software provider risks that the potential customer will not fully appreciate the capabilities of the commercial software. On the other hand, if the trial version is not limited enough, the potential customer will not buy the commercial version and will continue using the trial version eliminating a potential sale.

A licensing scheme involving a time limited version of the commercial product is limited in that trial time may be too long or too short. If the trial version is set to expire too early, the potential customer may not have an opportunity to adequately examine the software product. If the expiration of the trial software is set to far in the future, the potential customer may use the software to complete a project and may not desire to purchase the commercial version.

Drafting, graphic and other visual software applications are particularly sensitive to the issues discussed above. Most graphic applications use numerous drawing objects that typically need to be updated periodically. Further, the large libraries of drawing objects may need to be expanded to provide an adequate database of contemporary objects.

Therefore, there exists a need for method and system for licensing software, digital objects, and other digital data that allows a potential customer to sample the product with a maximum functionality while maintaining customer motivation to purchase a license.

SUMMARY OF THE INVENTION

In an exemplary embodiment of the invention, a licensing management system and method allows a graphics program to be sampled by a potential customer while maintaining a motivation of the potential customer to purchase a license. Drawing objects not having a valid license can be used within the graphics application in the same capacity as a licensed object except that the unlicensed objects are marked with tag indicating that the object is not licensed. The tag in the exemplary embodiment is text indicia printed across the object indicating that the object is not licensed. The tag is digitally connected to the object and cannot be separated without a proper license.

In addition to a tag associated with each unlicensed object, a drawing created with an unlicensed object is also marked with a tag indicating that the drawing was created without a license. The potential customer may continue to use and sample the software application and various libraries without obtaining a license. The potential customer, however, is motivated to purchase a license due to the inconvenience of the tags. In addition to unsightly tags found in the drawing, the potential customer will be motivated to obtain a license to avoid the appearance of impropriety when displaying the drawings in a business relationship.

This embodiment allows a user to have multiple licenses corresponding to different aspects of the graphics program. The user only pays for specific requested libraries and is not forced into paying a single licensing fee to obtain unwanted libraries or objects. The user can sample libraries without purchasing a license. Documents created with an unlicensed library will include the tags attached to unlicensed objects. The tags are removed, however, when a valid license is obtained.

In the exemplary embodiment, the user obtains immediate feedback of the licensing status when accessing libraries. If the user opens a library that is not licensed to the user, a message box is displayed indicating the library is unlicensed. When an unlicensed object is selected, the tag is visually displayed over the object as discussed above.

A valuable feature of the exemplary embodiment is that the license is not easily transferable from one user to another. Although a library van be transferred from one processor to another, a license associated with the library is embedded within application code and is difficult to locate. Further, in a preferred embodiment of the invention, the license is encrypted using the hard drive serial number of the user's computer.

Another feature of the exemplary embodiment is that the license for each library can be time limited. An expired, but otherwise valid, license allows the user to continue using the library without having tags displayed. A library opened with a valid license before the expiration of the license can be opened without invoking the unlicensed process of displaying tags on the objects of the library as long as the license can be located in memory. Therefore, the library can be used indefinitely if it had been opened with a valid license and the license exists in memory even if the license has expired.

An advantage of the exemplary embodiment is that newly developed libraries can be distributed to potential purchases on a subscription basis. A subscription to a particular library set results in the user receiving newly developed libraries related to the particular license during a predetermined period. The objects within new libraries downloaded by the user and opened during the license (subscription) duration will not contain the tags.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Briefly referring toFIGS. 1,3, and7, a licensing method and system facilitates the licensing of objects102and object libraries300for use in a graphic drawing application program706in the exemplary embodiment. When run on a computer processor702, the graphics program706facilitates efficient and accurate creation and editing of block diagrams, organizational charts, flow charts, schematics, floor plans, maps, presentations, clip art drawings, and other types of pictorial representations. Those skilled in art will recognize that application programs, such as the exemplary graphics program, include various lines of code arranged and formatted in accordance with the particular operating system704running on a computer.

The exemplary graphics program706utilizes a large number of drawing objects102representing various elements, figures or functional blocks that are arranged into several object libraries300. The objects102within a library300are related by subject matter or by function. For example, a flow chart library containing the various block symbols used for creating a flow chart includes such shapes (objects) as ovals (start/end symbol), rectangles (perform function symbol), and diamonds (decision function symbol). Different object libraries300may contain some of the same objects102due to overlapping subject matter of different disciplines.

As explained below, the user obtains the graphics program706and the libraries300through the Internet712in the exemplary embodiment. The user logs onto the network712, accesses a user interface provided by the software provider and downloads the desired libraries300. Other methods such as mail distribution using CD-ROM or diskettes may be used in alternate embodiments.

A license procedure708implemented within the graphics program706manages licenses for libraries300and objects102by coupling a tag104to an object102to indicate that the object102is unlicensed. The license procedure708is implemented by running several lines of software code contained within the graphics program706on the computer702. In the exemplary embodiment, therefore, the licensing procedure708is an integral part of the graphics program706. In other embodiments, however, the licensing procedure708may be implemented as a separate routine that can be accessed by a main program (706).

The user may use the objects102within the library300to create drawings without purchasing a required license. If, however, a required license is not obtained for the downloaded library300, the objects102within the unlicensed library300appear with indicia (104) across the object102partially obscuring the object102and clearly indicating that the object102is not licensed. As discussed below, various techniques may be used to tag the object102as unlicensed.

A drawing (document) created with unlicensed objects102is tagged as unlicensed. When the drawing containing unlicensed objects102is opened, a warning message is displayed indicating that the drawings contains unlicensed objects102. An unlicensed object102within the document is displayed with a tag104.

An object102from an unlicensed library300may be moved, coupled, and resized within the drawings with the same functionality as a licensed object102. The unlicensed indicator (tag), however, cannot be removed from the object102without authorization and without great effort by the user. The ungroup function is disabled for an unlicensed object to discourage a user from ungrouping the various components of an unlicensed object102and selecting only the tag component (104) for deletion. If the user obtains a license, any existing documents (drawings) that have unlicensed objects102will not appear with the unlicensed indicator. Documents created subsequent to obtaining the license and made during the license term will not include the unlicensed indicator. Drawings created by the user during the license term remain without the unlicensed indicators.

FIG. 1is block diagram of an object102in accordance with the exemplary embodiment of the invention. The exemplary object102shown inFIG. 1has a tag104indicating that the object102is unlicensed. The exemplary object102is a graphic representation of a piece of electrical equipment and is chosen for illustrative purposes. In the exemplary embodiment, the object102is any type of visual object such as drawing, photograph, symbol, or text The object102may also be a combination of two or more types of visual objects. The object102may be displayed on a video output device such as a display monitor, television, or projector or may be produced on a printing media such paper or velum by a video output device such as a printer, copier or facsimile machine.

The object102is, preferably an image created in accordance with the Windows® Application Program Interface (API). An object102may be a vector or bitmap image formatted in accordance with a Windows® Metafile Format (WMF) or other format that is operable with the Windows® API or any other API capable of producing images. As discussed below, the library contains an object data string that provides descriptive information related to each object102. When a user performs operations to place and object102into a document from a library, the object data string is used to create an object record within the document. The object record contains the information and instructions that, when applied to the Windows® API, form the object102on the monitor screen or other media. A license indicator in the object record indicates where the object102is unlicensed and a tag should be included in the object102image. In the exemplary embodiment, the license indicator is a single bit that is set when the object record in the document is created. When the license indicator is interpreted by the application and the Windows® API, a record tag is retrieved and the object102is created with the tag.

In the exemplary embodiment, the tag record provides Windows® API based instructions to form indicia that is displayed over the object102allowing the object102to be partially obscured by the tag when the object102is displayed. Preferably, the tag is indicia having white letters with a black outline that clearly indicates that the object102is unlicensed. This allows the same tag file to be used with any type of object102. If the object102is light colored, the black outlines around the white letters stand out against the lighter background. If the object102is dark, the white letters clearly show up against the darker background.

FIG. 2is a block diagram of an exemplary object record200associated with the exemplary object102. The object record200includes at least a description string204, a license indicator202and object attributes data206. The object record200is created within the document file when the user inserts the object102from the library to the document. The various fields within the object record200are arranged and formatted in accordance with the particular application and the operating system. Without the proper software tools, however, the different fields are difficult to identify and interpret. The description string204includes several bits of information that describe the image of the object102. In the exemplary embodiment, the description204may be a vector image description, bit map image description or a combination of bitmap and vector descriptions. The object attributes data206includes various types of information relating to the object's102attributes such as growth dimensions, location, and rotation point. The license indicator data202is a single bit, in the exemplary embodiment, that indicates whether the tag104should be coupled to the object102. When a tag104is to coupled to an object102, the tag record is used to form the tag over the object102. When the object102is either displayed through a device or printed, the tag104is also displayed or printed, partially obscuring the object102. In accordance with the application, the tag104is centered across the object102and the proportionality between the tag size and the object102size remains constant as the size of the object102is changed.

In addition to indicating whether the object102should include a tag104, the license indictor202results in a disabling of the ungroup function for the object102when detected. A group function typically provided in drawing applications allows the various components of and object102to be grouped together to form a single object102which is selected, moved, deleted, resized or copied as a single object. The ungroup functions allows the various components of a grouped object to behave as independent objects. This function is often used to edit objects by selecting individual components of an object102.

The object records200are complicated files that include large amounts of data that is not easily understandable without the appropriate knowledge and tools. An unscrupulous individual, therefore, wishing to remove the tag104without authorization would expend an unjustifiable amount of time deciphering and editing the object record200to create a new record associated with an object102that no longer contained the tag104. If a valid license is obtained, the data in the object record200is modified to remove the instruction to include the tag104by setting the license indicator202to the appropriate value. The ungroup function also is enabled for the object102as a result of the changed license indicator.

FIG. 3is block diagram of an exemplary library300in accordance with the exemplary embodiment of the invention. Preferably, the library300includes a header302, and several object data strings304. The header contains a library license field306and an object string characteristics308. The object string characteristics308include information relating to the objects102found in the library which may include parameters such as the number of object data strings304, location of each object data string in the library, and other descriptive information relating to the object data strings304.

Each of the object data strings304contains several bits of information that describe the appearance of the object102. When the object record200is formed in the document, the object data string304associated with the object102is used to create the description string204in the object record200.

In the exemplary embodiment, the library license field306includes a license name string identifying the license required for the library300. When a license is obtained and stored in memory, the license name string is used to locate the license.

Those skilled in the art will recognize the variety of structures and formats that may be used to create the library file and that the library file may contain additional information as compared to the exemplary library300.

FIG. 4is a flow chart of a method of opening a library300in accordance with the exemplary embodiment of the invention. At step402, a command is received from the user to open the library300. Any one of several known methods may be used to indicate that the user is attempting to open the library300. For example, the user may use a mouse to select a symbol representing the library300.

At step404, it is determined whether the library300requires a license. The license name string is identified within the library license field306. If the library license field306indicates that no license is required, the method continues at step418where the library is opened using known techniques. A suitable method of indicating that no license is required includes using an absence of data as an indication. Other methods include including data that has a predetermined string.

If a license name string is found in the library license field306, the method continues at step406where the user memory is searched. Preferably, a search for the license name string is performed in the data structures of the program memory of the computer702running the license procedure708.

At step408, the results of the search of step406are used to determine whether the user memory contains the library license by determining whether the license name string exists in memory. If the appropriate license is not found, the method proceeds to step416where the library300is marked as unlicensed.

If a license matching the license name string is found, the application determines if the license has expired at step410. If the license has not expired, the library300is marked a previously opened by setting appropriate bits within the library license field at step412. After marking the library300as previously opened, the method proceeds to step418where the library is opened.

If the license is expired, the method continues at step414where the library license field306is read to determine if the library300has been previously opened with a valid license. The appropriate bits within the library license field306are analyzed to determine if the library300has been previously opened. If the library300has been previously opened with a valid and non-expired license, the method proceeds to step418. Otherwise, the method continues at step416where the library300is marked as unlicensed as it is opened at step418.

When the library300is opened at step418, a temporary library record is formed in accordance with known techniques except that the library record includes an open library license indicator that indicates whether the library has been opened with a valid license. If the library is marked as unlicensed at step416, the appropriate predetermined data string (open library license indicator) is inserted into the temporary library record to indicate that the library300has been opened without a valid license.

FIG. 5is flow chart of a method of inserting an object102from a library300into a document in accordance with the exemplary embodiment of the invention. After a library is opened, the user may select objects102to be used in a drawing (document). As described above, when the user selects and places and object102into a document, an object record200is produced within the document based on the object data string304in the library and other information. A tag is drawn with the object102partially obscuring the object102if the library300from which the object102was selected is unlicensed.

At step502, the application receives a command from the user to place an object102selected from a library300into a document. The command may be initiated in any one of several known ways. The user may, for example, use a mouse to select, drag and place a representative symbol of the object102into the drawing.

At step504, the open library license indicator in the library record associated with the library300is read to determine whether the library300is unlicensed. If the library300is licensed, an object record is created in the document at step506. Otherwise, the method continues at step508where a document license field is analyzed to determine if it contains a license name. The license name in the document license field indicates the unlicensed library300that was used to create at least one object102in the document. If no license names are found in the document license field, the document does not contain any unlicensed objects102. In this case, the document may contain objects102not requiring license and objects102inserted into the document when the appropriate valid license was available.

If the document license filed does not contain a license name string the method proceeds to step510where the license name string corresponding to the library300currently accessed is recorded in the document license field.

If the document contains unlicensed objects102, the method continues at step512where it is determined whether the license name string in the document license field is the same as the license name string of the current library300.

If the license name strings do not match, the method proceeds to step514where a message is displayed to the user indicating that the document contains objects102from another unlicensed library (300) and the object102selected can not be inserted into the document.

If the license names match, the method continues at step516. Therefore, if the library300is unlicensed and the document license field either does not contain a license name or contains the same name as the current library300, the method continues at step516.

At step516an object record200is created in the document. The license indicator data202in the object record200indicates that the tag104should be included with the object102.

The tag record is retrieved at step518. In the exemplary embodiment, the tag record is included in the program resources file containing various program image information such as the characteristics of menus and error messages, borders of window displayed by the program, scroll bars and other user interface graphics. Those skilled in the art will recognize that the tag record may be located in a variety of locations. For example, a tag record may be duplicated within each unlicensed object102and only used for drawing the object102if the unlicensed indicator bit is set in the object record.

At step520, the object102is created in accordance with the object record and the Windows® API. The object record200is interpreted by the API to form the various image components to create the object102on the monitor screen, on a printed medium through printer or through any other output visual device.

FIG. 6is flow chart of method of opening a document in accordance with the exemplary embodiment of the invention. After a document is created and stored electronically, it can be mailed electronically or otherwise transferred to another computer (702) or memory. Duplicates of the document can be created and stored or sent to other users. Preferably, if the document is created with a valid licenses, the document can be opened without the licenses corresponding to any of the libraries used to create the document.

At step602, a command is received from the user indicating that a document should be opened. The user may use any one of several known techniques to enter command such as using a mouse. The document is opened using known techniques at step603.

At step604, the document license field is examined to determine if a license name string is listed and if the document requires a license for a library300used to create at least one of the objects102found in the document. If no license name string is detected, the method proceeds to step608where the document is opened and to step614where the objects102within the document are drawn. Since the license indicator bit within each of the objects102in the document is not set to indicate that the objects102are unlicensed, the objects102are drawn, printed or otherwise displayed without the unlicensed tags.

If, however, a license name string is found in the document license field, the method continues at step606. A search is performed for the license name on the memory at step606. In the exemplary embodiment, the Random Access Memory (RAM) of the computer is searched using known techniques.

At step610, the results of the search performed at step606are used to determine if the user has a valid non-expired license corresponding to the license name found in the document license field. If the license is not found or if the license is expired, the method continues at step614.

At step614, the tag record is retrieved in order to obtain the necessary information to draw the tag across the object102when the object102is drawn, displayed or printed at step616.

If a valid, non-expired license is found, the method continues at step618, where the tags from the objects102are removed by setting the license indicator bit in every object102to indicate that the object102is not unlicensed.

At step620, the license name is removed from the document license field to indicate that the document has been opened with a valid, non-expired license. The method proceeds to step616where the objects102are drawn, printed or other wise displayed without the unlicensed tags. Therefore, in the exemplary embodiment, if a document is opened with a valid license it no longer requires a license to be viewed or printed without tags. Those skilled in the art will recognize that alternate methods may be used for determining when a particular document will include the-unlicensed tags based on other criteria.

As discussed above, the objects102are drawn printed or displayed at step616. The objects102are drawn with an unlicensed tag across the object102partially obscuring the object102if the license indicator bit (202) indicates that the object102is not licensed. The tag record and the object record200provide the necessary information when interfaces with the API to form the objects102with the tags. If, however, the license indicator bit indicates that the object102is licensed, the object102is drawn, printed or displayed without the record using the object record.

FIG. 7is block diagram of a software distribution system700in accordance with the exemplary embodiment of the invention. In the exemplary embodiment, the graphics program706, licenses and the object libraries300are downloaded to the user through a packet switched network712such as the Internet712. The various programs, licenses and libraries may be transferred to the user's computer702in any one a several known methods. For example, the digital information may be stored on a CD-ROM or magnetic medium and transferred to the computer702.

In the exemplary embodiment, a server computer includes an internet server process722that facilitates communication through the Internet712using known techniques. Files containing object libraries718and library licenses718are stored in memory (not shown) within the server computer720or are easily accessible by a processes running on the server computer720using known techniques.

A local processor702such as personal computer (PC) provides the necessary hardware for interfacing to the Internet and running application programs including the exemplary graphics program706and a Web browser710. An operating system (OS)704provides the low-level software which schedules tasks, allocates storage, handles the interface to peripheral hardware, provides a operational platform for applications and presents a default interface to the user when no application program is running. The operating system704in the exemplary embodiment is the Windows® 95 or later version of the Windows® OS available from Microsoft® Corporation. As discussed above, the license procedure708is performed as part of the graphics program706in the exemplary embodiment.

The user may access a Web site of the graphics program provider using the Web browser and the link associated with the Web site The user may access the server using other methods. For example, the application program can be designed to include the appropriate software to establish communications between the user and the server or other third party software may be used. In the exemplary embodiment, the application program is downloaded from the server720to the local processor702using known techniques. The user, preferably, receives a several basic object libraries300that do not require licenses when the application706is downloaded. As explained above, libraries300that do not require a license do not have a license name string within the library license field306of the library file300.

The user downloads an additional library300through the graphic user interface provided by the server computer720and Web browser710(or other communication application). The user navigates through the various web pages to find a desired library300. After the user indicates that a library300should be downloaded, an electronic file containing the appropriate instructions for loading the library300on the users system is transmitted through the internet to the local processor702. The file is launched to load the library file300in the appropriate location in memory. If the library300requires a license and the user has not yet obtained the license, the objects102may be used with the graphics program706and will appear with the tags104.

In order to obtain a license, the user accesses the appropriate web page and submits the requested information to the server computer720. Preferably, the information is sent in a secure state using known techniques. In the first embodiment, the requested information includes at least credit card information for billing purposes. The user's, name, credit card number, and expiration date are entered in the appropriate fields within a web page and sent to the server computer720.

The server computer720, in response to the license request, transmits a license loading file to the local processor702through the Internet712. The license loading file is downloaded to the local processor702. The license loading file includes a set of instructions that store the requested license on the memory of the local processor when executed. When launched, the license loading file causes either the creation, or modification of a license table800located on the memory of the local processor. If no license table exists, a license table is created. In the exemplary embodiment, the instructions corresponding to the license loading file are written to the system resource file and initiate the graphic drawing application program706that reads the instructions to perform the appropriate action.

If the a license table800exists, a license record is created and placed within the license table.FIG. 8is a block diagram of an exemplary license table800having several exemplary license records802. In the exemplary embodiment, each license record802includes the license name string804, an expiration data806, and maximum number of users allowed (user max)808. Other data may be included in each license record802. For example, the license record802may contain the serial number of the hard drive of the computer, personal name of the user, company name of the user or any other data relating to the administration or management of the license. When the license record802is created, the expiration date806and the user max808are encrypted. The unique identification number of the local processor702, such as the serial number of the hard drive, is included in the file to further restrict use of the table to the particular computer. In alternate embodiments, the license table800may contain other fields within the license records describing the particular license or providing information regarding the application of the license.

When a license is updated to reflect a new expiration date or other change, the license record for the license is determined in the license table800and overwritten with the new license record.

In the exemplary embodiment, the user obtains a subscription for a particular library set by purchasing a license having an expiration time. The license allows the user to download and use newly developed libraries related to the originally licensed library300without additional costs. The objects102from the libraries (300) will appear without the unlicensed tags since the local processor702contains the appropriate license. For example, if the user purchasing a license for a flow chart library that is valid for one year, the user may download new flow chart libraries for the year without the need for additional licenses and without having the unlicensed tags appear on the objects102from the new licenses. After the license expires, the user may continues to use the libraries (300) obtained during the license period without the objects102appearing with the tags104. Any objects102contained in libraries (300) having creation dates subsequent to the expiration date of the license, however, will appear with the unlicensed tag104.

Preferably, the user receives, through electronic mail, a message from the server computer indicating that new libraries have been created for the licenses that the user has obtained. In the exemplary embodiment, an electronic mail message is transmitted at four times per year to the user from the server computer720. The server computer720maintains a data base of all users that have purchased a license and corresponding expiration dates. The server computer720sends an electronic mail message to warn the user that a particular license is near its expiration date. The user is reminded that the objects102within new libraries (300) will be displayed with an unlicensed tag104unless a new license is obtained.

In an alternate embodiment, a user may purchase an updated license at a lower cost than a new license for the same library set. If a license update is purchased, the a license loading file is transmitted as explained above. The license record will only be stored in the license table800if an earlier license corresponding to the library set exists in the license table800exists.

Therefore, the licensing apparatus and method provides efficient management of access and use of newly developed libraries while allowing the user to sample review and use objects102within the libraries. The objects102within unlicensed libraries300will function as licensed objects102except that each object will include an unlicensed tag104partially obscuring the object102.

Although the exemplary embodiment described above relates to graphics programs and visual objects, those skilled in the art will recognize that method and apparatus for managing a license for an object may be used with other types of visual objects and other types of graphic programs.

Clearly, other embodiments and modifications of this invention will occur readily to those of ordinary skill in the art in view of these teachings. Therefore, this invention is to be limited only by following claims, which include all such embodiments and modifications when viewed in conjunction with the above specification and accompanying drawings.