All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bugvm.apple.coretext.CTParagraphStyleSettings Maven / Gradle / Ivy

There is a newer version: 1.2.9
Show newest version
/*
 * Copyright (C) 2013-2015 RoboVM AB
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.bugvm.apple.coretext;

import java.io.*;
import java.nio.*;
import java.util.*;

import com.bugvm.objc.*;
import com.bugvm.objc.annotation.*;
import com.bugvm.objc.block.*;
import com.bugvm.rt.*;
import com.bugvm.rt.bro.*;
import com.bugvm.rt.bro.annotation.*;
import com.bugvm.rt.bro.ptr.*;
import com.bugvm.apple.foundation.*;
import com.bugvm.apple.corefoundation.*;
import com.bugvm.apple.corefoundation.CFArray.CFArrayPtr;
import com.bugvm.apple.coregraphics.*;

public class CTParagraphStyleSettings {
    private Map settings = new HashMap<>();
    
    public void setAlignment(CTTextAlignment alignment) {
        BytePtr ptr = new BytePtr((byte)alignment.value());
        setValueForSpecifier(CTParagraphStyleSpecifier.Alignment, ptr.as(VoidPtr.class));
    }
    public void setLineBreakMode(CTLineBreakMode lineBreakMode) {
        BytePtr ptr = new BytePtr((byte)lineBreakMode.value());
        setValueForSpecifier(CTParagraphStyleSpecifier.LineBreakMode, ptr.as(VoidPtr.class));
    }
    public void setBaseWritingDirection(CTWritingDirection writingDirection) {
        BytePtr ptr = new BytePtr((byte)writingDirection.value());
        setValueForSpecifier(CTParagraphStyleSpecifier.BaseWritingDirection, ptr.as(VoidPtr.class));
    }
    public void setFirstLineHeadIndent(double lineHeadIndent) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(lineHeadIndent);
        setValueForSpecifier(CTParagraphStyleSpecifier.FirstLineHeadIndent, ptr.as(VoidPtr.class));
    }
    public void setHeadIndent(double headIndent) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(headIndent);
        setValueForSpecifier(CTParagraphStyleSpecifier.HeadIndent, ptr.as(VoidPtr.class));
    }
    public void setTailIndent(double tailIndent) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(tailIndent);
        setValueForSpecifier(CTParagraphStyleSpecifier.TailIndent, ptr.as(VoidPtr.class));
    }
    public void setDefaultTabInterval(double defaultTabInterval) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(defaultTabInterval);
        setValueForSpecifier(CTParagraphStyleSpecifier.DefaultTabInterval, ptr.as(VoidPtr.class));
    }
    public void setLineHeightMultiple(double lineHeightMultiple) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(lineHeightMultiple);
        setValueForSpecifier(CTParagraphStyleSpecifier.LineHeightMultiple, ptr.as(VoidPtr.class));
    }
    public void setMaximumLineHeight(double maximumLineHeight) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(maximumLineHeight);
        setValueForSpecifier(CTParagraphStyleSpecifier.MaximumLineHeight, ptr.as(VoidPtr.class));
    }
    public void setMinimumLineHeight(double minimumLineHeight) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(minimumLineHeight);
        setValueForSpecifier(CTParagraphStyleSpecifier.MinimumLineHeight, ptr.as(VoidPtr.class));
    }
    public void setLineSpacing(double lineSpacing) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(lineSpacing);
        setValueForSpecifier(CTParagraphStyleSpecifier.LineSpacing, ptr.as(VoidPtr.class));
    }
    public void setParagraphSpacing(double paragraphSpacing) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(paragraphSpacing);
        setValueForSpecifier(CTParagraphStyleSpecifier.ParagraphSpacing, ptr.as(VoidPtr.class));
    }
    public void setParagraphSpacingBefore(double paragraphSpacingBefore) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(paragraphSpacingBefore);
        setValueForSpecifier(CTParagraphStyleSpecifier.ParagraphSpacingBefore, ptr.as(VoidPtr.class));
    }
    public void setMaximumLineSpacing(double maximumLineSpacing) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(maximumLineSpacing);
        setValueForSpecifier(CTParagraphStyleSpecifier.MaximumLineSpacing, ptr.as(VoidPtr.class));
    }
    public void setMinimumLineSpacing(double minimumLineSpacing) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(minimumLineSpacing);
        setValueForSpecifier(CTParagraphStyleSpecifier.MinimumLineSpacing, ptr.as(VoidPtr.class));
    }
    public void setLineSpacingAdjustment(double lineSpacingAdjustment) {
        MachineSizedFloatPtr ptr = new MachineSizedFloatPtr();
        ptr.set(lineSpacingAdjustment);
        setValueForSpecifier(CTParagraphStyleSpecifier.LineSpacingAdjustment, ptr.as(VoidPtr.class));
    }
    public void setTabStops(List tabStops) {
        CFArray array = CFArray.create(tabStops);
        CFArray.CFArrayPtr ptr = new CFArray.CFArrayPtr();
        ptr.set(array);
        setValueForSpecifier(CTParagraphStyleSpecifier.TabStops, ptr.as(VoidPtr.class));
    }
    public void setLineBoundsOptions(CTLineBoundsOptions lineBoundsOptions) {
        LongPtr ptr = new LongPtr(lineBoundsOptions.value());
        setValueForSpecifier(CTParagraphStyleSpecifier.LineBoundsOptions, ptr.as(VoidPtr.class));
    }
    
    public void setValueForSpecifier(CTParagraphStyleSpecifier spec, VoidPtr value) {
        if (spec == null) throw new NullPointerException("spec");
        CTParagraphStyleSetting setting = settings.get(spec);
        if (setting == null) {
            setting = createSettingForSpecifier(spec);
            settings.put(spec, setting);
        }
        setting.setValue(value);
    }
    
    private CTParagraphStyleSetting createSettingForSpecifier(CTParagraphStyleSpecifier spec) {
        CTParagraphStyleSetting setting = new CTParagraphStyleSetting();
        setting.setSpec(spec);
        
        int size = 0;
        
        switch (spec) {
        case Alignment:
        case LineBreakMode:
        case BaseWritingDirection:
            size = BytePtr.sizeOf();
            break;
        case FirstLineHeadIndent:
        case HeadIndent:
        case TailIndent:
        case DefaultTabInterval:
        case LineHeightMultiple:
        case MaximumLineHeight:
        case MinimumLineHeight:
        case LineSpacing:
        case ParagraphSpacing:
        case ParagraphSpacingBefore:
        case MaximumLineSpacing:
        case MinimumLineSpacing:
        case LineSpacingAdjustment:
            size = MachineSizedFloatPtr.sizeOf();
            break;
        case TabStops:
            size = CFArrayPtr.sizeOf();
            break;
        case LineBoundsOptions:
            size = LongPtr.sizeOf();
            break;
        default:
            break;
        }
        setting.setValueSize(size);

        return setting;
    }
    
    public Map getSettings () {
        return settings;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy