Starting out on a \p drawing editor
Originally committed to SVN as r525.
This commit is contained in:
parent
3c1936cf49
commit
da0da02ac0
3 changed files with 235 additions and 0 deletions
71
p-designer/ass_drawing.h
Normal file
71
p-designer/ass_drawing.h
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
// Copyright (c) 2006, Niels Martin Hansen
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
// * Neither the name of the Aegisub Group nor the names of its contributors
|
||||||
|
// may be used to endorse or promote products derived from this software
|
||||||
|
// without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
// POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef _ASS_DRAWING_H
|
||||||
|
#define _ASS_DRAWING_H
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <pair>
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
enum AssDrawingSegmentType {
|
||||||
|
SEGMENT_MOVE, // m <x> <y>
|
||||||
|
SEGMENT_MOVE_NOCLOSE, // n <x> <y>
|
||||||
|
SEGMENT_LINE, // l <x> <y>
|
||||||
|
SEGMENT_BEZIER, // b <x1> <y1> <x2> <y2> <x3> <y3>
|
||||||
|
SEGMENT_SPLINE, // s <x1> <y2> <x2> <y2> <x3> <y3> [... <xN> <yN>]
|
||||||
|
SEGMENT_SPLINE_EXTEND, // p <x> <y>
|
||||||
|
SEGMENT_SPLINE_CLOSE, // c
|
||||||
|
// thought: maybe join the three last into one?
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AssDrawingPoint {
|
||||||
|
int x, y;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AssDrawingSegment {
|
||||||
|
AssDrawingSegmentType type;
|
||||||
|
std::vector<AssDrawingPoint> points;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AssDrawing {
|
||||||
|
int scale;
|
||||||
|
std::vector<AssDrawingSegment> data;
|
||||||
|
|
||||||
|
wxString ToString(); // stupid conversion to string, doesn't try to shorten things out
|
||||||
|
int FromString(wxString &src); // returns 0 on success, index+1 of offending character on fail
|
||||||
|
|
||||||
|
void Collapse(); // try to join as many segments together as possible, without affecting the actual shape (eg. join "l 1 2 l 3 4" into "l 1 2 3 4")
|
||||||
|
void Expand(); // split into as many segments as possible, without creating any meaningless ones, such as null-moves (ie. expand "l 1 2 3 4" into "l 1 2 l 3 4")
|
||||||
|
|
||||||
|
void Rescale(int new_scale); // change the scale value, stretching the drawing to match the new one
|
||||||
|
void Stretch(float factor); // up/down scale the drawing by a factor
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
135
p-designer/p-designer.vcproj
Normal file
135
p-designer/p-designer.vcproj
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
<?xml version="1.0" encoding="shift_jis"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="7.10"
|
||||||
|
Name="p-designer"
|
||||||
|
ProjectGUID="{4FB7425E-8EDF-4107-87BE-3BB05A3B78B5}"
|
||||||
|
Keyword="Win32Proj">
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"/>
|
||||||
|
</Platforms>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="Debug"
|
||||||
|
IntermediateDirectory="Debug"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||||
|
MinimalRebuild="TRUE"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="5"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="4"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)/p-designer.exe"
|
||||||
|
LinkIncremental="2"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
ProgramDatabaseFile="$(OutDir)/p-designer.pdb"
|
||||||
|
SubSystem="2"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="Release"
|
||||||
|
IntermediateDirectory="Release"
|
||||||
|
ConfigurationType="1"
|
||||||
|
CharacterSet="2">
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||||
|
RuntimeLibrary="4"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
Detect64BitPortabilityProblems="TRUE"
|
||||||
|
DebugInformationFormat="3"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
OutputFile="$(OutDir)/p-designer.exe"
|
||||||
|
LinkIncremental="1"
|
||||||
|
GenerateDebugInformation="TRUE"
|
||||||
|
SubSystem="2"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedWrapperGeneratorTool"/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||||
|
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||||
|
<File
|
||||||
|
RelativePath=".\ass_drawing.h">
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Resource Files"
|
||||||
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||||
|
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
|
||||||
|
</Filter>
|
||||||
|
<File
|
||||||
|
RelativePath=".\readme.txt">
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
29
p-designer/readme.txt
Normal file
29
p-designer/readme.txt
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
This is a drawing designer, or is intended to become one.
|
||||||
|
The name p-designer obviously comes from the tag, \p.
|
||||||
|
|
||||||
|
Intended roadmap:
|
||||||
|
|
||||||
|
1. Create datastructures to store drawing in
|
||||||
|
2. Write something to parse \p strings into those datastructures
|
||||||
|
3. Render some kind of basic outline of the figure in a way
|
||||||
|
(is easy in Win32 and probably also wx)
|
||||||
|
4. Generate \p strings from the datastructures
|
||||||
|
5. Add draggable handles to the preview display
|
||||||
|
6. Add something to add further segments to a drawing
|
||||||
|
7. ???
|
||||||
|
|
||||||
|
Other stuff / wishlist:
|
||||||
|
* It should be possible to somehow split a segment into two, eg. click
|
||||||
|
somewhere on a bezier and split it into two there. Same for lines etc.
|
||||||
|
* How about moves? ('m' command)
|
||||||
|
- Maybe render as a dotted or dashed line between points
|
||||||
|
* Zoom ability
|
||||||
|
* Feature to convert between scales (number after \p)
|
||||||
|
* Stretch?
|
||||||
|
* Integrate into Aegisub video preview
|
||||||
|
* Maybe import outlines of one or more characters from a font to modify?
|
||||||
|
(At least is possible with Win32 and Freetype2.)
|
||||||
|
* Convert segments between different types
|
||||||
|
|
||||||
|
Things to check:
|
||||||
|
* What happens when a drawing doesn't start with an 'm' command?
|
Loading…
Reference in a new issue