Removed Automation 3 support (will be replaced with Automation 4 soon)

Removed stale p-designer project
Updated FexTracker to work with pre-compiled headers
Removed deprecated dc.BeginPaint()/EndPaint() calls causing warnings

Originally committed to SVN as r642.
This commit is contained in:
Niels Martin Hansen 2006-12-28 20:56:28 +00:00
parent 36ea067861
commit 064f6b7b9b
25 changed files with 34 additions and 613 deletions

View file

@ -2,6 +2,7 @@
// All rights reserved but the aegisub project is allowed to use it.
#include <math.h>
#include "StdAfx.h"
#include "FexGenericFilter_Include.h"
FexFilter::FexFilter()

View file

@ -1,9 +1,7 @@
// This file is part of FexGenericFilter and (C) 2006 by Hajo Krabbenhöft (tentacle)
// All rights reserved but the aegisub project is allowed to use it.
#include "stdio.h"
#include "math.h"
#include "memory.h"
#include "StdAfx.h"
#include "FexGenericFilter_Include.h"

View file

@ -4,6 +4,9 @@
// FexTracker.cpp : Defines the entry point for the DLL application.
//
#include "StdAfx.h"
#include "stdio.h"
#ifndef MIN
#define MIN(a,b) ((a)<(b))?(a):(b)
#endif
@ -12,9 +15,6 @@
#define MAX(a,b) ((a)>(b))?(a):(b)
#endif
#include "StdAfx.h"
#include "stdio.h"
FexTracker::FexTracker( int sx, int sy, int inFeatures )
{
printf( "[ using FexTracker (c)2006 Hajo Krabbenhoft ]\n" );

View file

@ -20,6 +20,7 @@
#include <windows.h>
#include <stdlib.h>
#include <math.h>
#include <memory.h>
#include <assert.h>
#include "FexTracker.h"

View file

@ -168,7 +168,6 @@ void AudioDisplay::UpdateImage(bool weak) {
// Draw image to be displayed
wxMemoryDC dc;
dc.SelectObject(*origImage);
dc.BeginDrawing();
// Black background
dc.SetPen(*wxTRANSPARENT_PEN);
@ -436,8 +435,6 @@ void AudioDisplay::UpdateImage(bool weak) {
}
// Done
dc.EndDrawing();
Refresh(false);
}
@ -1266,9 +1263,7 @@ void AudioDisplay::OnPaint(wxPaintEvent& event) {
if (w == 0 || h == 0) return;
wxPaintDC dc(this);
dc.BeginDrawing();
dc.DrawBitmap(*origImage,0,0);
dc.EndDrawing();
}
@ -1446,7 +1441,6 @@ void AudioDisplay::OnMouseEvent(wxMouseEvent& event) {
if (!player->IsPlaying()) {
// Draw bg
wxClientDC dc(this);
dc.BeginDrawing();
dc.DrawBitmap(*origImage,0,0);
if (inside) {
@ -1486,9 +1480,6 @@ void AudioDisplay::OnMouseEvent(wxMouseEvent& event) {
dc.SetTextForeground(wxColour(255,255,255));
dc.DrawText(text,dx,dy);
}
// End drawing
dc.EndDrawing();
}
// Scale dragging
@ -1797,7 +1788,6 @@ void AudioDisplay::OnUpdateTimer(wxTimerEvent &event) {
// Get DCs
//wxMutexGuiEnter();
wxClientDC dc(this);
dc.BeginDrawing();
// Draw cursor
int curpos = -1;
@ -1863,10 +1853,6 @@ void AudioDisplay::OnUpdateTimer(wxTimerEvent &event) {
dc.Blit(oldCurPos,0,1,h,&src,oldCurPos,0);
}
oldCurPos = curpos;
// Done
dc.EndDrawing();
//wxMutexGuiLeave();
}

View file

@ -298,7 +298,6 @@ void AudioKaraoke::OnPaint(wxPaintEvent &event) {
// Start Paint
wxPaintDC dc(this);
dc.BeginDrawing();
// Draw background
dc.SetBrush(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)));
@ -386,8 +385,6 @@ void AudioKaraoke::OnPaint(wxPaintEvent &event) {
}
}
// End paint
dc.EndDrawing();
event.Skip();
}

View file

