diff --git a/aegilib/aegilib_2008.vcproj b/aegilib/aegilib_2008.vcproj index 073471bd4..18bd01c69 100644 --- a/aegilib/aegilib_2008.vcproj +++ b/aegilib/aegilib_2008.vcproj @@ -40,6 +40,7 @@ /> + + diff --git a/aegilib/include/aegilib/controller.h b/aegilib/include/aegilib/controller.h index 3e6eb4e86..a807ff5d4 100644 --- a/aegilib/include/aegilib/controller.h +++ b/aegilib/include/aegilib/controller.h @@ -1,79 +1,79 @@ -// Copyright (c) 2008, Rodrigo Braz Monteiro -// 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. -// -// ----------------------------------------------------------------------------- -// -// AEGISUB/ATHENASUB -// -// Website: http://www.aegisub.net -// Contact: mailto:amz@aegisub.net -// - -#pragma once -#include "athenastring.h" -#include "tr1.h" -#include "format.h" -#include "api.h" - -namespace Athenasub { - - // Prototypes - class Model; - class ActionList; - typedef shared_ptr ActionListPtr; - - // Controller class - class Controller { - private: - Model &model; - - public: - Controller (Model &model); - ActionListPtr CreateActionList(const String title,const String owner=L"",bool undoAble=true); - - void LoadFile(const String filename,const String encoding=L""); - void SaveFile(const String filename,const String encoding=L"UTF-8"); - - bool CanUndo(const String owner=L"") const; - bool CanRedo(const String owner=L"") const; - void Undo(const String owner=L""); - void Redo(const String owner=L""); - - DialoguePtr CreateDialogue() const; - StylePtr CreateStyle() const; - - DialogueConstPtr GetDialogue(size_t n) const; - DialogueConstPtr GetStyle(size_t n) const; - StyleConstPtr GetStyle(String name) const; - EntryConstPtr GetEntry(size_t n,String section) const; - - const FormatPtr GetFormat() const; - }; - - typedef shared_ptr ControllerPtr; - -} +// Copyright (c) 2008, Rodrigo Braz Monteiro +// 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. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB/ATHENASUB +// +// Website: http://www.aegisub.net +// Contact: mailto:amz@aegisub.net +// + +#pragma once +#include "athenastring.h" +#include "tr1.h" +#include "format.h" +#include "api.h" + +namespace Athenasub { + + // Prototypes + class Model; + class ActionList; + typedef shared_ptr ActionListPtr; + + // Controller class + class Controller { + private: + Model &model; + + public: + Controller (Model &model); + ActionListPtr CreateActionList(const String title,const String owner=L"",bool undoAble=true); + + void LoadFile(const String filename,const String encoding=L""); + void SaveFile(const String filename,const String encoding=L"UTF-8"); + + bool CanUndo(const String owner=L"") const; + bool CanRedo(const String owner=L"") const; + void Undo(const String owner=L""); + void Redo(const String owner=L""); + + DialoguePtr CreateDialogue() const; + StylePtr CreateStyle() const; + + DialogueConstPtr GetDialogue(size_t n) const; + DialogueConstPtr GetStyle(size_t n) const; + StyleConstPtr GetStyle(String name) const; + EntryConstPtr GetEntry(size_t n,String section) const; + + const FormatPtr GetFormat() const; + }; + + typedef shared_ptr ControllerPtr; + +} diff --git a/aegilib/include/aegilib/range.h b/aegilib/include/aegilib/range.h new file mode 100644 index 000000000..bd3a3dd72 --- /dev/null +++ b/aegilib/include/aegilib/range.h @@ -0,0 +1,58 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// 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. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB/ATHENASUB +// +// Website: http://www.aegisub.net +// Contact: mailto:amz@aegisub.net +// + +#pragma once +#include "exception.h" + +namespace Athenasub { + + // Range class + class Range { + private: + size_t start,end; + + public: + Range() : start(0), end(0) {} + Range(size_t _start,size_t _end) : start(_start), end(_end) {} + + size_t GetLine(size_t n) const { + if (start+n < end) return start+n; + else THROW_ATHENA_EXCEPTION(Exception::Out_Of_Range); + } + size_t GetSize() const { return end-start; } + size_t GetStart() const { return start; } + size_t GetEnd() const { return end; } + }; +} diff --git a/aegilib/include/aegilib/selection.h b/aegilib/include/aegilib/selection.h index c9fd7bfb3..2086eeb4f 100644 --- a/aegilib/include/aegilib/selection.h +++ b/aegilib/include/aegilib/selection.h @@ -35,25 +35,10 @@ #pragma once #include -#include "api.h" +#include "range.h" namespace Athenasub { - // Range class - class Range { - private: - size_t start,end; - - public: - Range() : start(0), end(0) {} - Range(size_t _start,size_t _end) : start(_start), end(_end) {} - - size_t GetLine(size_t n) const; - size_t GetSize() const { return end-start; } - size_t GetStart() const { return start; } - size_t GetEnd() const { return end; } - }; - // Selection class class Selection { private: diff --git a/aegilib/src/selection.cpp b/aegilib/src/selection.cpp index 4a4200134..b58b023a5 100644 --- a/aegilib/src/selection.cpp +++ b/aegilib/src/selection.cpp @@ -152,12 +152,3 @@ void Selection::RemoveSelection (const Selection ¶m) { (void) param; } - - -///////////////////// -// Get line in range -size_t Range::GetLine(size_t n) const -{ - if (start+n < end) return start+n; - else THROW_ATHENA_EXCEPTION(Exception::Out_Of_Range); -} diff --git a/aegilib/test/test_2008.vcproj b/aegilib/test/test_2008.vcproj index 10ac41e00..896580a3f 100644 --- a/aegilib/test/test_2008.vcproj +++ b/aegilib/test/test_2008.vcproj @@ -139,11 +139,12 @@ />