コード例 #1
0
    private void pSaveOASIS(oasWriter ow)
    {
        ow.modal.absoluteMode = ow.modal.absoluteMode switch
        {
            false => true,
            _ => ow.modal.absoluteMode
        };

        byte info_byte = 64;  //explicid text

        if (layer_nr != ow.modal.textlayer)
        {
            info_byte += 1;
        }
        if (datatype_nr != ow.modal.texttype)
        {
            info_byte += 2;
        }
        if (point.X != ow.modal.text_x)
        {
            info_byte += 16;
        }
        if (point.Y != ow.modal.text_y)
        {
            info_byte += 8;
        }
        ow.writeUnsignedInteger(19);
        ow.writeRaw(info_byte);
        ow.writeString(name);
        switch (info_byte & 1)
        {
        case > 0:
            ow.modal.textlayer = layer_nr;
            ow.writeUnsignedInteger((uint)ow.modal.textlayer);
            break;
        }
        switch (info_byte & 2)
        {
        case > 0:
            ow.modal.texttype = datatype_nr;
            ow.writeUnsignedInteger((uint)datatype_nr);
            break;
        }
        switch (info_byte & 16)
        {
        case > 0:
            ow.modal.text_x = point.X;
            ow.writeSignedInteger(ow.modal.text_x);
            break;
        }
        switch (info_byte & 8)
        {
        case > 0:
            ow.modal.text_y = point.Y;
            ow.writeSignedInteger(ow.modal.text_y);
            break;
        }
        if (presentation != GCSetup.defaultTextPresentation)
        {
            //o->error->addItem("Text presentation can not be saved in OASIS files.", 4);
        }
        switch (Math.Abs(trans.mag - 1))
        {
        case > double.Epsilon:
            //o->error->addItem("Scaled text can not be saved in OASIS files.", 4);
            break;
        }
        if (trans.angle != 0)
        {
            //o->error->addItem("Rotated text can not be saved in OASIS files.", 4);
        }
    }
コード例 #2
0
 public override void saveOASIS(oasWriter ow)
 {
     pSaveOASIS(ow);
 }
コード例 #3
0
 private void pSaveOASIS(oasWriter ow)
 {
     ow.modal.absoluteMode = ow.modal.absoluteMode switch
     {
         false => true,
         _ => ow.modal.absoluteMode
     };
     byte info_byte = 128;  //explicid cellname;
     switch (trans.mirror_x)
     {
         case true:
             info_byte += 1;
             break;
     }
     switch (Math.Abs(trans.mag - 1))
     {
         case > double.Epsilon:
             info_byte += 4;
             break;
     }
     if (trans.angle != 0)
     {
         info_byte += 2;
     }
     if (point.X != ow.modal.placement_x)
     {
         info_byte += 32;
     }
     if (point.Y != ow.modal.placement_y)
     {
         info_byte += 16;
     }
     ow.writeUnsignedInteger(18);
     ow.writeRaw(info_byte);
     ow.writeString(cell_ref.cellName);
     switch (info_byte & 4)
     {
         case > 0:
             ow.writeReal(trans.mag);
             break;
     }
     switch (info_byte & 2)
     {
         case > 0:
             ow.writeReal(trans.angle);
             break;
     }
     switch (info_byte & 32)
     {
         case > 0:
             ow.modal.placement_x = point.X;
             ow.writeSignedInteger(ow.modal.placement_x);
             break;
     }
     switch (info_byte & 16)
     {
         case > 0:
             ow.modal.placement_y = point.Y;
             ow.writeSignedInteger(ow.modal.placement_y);
             break;
     }
 }