@ -293,9 +293,7 @@ void BaseGrid::OnPaint (wxPaintEvent &event) {
bool direct = false;
if (direct) {
dc.BeginDrawing();
DrawImage(dc);
dc.EndDrawing();
}
else {
@ -325,8 +323,6 @@ void BaseGrid::OnPaint (wxPaintEvent &event) {
//////////////
// Draw image
void BaseGrid::DrawImage(wxDC &dc) {
dc.BeginDrawing();
// Get size and pos
int w = 0;
int h = 0;
@ -536,9 +532,6 @@ void BaseGrid::DrawImage(wxDC &dc) {
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dy = (editBox->linen+1-yPos) * lineHeight;
dc.DrawRectangle(0,dy,w,lineHeight+1);
// Done
dc.EndDrawing();
}

View file

@ -85,7 +85,6 @@ void ColorPickerSpectrum::OnPaint(wxPaintEvent &evt)
if (!background) return;
wxPaintDC dc(this);
dc.BeginDrawing();
wxMemoryDC memdc;
memdc.SelectObject(*background);
@ -113,8 +112,6 @@ void ColorPickerSpectrum::OnPaint(wxPaintEvent &evt)
dc.DrawLine(0, y, GetClientSize().x, y);
break;
}
dc.EndDrawing();
}
void ColorPickerSpectrum::OnMouse(wxMouseEvent &evt)
@ -231,7 +228,6 @@ void ColorPickerRecent::OnPaint(wxPaintEvent &evt)
int i = 0;
dc.SetPen(*wxTRANSPARENT_PEN);
dc.BeginDrawing();
for (int cy = 0; cy < rows; cy++) {
for (int cx = 0; cx < cols; cx++) {
@ -245,8 +241,6 @@ void ColorPickerRecent::OnPaint(wxPaintEvent &evt)
i++;
}
}
dc.EndDrawing();
}
void ColorPickerRecent::OnSize(wxSizeEvent &evt)

View file

@ -68,9 +68,7 @@ SplashScreen::SplashScreen(wxWindow *parent)
// Prepare
wxClientDC dc(this);
dc.BeginDrawing();
dc.DrawBitmap(splash,0,0);
dc.EndDrawing();
autoClose = new wxTimer(this,5000);
autoClose->Start(5000,true);
@ -98,9 +96,7 @@ END_EVENT_TABLE()
// OnPaint
void SplashScreen::OnPaint(wxPaintEvent& event) {
wxPaintDC dc(this);
dc.BeginDrawing();
dc.DrawBitmap(splash,0,0);
dc.EndDrawing();
}

View file

@ -58,7 +58,7 @@
#include "version.h"
#include "dialog_splash.h"
#include "dialog_tip.h"
#include "automation_filter.h"
//#include "automation_filter.h"
#include "audio_box.h"
#include "video_box.h"
#include "drop.h"
@ -584,10 +584,10 @@ void FrameMain::LoadSubtitles (wxString filename,wxString charset) {
wxMessageBox(wxString(err), _T("Error"), wxOK | wxICON_ERROR, NULL);
return;
}
catch (AutomationError &err) {
wxMessageBox(wxString(_T("Automation exception: ")) + err.message, _T("Error"), wxOK | wxICON_ERROR, NULL);
return;
}
// catch (AutomationError &err) {
// wxMessageBox(wxString(_T("Automation exception: ")) + err.message, _T("Error"), wxOK | wxICON_ERROR, NULL);
// return;
// }
catch (...) {
wxMessageBox(_T("Unknown error"), _T("Error"), wxOK | wxICON_ERROR, NULL);
return;
@ -796,15 +796,15 @@ void FrameMain::SynchronizeProject(bool fromSubs) {
long videoAr = 0;
double videoArValue = 0.0;
long videoZoom = 0;
{
std::list<AssAutomationFilter*>::const_iterator next = AssAutomationFilter::GetFilterList().begin(), f;
while (next != AssAutomationFilter::GetFilterList().end()) {
f = next++;
AutomationScript *s = (*f)->GetScript();
delete (*f);
delete s;
}
}
// {
// std::list<AssAutomationFilter*>::const_iterator next = AssAutomationFilter::GetFilterList().begin(), f;
// while (next != AssAutomationFilter::GetFilterList().end()) {
// f = next++;
// AutomationScript *s = (*f)->GetScript();
// delete (*f);
// delete s;
// }
// }
// Get AR
wxString arString = subs->GetScriptInfo(_T("Video Aspect Ratio"));
@ -825,7 +825,7 @@ void FrameMain::SynchronizeProject(bool fromSubs) {
wxString AutoScriptString = subs->GetScriptInfo(_T("Automation Scripts"));
// Automation script
if (AutoScriptString != _T("")) {
/* if (AutoScriptString != _T("")) {
wxStringTokenizer toker(AutoScriptString, _T("|"), wxTOKEN_STRTOK);
wxFileName AssFileName(subs->filename);
while (toker.HasMoreTokens()) {
@ -852,7 +852,7 @@ void FrameMain::SynchronizeProject(bool fromSubs) {
continue;
}
}
}
}*/
// Check if there is anything to change
int autoLoadMode = Options.AsInt(_T("Autoload linked files"));
@ -928,7 +928,7 @@ void FrameMain::SynchronizeProject(bool fromSubs) {
subs->SetScriptInfo(_T("Keyframes File"),MakeRelativePath(videoBox->videoDisplay->GetKeyFramesName(),AssFile::top->filename));
// Create list of Automation scripts
wxString scripts;
/* wxString scripts;
std::list<AssAutomationFilter*>::const_iterator f = AssAutomationFilter::GetFilterList().begin();
wxFileName AssFileName(subs->filename);
for (;f != AssAutomationFilter::GetFilterList().end(); ++f) {
@ -941,7 +941,7 @@ void FrameMain::SynchronizeProject(bool fromSubs) {
if (!scripts.empty()) {
scripts.RemoveLast();
subs->SetScriptInfo(_T("Automation Scripts"), scripts);
}
}*/
}
}

View file

@ -49,6 +49,7 @@
#include "video_zoom.h"
#include "video_box.h"
#include "ass_file.h"
#include "ass_dialogue.h"
#include "dialog_style_manager.h"
#include "dialog_translation.h"
#include "dialog_jumpto.h"
@ -62,7 +63,7 @@
#include "main.h"
#include "dialog_fonts_collector.h"
#include "dialog_about.h"
#include "automation_gui.h"
//#include "automation_gui.h"
#include "dialog_export.h"
#include "audio_box.h"
#include "dialog_selection.h"
@ -916,9 +917,9 @@ void FrameMain::OnOpenOptions (wxCommandEvent &event) {
// Open Automation
void FrameMain::OnOpenAutomation (wxCommandEvent &event) {
videoBox->videoDisplay->Stop();
DialogAutomationManager *automan = new DialogAutomationManager(this, SubsBox);
automan->ShowModal();
delete automan;
// DialogAutomationManager *automan = new DialogAutomationManager(this, SubsBox);
// automan->ShowModal();
// delete automan;
}

View file

@ -142,20 +142,11 @@
///////
// Lua
#ifdef __WXDEBUG__
#pragma comment(lib,"lua503d.lib")
#else
#pragma comment(lib,"lua503.lib")
#endif
//////////////
// FreeType 2
#ifdef __WXDEBUG__
#pragma comment(lib,"freetype2110MT_D.lib")
#else
#pragma comment(lib,"freetype2110MT.lib")
#endif
//#ifdef __WXDEBUG__
//#pragma comment(lib,"lua503d.lib")
//#else
//#pragma comment(lib,"lua503.lib")
//#endif
////////////

View file

@ -60,7 +60,5 @@ END_EVENT_TABLE()
// OnPaint
void BitmapControl::OnPaint(wxPaintEvent& event) {
wxPaintDC dc(this);
dc.BeginDrawing();
dc.DrawBitmap(bmp,0,0);
dc.EndDrawing();
}

View file

@ -1,194 +0,0 @@
// 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.
#include "ass_drawing.h"
#include <ctype.h>
// Point Four on the roadmap: code the ToString function
wxString AssDrawing::ToString()
{
return wxString(_T(""));
}
// Point Two on the roadmap: code the FromString function
// "Steal" some ideas from RTS.cpp :P
// Attempt to read a point from string src.
// On success: Add point to target, "eat" point from src, increase where by chars eaten, return true.
// Assume first char is a non-space
static bool ReadPoint(wxString &src, int &where, std::vector<AssDrawingPoint> &target)
{
AssDrawingPoint p;
int i = 0;
bool isneg = false;
// Check for negativity
if (src[i] == '+') isneg = false, i++;
if (src[i] == '-') isneg = true, i++;
// Faster exit for non-digit things
if (!isdigit(src[i])) return false;
// This loop should terminate even if it hits end of string, since isdigit('\0')==false
while (isdigit(src[i])) i++;
p.x = src.Mid(0, i).ToLong();
if (isneg) p.x = -p.x;
// Error checking
if (!isspace(src[i])) return false;
// Find start of next number
while (isspace(src[i])) i++;
// Get second number
int j = i;
isneg = false;
if (src[j] == '+') isneg = false, j++;
if (src[j] == '-') isneg = true, j++;
while (isdigit(src[j])) j++;
p.y = src.Mid(j, j-i).ToLong();
if (isneg) p.y = -p.y;
if (!isspace(src[j])) return false;
while (isspace(src[j])) j++;
// Finish off
src = src.Mid(j);
target.push_back(p);
where += j;
return true;
}
int AssDrawing::FromString(wxString src)
{
data.clear();
// Counter for number of chars eaten
int where = 0;
src.Trim(false);
while (src.Len() > 0) {
AssDrawingSegment seg;
int i = 0;
// Next character should be a letter, read it
switch (src[i]) {
case 'm':
seg.type = SEGMENT_MOVE;
break;
case 'n':
seg.type = SEGMENT_MOVE_NOCLOSE;
break;
case 'l':
seg.type = SEGMENT_LINE;
break;
case 'b':
seg.type = SEGMENT_BEZIER;
break;
case 's':
seg.type = SEGMENT_BSPLINE;
break;
case 'p':
seg.type = SEGMENT_BSPLINE_EXTEND;
break;
case 'c':
seg.type = SEGMENT_BSPLINE_CLOSE;
goto skippoints;
default:
// something unknown, stop parsing
return where+1;
}
where++, i++;
while (isspace(src[i])) where++, i++;
src = src.Mid(i);
while (ReadPoint(src, where, seg.points);
skippoints:
data.push_back(seg);
}
return 0;
}
// These might be a bit redundant... save them for last
void AssDrawing::Collapse()
{
// TODO
}
void AssDrawing::Expand()
{
// TODO
}
// I suppose Rescale is just a matter of calculating the new scale, calling Stretch and setting the scale field
void AssDrawing::Rescale(int new_scale)
{
// TODO
}
void AssDrawing::Stretch(float factor)
{
// TODO
}
// A note on the following functions:
// According to VSFilter (last time I checked), the width and height of a drawing are calculated just by looking
// at the min and max X and Y values that appear in the drawing string. This is technically wrong (because of
// splines, those do funny things) but better do as the Romans do.
AssDrawingPoint AssDrawing::GetMinXY()
{
// TODO
return AssDrawingPoint(0, 0);
}
AssDrawingPoint AssDrawing::GetMaxXY()
{
// TODO
return AssDrawingPoint(0, 0);
}
AssDrawingPoint AssDrawing::GetExtents()
{
// TODO
return AssDrawingPoint(0, 0);
}
AssDrawingPoint AssDrawing::GetCenterXY()
{
// TODO
return AssDrawingPoint(0, 0);
}

View file

@ -1,77 +0,0 @@
// 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_BSPLINE, // s <x1> <y2> <x2> <y2> <x3> <y3> [... <xN> <yN>]
SEGMENT_BSPLINE_EXTEND, // p <x> <y>
SEGMENT_BSPLINE_CLOSE, // c
// thought: maybe join the three last into one? (gabest doesn't)
};
struct AssDrawingPoint {
int x, y;
AssDrawingPoint(int _x, int _y) { x = _x; y = _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
AssDrawingPoint GetMinXY(); // get the lowest x and y coordinates present
AssDrawingPoint GetMaxXY(); // get the highest x and y coordinates present
AssDrawingPoint GetExtents(); // get the extents of the drawing as seen by VSFilter
AssDrawingPoint GetCenterXY(); // get the "center" of the drawing (as seen by VSFilter)
};
#endif

View file

@ -1,32 +0,0 @@
// 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.
#include <wx/window.h>
class AssDrawingControl : public wxWindow {
};

View file

@ -1,58 +0,0 @@
// 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.
#include <wx/app.h>
#include <wx/frame.h>
#include <wx/button.h>
#include "ass_drawing_control.h"
class PDesignerMain;
class PDesignerApp : public wxApp {
public:
bool OnInit()
{
SetAppName(_T("P-Designer"));
(new PDesignerMain())->Show();
return true;
}
};
IMPLEMENT_APP(PDesignerApp)
class PDesignerMain : public wxFrame {
private:
AssDrawingControl drawing;
public:
PDesignerMain()
: wxFrame(0, -1, _T("P-Designer"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE)
{
}
};

View file

@ -1,144 +0,0 @@
<?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="1">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;UNICODE"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="5"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="../bin/p-designer-debug.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="1">
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
RuntimeLibrary="4"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="../bin/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}">
<File
RelativePath=".\ass_drawing.cpp">
</File>
<File
RelativePath=".\p-designer.cpp">
</File>
</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>
<File
RelativePath=".\ass_drawing_control.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>

View file

@ -1,30 +0,0 @@
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
* Binary operations with other shapes
Things to check:
* What happens when a drawing doesn't start with an 'm' command?