## makeup|SDK API
makeup|SDK provides three APIs: Objective - C API for iOS, Java API for Android and Javascript API for HTML5. All of the APIs include following functionalities:
- Creation and destruction of virtual makeup
- Hiding and showing of virtual makeup
- Updating virtual makeup
- Retrieval of predefined virtual makeup from feature template descriptors
- Retrieval of UI view in which camera feed and visible makeup features are rendered


For makeup|SDK to be used contents of lib directory of the package must be copied to platform dependent folders used to locate binary dependencies.
 
The following sections provide an overview of the APIs and give links to most important
classes, as well as to sample projects demonstrating particular functions.

### Javascript API
The API provides function for manipulation of virtual makeup. Javascript API is available for HTML5 only.
The API is implemented in a single module:
- ***MakeUpSDK.js*** - manipulation and rendering of virtual makeup based on visage|SDK face tracking and Three.js rendering engine.

#### Virtual makeup functionality
Virtual makeup engine tracks face of a single user and controls rendering of virtual makeup to achieve AR functionality of virtual makeup.
Virtual makeup is composed using template files storing description of used makeup feature and, optionally, a finish for selected feature. 
Virtual makeup rendering is demonstrated in MakeApp sample projects.

#### Skin tone estimation functionality
Provides color shade and monk scale obtained by estimating person's skin tone. 
Feature is demonstrated by SkinTone sample.

#### Face tracking functionality
Provides facial data obtained using visage|SDK. 

**Main classes**
- MakeUpEngine: Provides functions for manipulation of virtual makeup features.
- FeatureTemplate: A template storing description of a virtual makeup feature.
- FinishTemplate: A template storing description of a virtual makeup finish.
- FeatureTemplateRepository: Stores a list of predefined virtual makeup features.
- FinishTemplateRepository: Stores a list of predefined virtual makeup finishes.
- SkinToneAnalyzer: Provides functions for starting, reseting, and stopping skin tone analysis.
- FaceTracker: Provides functions for starting, reseting, and stopping face tracking.

## Migration from older versions
Visage Technologies strives to minimize changes in API and configuration files when releasing new versions of the SDK. The inevitable changes are listed here together with specific instructions for developers who have existing applications built with older versions.

### Changes in this release

This section covers changes introduced in current release since makeup|SDK 4.1. 

#### Rendering changes
Improved eyeliner rendering to blend naturally with eyelashes; higher intensity levels may be needed to achieve fuller color opacity.

### Changes in older releases

### makeup|SDK 4.1.

#### API changes
###### Support for multiple license types
Parameters of SDKProvider.GetProvider method are changed to support multiple license types enabling makeup, shade finder, and/or face tracking features.
- Previously used SDKProvider.GetProvider method, which accepts "license" and "isLicenseRaw" parameters for enabling makeup features, is removed. Please use new SDKProvider.GetProvider method with "licenses" parameter of record type. The "licenses" argument can contain multiple license type keys ("makeup", "skintone", and/or "facetrack") and corresponding record values containing "license" and "isRaw" keys (used in similar way as the previous arguments). Bool value of "isRaw" argument specifies if "license" argument value corresponds to content of the license file or to the license file URL. 
For more details, please see GetProvider API documentation.

###### Usage of proper "Makeup" name
makeup|SDK 4.1 API class and methods containing occurrences of “MakeUp” are deprecated and new API class and methods containing proper name “Makeup” are introduced.
- Method SDKProvider.CreateMakeUpEngine and class MakeUpEngine are deprecated. Please use new SDKProvider.CreateMakeupEngine method and class MakeupEngine.
- Name of “MakeUpSDK.js” file in "lib" directory of makeup|SDK package is changed to "MakeupSDK.js". Please use “MakeupSDK.js” file name.
For more details, please see SDKProvider and MakeupEngine API documentation.