mirror of https://github.com/odrling/Aegisub
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:
parent
36ea067861
commit
064f6b7b9b
|
@ -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()
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
||||
|
|
|
@ -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" );
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <windows.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <memory.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "FexTracker.h"
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
////////////
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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
|
|
@ -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 {
|
||||
};
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
};
|
|
@ -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>
|
|
@ -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?
|
Loading…
Reference in New Issue