function preprocessForSpecifiedCategory(thisOption) {
	        // Hash categories.
	        var categories = thisOption.categories;
	        var visual = thisOption.visual;

	        var categoryMap = thisOption.categoryMap = {};
	        each(categories, function (cate, index) {
	            categoryMap[cate] = index;
	        });

	        // Process visual map input.
	        if (!zrUtil.isArray(visual)) {
	            var visualArr = [];

	            if (zrUtil.isObject(visual)) {
	                each(visual, function (v, cate) {
	                    var index = categoryMap[cate];
	                    visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;
	                });
	            }
	            else { // Is primary type, represents default visual.
	                visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;
	            }

	            visual = setVisualToOption(thisOption, visualArr);
	        }

	        // Remove categories that has no visual,
	        // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.
	        for (var i = categories.length - 1; i >= 0; i--) {
	            if (visual[i] == null) {
	                delete categoryMap[categories[i]];
	                categories.pop();
	            }
	        }
	    }
'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.
Other visuals are only depends on themself.

@public
@param {string} visualType1
@param {string} visualType2
@return {boolean}