236 lines
7.6 KiB
C#
236 lines
7.6 KiB
C#
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace QRCodeShareMain
|
|
{
|
|
public class QRImageProperties
|
|
{
|
|
private int _width; // without margin
|
|
private int _height; // without margin
|
|
private int _topMargin;
|
|
private int _bottomMargin;
|
|
private int _leftMargin;
|
|
private int _rightMargin;
|
|
|
|
private Color32 _foregroundColor;
|
|
private Color32 _backgroundColor;
|
|
private Color32 _paddingColor;
|
|
|
|
|
|
public QRImageProperties()
|
|
{
|
|
_width = 0;
|
|
_height = 0;
|
|
_topMargin = 0;
|
|
_bottomMargin = 0;
|
|
_leftMargin = 0;
|
|
_rightMargin = 0;
|
|
_foregroundColor = Color.black;
|
|
_backgroundColor = Color.white;
|
|
_paddingColor = Color.white;
|
|
}
|
|
|
|
public QRImageProperties(int width, int height, int topMargin, int bottomMargin, int leftMargin,
|
|
int rightMargin, Color32 foregroundColor, Color32 backgroundColor, Color32 paddingColor)
|
|
{
|
|
if (width < 0 || height < 0 || topMargin < 0 || bottomMargin < 0 || leftMargin < 0 || rightMargin < 0)
|
|
throw new ArgumentException("All dimensions and margins must be non-negative.");
|
|
|
|
if (width > height * 1.5f || height > width * 1.5f)
|
|
{
|
|
Debug.LogWarning("One edge of the QR Code would be greater than 1.5 times the other edge. it is not recommended because it may cause problems when scanning.");
|
|
}
|
|
_width = width;
|
|
_height = height;
|
|
_topMargin = topMargin;
|
|
_bottomMargin = bottomMargin;
|
|
_leftMargin = leftMargin;
|
|
_rightMargin = rightMargin;
|
|
_foregroundColor = foregroundColor;
|
|
_backgroundColor = backgroundColor;
|
|
_paddingColor = paddingColor;
|
|
}
|
|
|
|
public QRImageProperties(int width, int height, int margin)
|
|
{
|
|
if (width < 0 || height < 0 || margin < 0)
|
|
throw new ArgumentException("All dimensions and margins must be non-negative.");
|
|
if (width > height * 1.5f || height > width * 1.5f)
|
|
{
|
|
Debug.LogWarning("One edge of the QR Code would be greater than 1.5 times the other edge. it is not recommended because it may cause problems when scanning.");
|
|
}
|
|
_width = width;
|
|
_height = height;
|
|
_topMargin = margin;
|
|
_bottomMargin = margin;
|
|
_leftMargin = margin;
|
|
_rightMargin = margin;
|
|
_foregroundColor = Color.black;
|
|
_backgroundColor = Color.white;
|
|
_paddingColor = Color.white;
|
|
}
|
|
|
|
public int Width
|
|
{
|
|
get => _width;
|
|
set
|
|
{
|
|
if (value <= 0)
|
|
throw new ArgumentException("Width must be positive");
|
|
_width = value;
|
|
if (_width > _height * 1.5f || _height > _width * 1.5f)
|
|
{
|
|
Debug.LogWarning("One edge of the QR Code would be greater than 1.5 times the other edge. it is not recommended because it may cause problems when scanning.");
|
|
}
|
|
}
|
|
}
|
|
|
|
public int Height
|
|
{
|
|
get => _height;
|
|
set
|
|
{
|
|
if (value <= 0)
|
|
throw new ArgumentException("Height must be positive");
|
|
_height = value;
|
|
if (_width > _height * 1.5f || _height > _width * 1.5f)
|
|
{
|
|
Debug.LogWarning("One edge of the QR Code would be greater than 1.5 times the other edge. it is not recommended because it may cause problems when scanning.");
|
|
}
|
|
}
|
|
}
|
|
|
|
public int TopMargin
|
|
{
|
|
get => _topMargin;
|
|
set
|
|
{
|
|
if (value < 0)
|
|
throw new ArgumentException("TopMargin cannot be negative");
|
|
_topMargin = value;
|
|
}
|
|
}
|
|
|
|
public int BottomMargin
|
|
{
|
|
get => _bottomMargin;
|
|
set
|
|
{
|
|
if (value < 0)
|
|
throw new ArgumentException("BottomMargin cannot be negative");
|
|
_bottomMargin = value;
|
|
}
|
|
}
|
|
|
|
public int LeftMargin
|
|
{
|
|
get => _leftMargin;
|
|
set
|
|
{
|
|
if (value < 0)
|
|
throw new ArgumentException("LeftMargin cannot be negative");
|
|
_leftMargin = value;
|
|
}
|
|
}
|
|
|
|
public int RightMargin
|
|
{
|
|
get => _rightMargin;
|
|
set
|
|
{
|
|
if (value < 0)
|
|
throw new ArgumentException("RightMargin cannot be negative");
|
|
_rightMargin = value;
|
|
}
|
|
}
|
|
|
|
// Outer width with padding
|
|
public int OuterWidth
|
|
{
|
|
get => _width + _leftMargin + _rightMargin;
|
|
set
|
|
{
|
|
if (value - _leftMargin - _rightMargin < 0)
|
|
throw new ArgumentException("Width cannot be negative");
|
|
|
|
_width = value - _leftMargin - _rightMargin;
|
|
}
|
|
}
|
|
|
|
// Outer height with padding
|
|
public int OuterHeight
|
|
{
|
|
get => _height + _topMargin + _bottomMargin;
|
|
set
|
|
{
|
|
if (value - _topMargin - _bottomMargin < 0)
|
|
throw new ArgumentException("Height cannot be negative");
|
|
|
|
_height = value - _topMargin - _bottomMargin;
|
|
}
|
|
}
|
|
|
|
public Color32 ForegroundColor
|
|
{
|
|
get => _foregroundColor;
|
|
set => _foregroundColor = value;
|
|
}
|
|
|
|
public Color32 BackgroundColor
|
|
{
|
|
get => _backgroundColor;
|
|
set => _backgroundColor = value;
|
|
}
|
|
|
|
public Color32 PaddingColor
|
|
{
|
|
get => _paddingColor;
|
|
set => _paddingColor = value;
|
|
}
|
|
|
|
// Method to set uniform margin
|
|
public void SetUniformMargin(int margin)
|
|
{
|
|
_topMargin = margin;
|
|
_bottomMargin = margin;
|
|
_leftMargin = margin;
|
|
_rightMargin = margin;
|
|
}
|
|
|
|
// Method to set all margins
|
|
public void SetAllMargins(int topMargin, int bottomMargin, int leftMargin,
|
|
int rightMargin)
|
|
{
|
|
_topMargin = topMargin;
|
|
_bottomMargin = bottomMargin;
|
|
_leftMargin = leftMargin;
|
|
_rightMargin = rightMargin;
|
|
}
|
|
|
|
// Method to set all colors
|
|
public void SetAllColors(Color32 foregroundColor, Color32 backgroundColor, Color32 paddingColor)
|
|
{
|
|
_foregroundColor = foregroundColor;
|
|
_backgroundColor = backgroundColor;
|
|
_paddingColor = paddingColor;
|
|
}
|
|
|
|
public Vector2Int GetQRCodeCenter()
|
|
{
|
|
return new Vector2Int(LeftMargin + Width / 2, BottomMargin + Height / 2);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return
|
|
$"Width: {Width}, Height: {Height}, " +
|
|
$"Top Margin: {TopMargin}, Bottom Margin: {BottomMargin}, Left Margin: {LeftMargin}, Right Margin: {RightMargin}, " +
|
|
$"Outer Width: {OuterWidth}, Outer Height: {OuterHeight}" +
|
|
$"Foreground Color: {ForegroundColor}, Background Color: {BackgroundColor}, Padding Color: {PaddingColor}";
|
|
|
|
}
|
|
}
|
|
} |