コード例 #4
0
    // Cellrefarrays also have to resolve to integer placement.
    // Placement errors will occur if the x, y instance counts do not divide the array X, Y values cleanly.
    private void pSaveOASIS(oasWriter ow)
    {
        ow.modal.absoluteMode = ow.modal.absoluteMode switch
        {
            false => true,
            _ => ow.modal.absoluteMode
        };
        byte info_byte = 128;  //explicid cellname,repition;
        if (count_x > 1 || count_y > 1)
        {
            info_byte += 8;
        }

        switch (trans.mirror_x)
        {
            case true:
                info_byte += 1;
                break;
        }

        switch (Math.Abs(trans.mag - 1))
        {
            case > double.Epsilon:
                info_byte += 4;
                break;
        }

        if (trans.angle != 0)
        {
            info_byte += 2;
        }

        if (point.X != ow.modal.placement_x)
        {
            info_byte += 32;
        }

        if (point.Y != ow.modal.placement_y)
        {
            info_byte += 16;
        }

        ow.writeUnsignedInteger(18);
        ow.writeRaw(info_byte);
        ow.writeString(cell_ref.cellName);

        switch (info_byte & 4)
        {
            case > 0:
                ow.writeReal(trans.mag);
                break;
        }

        switch (info_byte & 2)
        {
            case > 0:
                ow.writeReal(trans.angle);
                break;
        }
        switch (info_byte & 32)
        {
            case > 0:
                ow.modal.placement_x = point.X;
                ow.writeSignedInteger(ow.modal.placement_x);
                break;
        }
        switch (info_byte & 16)
        {
            case > 0:
                ow.modal.placement_y = point.Y;
                ow.writeSignedInteger(ow.modal.placement_y);
                break;
        }
        switch (info_byte & 8)
        {
            case > 0 when count_x == 1:
                ow.writeUnsignedInteger(3);
                ow.modal.y_dimension = count_y;
                ow.writeUnsignedInteger((uint)(count_y - 2));
                ow.modal.y_space = pitch.Y;
                ow.writeUnsignedInteger((uint)pitch.Y);
                break;
            case > 0 when count_y == 1:
                ow.writeUnsignedInteger(2);
                ow.modal.x_dimension = count_x;
                ow.writeUnsignedInteger((uint)(count_x - 2));
                ow.modal.x_space = pitch.X;
                ow.writeUnsignedInteger((uint)pitch.X);
                break;
            case > 0:
                ow.writeUnsignedInteger(1);
                ow.modal.x_dimension = count_x;
                ow.modal.y_dimension = count_y;
                ow.writeUnsignedInteger((uint)(count_x - 2));
                ow.writeUnsignedInteger((uint)(count_y - 2));
                ow.modal.x_space = pitch.X;
                ow.modal.y_space = pitch.Y;
                ow.writeUnsignedInteger((uint)pitch.X);
                ow.writeUnsignedInteger((uint)pitch.Y);
                break;
        }
    }
コード例 #5
0
ファイル: box.cs プロジェクト: philstopford/DesignLibs_GPL
    private void pSaveOASIS(oasWriter ow)
    {
        ow.modal.absoluteMode = ow.modal.absoluteMode switch
        {
            false => true,
            _ => ow.modal.absoluteMode
        };

        byte info_byte = 0;

        if (layer_nr != ow.modal.layer)
        {
            info_byte += 1;
        }
        if (datatype_nr != ow.modal.datatype)
        {
            info_byte += 2;
        }
        if (rect.Left != ow.modal.geometry_x)
        {
            info_byte += 16;
        }
        if (rect.Top != ow.modal.geometry_y)
        {
            info_byte += 8;
        }
        if (rect.Bottom - rect.Top != ow.modal.geometry_h)
        {
            info_byte += 32;
        }
        if (rect.Right - rect.Left != ow.modal.geometry_w)
        {
            info_byte += 64;
        }
        if (rect.Right - rect.Left == rect.Bottom - rect.Top)
        {
            info_byte += 128;
            info_byte  = (byte)(info_byte & (255 - 32));
        }
        ow.writeUnsignedInteger(20);
        ow.writeRaw(info_byte);
        switch (info_byte & 1)
        {
        case > 0:
            ow.modal.layer = layer_nr;
            ow.writeUnsignedInteger((uint)ow.modal.layer);
            break;
        }
        switch (info_byte & 2)
        {
        case > 0:
            ow.modal.datatype = datatype_nr;
            ow.writeUnsignedInteger((uint)datatype_nr);
            break;
        }
        switch (info_byte & 64)
        {
        case > 0:
        {
            ow.modal.geometry_w = rect.Right - rect.Left;
            ow.writeUnsignedInteger((uint)ow.modal.geometry_w);
            ow.modal.geometry_h = (info_byte & 128) switch
            {
                > 0 => ow.modal.geometry_w,
                _ => ow.modal.geometry_h
            };

            break;
        }
        }