• R/O
  • SSH
  • HTTPS

id3v2editorplus: Commit


Commit MetaInfo

Revision36 (tree)
Zeit2019-10-02 06:54:55
Autorderekwildstar

Log Message

UClassesAjudantes.pas

Incluída a classe TStreamHelper

UClassesETipos.pas

Removida a classe TStreamHelper
Vários métodos renomeados

UClassesMediadoras.pas

Vários métodos renomeados e outros adicionados e substituídos (em andamento)

UDAMOPrincipal.pas

Começo da implementaçao da exportação de PNG

Ändern Zusammenfassung

Diff

--- trunk/V2/src/UClassesAjudantes.pas (revision 35)
+++ trunk/V2/src/UClassesAjudantes.pas (revision 36)
@@ -77,6 +77,13 @@
7777 procedure AtribuirSYLT(const ASYLT: TSYLT);
7878 end;
7979
80+ TStreamHelper = class helper for TStream
81+ private
82+ function GetTextoUnicode: String;
83+ public
84+ property TextoUnicode: String read GetTextoUnicode;
85+ end;
86+
8087 implementation
8188
8289 uses
@@ -476,4 +483,70 @@
476483 inherited SetURL('WOAR',Value);
477484 end;
478485
486+{ TStreamHelper }
487+
488+function TStreamHelper.GetTextoUnicode: String;
489+var
490+ Byte1: Byte;
491+ Byte2: Byte;
492+begin
493+ Result := '';
494+
495+ if Position < Size then
496+ repeat
497+ Read(Byte1,1);
498+ Read(Byte2,1);
499+
500+ if (Byte1 <> $FF) and (Byte2 <> $FE) and ((Byte1 + Byte2) <> 0) then
501+ // Parece errado, mas a ordem dos bytes na memória é little endian,
502+ // enquanto que no arquivo a ordem é big endian (ordem de leitura)
503+ Result := Result + Char(Byte2 shl 8 or Byte1);
504+ until ((Byte1 + Byte2) = 0) or (Position = Size);
505+
506+// repeat
507+// // AIndiceInicial aponta para o primeiro caractere do BOM, logo, é
508+// // necessário incrementar em dois a variável para que ela aponte para o
509+// // primeiro caractere da string
510+// Inc(AIndiceInicial,2);
511+//
512+// i := AIndiceInicial;
513+//
514+// // O loop varre o array de dois em dois e só para quando encontra 2 zeros
515+// // consecutivos, que é o terminador unicode. O loop também termina, claro,
516+// // quando não existem mais dados a serem lidos
517+// while (ABytes[i] + ABytes[Succ(i)] <> 0) and (i < Length(ABytes)) do
518+// Inc(i,2);
519+//
520+// // No fim do loop anterior, i estará apontando para o primeiro zero do par
521+// // de zeros que termina a string UNICODE. De AIndiceInicial até i -
522+// // AIndiceInicial está o texto do que eu chamo de verso.
523+// Verso.Texto := TEncoding.Unicode.GetString(ABytes,AIndiceInicial,i - AIndiceInicial);
524+//
525+// // Como dito anteriormente, i está apontando para o terminador UNICODE,
526+// // logo, i + 2 apontará para o primeiro dos 4 Bytes que representam o tempo
527+// Inc(i,2);
528+//
529+// // Obtendo o tempo a partir da posição indicada em i
530+// Verso.Tempo := SwapEndian32(PDWORD(@ABytes[i])^);
531+//
532+// // Adiciona o verso ao conteúdo
533+// FConteudo.Add(Verso);
534+//
535+// // Ao incrementar i em 4, nos posicionamos exatamente no final do item SYLT
536+// // e consequentemente no início do próximo
537+// Inc(i,4);
538+//
539+// // Configura AIndiceInical como sendo i, para que o loop possa retornar ao
540+// // início usando o mesmo algorítmo
541+// AIndiceInicial := i;
542+// until i > High(ABytes);
543+
544+
545+
546+
547+
548+
549+
550+end;
551+
479552 end.
--- trunk/V2/src/UClassesETipos.pas (revision 35)
+++ trunk/V2/src/UClassesETipos.pas (revision 36)
@@ -49,19 +49,19 @@
4949 constructor Create(AWebBrowser: TWebBrowser; ADescricao: TLabeledEdit; AIdioma: TComboBox; AProximaUSLT: TAction; AUSLTAnterior: TAction; ASalvarUSLT: TAction; ARemoverUSLT: TAction; ASubstituirUSLT: TAction; AExportarUSLT: TAction; AContador: TLabel; AContadorSombra: TLabel);
5050
5151 procedure Limpar;
52- procedure ProximaUSLT(AUltima: Boolean = False);
52+ procedure Proxima(AUltima: Boolean = False);
5353 function ExcluirAtual: Boolean;
54- function ExportarTextoDaLetraAtual(AFileName: TFileName): Boolean;
55- function ImportarTextoDaLetra(AArquivo: TFileName; ANovoUSLT: Boolean): Boolean;
56- procedure SalvarLetraAtualNoArquivo(AArquivo: TFileName);
54+ function ExportarTexto(AArquivo: TFileName): Boolean;
55+ function ImportarTexto(AArquivo: TFileName; ANovoUSLT: Boolean): Boolean;
56+ procedure Salvar(AArquivo: TFileName);
5757 // Adiciona um TUSLTItem completo a partir de um arquivo de letra
5858 // não sincronizada (.uslt). Quando ANovoUSLT = true haverá a inclusão de
5959 // uma nova letra. Quando false, a letra atual será substituída pelo
6060 // conteúdo da letra contida no arquivo
61- procedure CarregarLetraDoArquivo(AArquivo: TFileName; ANovoUSLT: Boolean);
61+ procedure Carregar(AArquivo: TFileName; ANovoUSLT: Boolean);
6262 function Add: TUSLTItem; overload;
6363 procedure Add(AIdioma: TLanguageID; ADescricao: String; ATexto: String); overload;
64- procedure USLTAnterior(APrimeira: Boolean = False);
64+ procedure Anterior(APrimeira: Boolean = False);
6565 procedure ConfirmarInformacoesDaLetra;
6666
6767 property Items[AIndex: Integer]: TUSLTItem read GetItem write SetItem; default;
@@ -72,13 +72,6 @@
7272 Texto: String;
7373 end;
7474
75- TStreamHelper = class helper for TStream
76- private
77- function GetTextoUnicode: String;
78- public
79- property TextoUnicode: String read GetTextoUnicode;
80- end;
81-
8275 TSYLTItem = class(TCollectionItem)
8376 private
8477 FCodificacaoDoTexto: Byte;
@@ -144,18 +137,18 @@
144137 destructor Destroy; override;
145138
146139 procedure Limpar;
147- procedure ProximaSYLT(AUltima: Boolean = False);
140+ procedure Proxima(AUltima: Boolean = False);
148141 function ExcluirAtual: Boolean;
149- procedure SalvarLetraAtualNoArquivo(AArquivo: TFileName);
142+ procedure Salvar(AArquivo: TFileName);
150143 // Adiciona um TSYLTItem completo a partir de um arquivo de letra
151144 // sincronizada (.sylt). Quando ANovoSYLT = true haverá a inclusão de uma
152145 // nova letra. Quando false, a letra atual será substituída pelo conteúdo do
153146 // letra contida no arquivo
154- procedure CarregarLetraDoArquivo(AArquivo: TFileName; ANovoSYLT: Boolean);
147+ procedure Carregar(AArquivo: TFileName; ANovoSYLT: Boolean);
155148
156149 function Add: TSYLTItem; overload;
157150 procedure ConfirmarInformacoesDaLetra;
158- procedure SYLTAnterior(APrimeira: Boolean = False);
151+ procedure Anterior(APrimeira: Boolean = False);
159152 procedure ExibirVerso(APosicao: Cardinal);
160153 procedure IniciarThread;
161154 procedure FinalizarThread;
@@ -168,7 +161,7 @@
168161 implementation
169162
170163 uses
171- ActiveX, Vcl.Forms, WinAPI.Windows, MSHTML, UBassUtils;
164+ ActiveX, Vcl.Forms, WinAPI.Windows, MSHTML, UBassUtils, UClassesAjudantes;
172165
173166 function SwapEndian32(AValue: DWORD): DWORD; register;
174167 asm
@@ -182,7 +175,7 @@
182175 Result := TUSLTItem(inherited Add);
183176 end;
184177
185-procedure TUSLT.ProximaUSLT(AUltima: Boolean = False);
178+procedure TUSLT.Proxima(AUltima: Boolean = False);
186179 begin
187180 if (Count = 0) or (Succ(FIndice) = Count) then
188181 Exit;
@@ -231,7 +224,7 @@
231224 Result := TUSLTItem(inherited GetItem(AIndex));
232225 end;
233226
234-procedure TUSLT.SalvarLetraAtualNoArquivo(AArquivo: TFileName);
227+procedure TUSLT.Salvar(AArquivo: TFileName);
235228 begin
236229 with TFileStream.Create(AArquivo,fmCreate or fmShareDenyWrite) do
237230 try
@@ -256,7 +249,7 @@
256249 inherited SetItem(AIndex, AValue);
257250 end;
258251
259-procedure TUSLT.USLTAnterior(APrimeira: Boolean = False);
252+procedure TUSLT.Anterior(APrimeira: Boolean = False);
260253 begin
261254 if (Count = 0) or (FIndice = 0) then
262255 Exit;
@@ -303,7 +296,7 @@
303296 Doc.Close;
304297 end;
305298
306-procedure TUSLT.CarregarLetraDoArquivo(AArquivo: TFileName; ANovoUSLT: Boolean);
299+procedure TUSLT.Carregar(AArquivo: TFileName; ANovoUSLT: Boolean);
307300 var
308301 ArquivoUSLT: TFileStream;
309302 Header: PAnsiChar;
@@ -336,7 +329,7 @@
336329 USLT.Texto := ArquivoUSLT.TextoUnicode;
337330
338331 if ANovoUSLT then
339- ProximaUSLT(True)
332+ Proxima(True)
340333 else
341334 ExibirLetra(FIndice);
342335 finally
@@ -422,14 +415,14 @@
422415 AtualizarEstadoDosComponentesDeSaida;
423416 end;
424417
425-function TUSLT.ExportarTextoDaLetraAtual(AFileName: TFileName): Boolean;
418+function TUSLT.ExportarTexto(AArquivo: TFileName): Boolean;
426419 begin
427420 Result := False;
428421
429- if (FIndice = -1) or (AFileName = '') then
422+ if (FIndice = -1) or (AArquivo = '') then
430423 Exit;
431424
432- with TFileStream.Create(AFileName,fmCreate or fmShareDenyWrite) do
425+ with TFileStream.Create(AArquivo,fmCreate or fmShareDenyWrite) do
433426 try
434427 Write(PWideChar(Trim(Items[FIndice].Texto))^, (Length(Trim(Items[FIndice].Texto)) + 1) * 2);
435428 Result := True;
@@ -472,7 +465,7 @@
472465 end;
473466 end;
474467
475-function TUSLT.ImportarTextoDaLetra(AArquivo: TFileName; ANovoUSLT: Boolean): Boolean;
468+function TUSLT.ImportarTexto(AArquivo: TFileName; ANovoUSLT: Boolean): Boolean;
476469 var
477470 USLT: TUSLTItem;
478471 begin
@@ -489,7 +482,7 @@
489482 USLT.Texto := TextoUnicode;
490483
491484 if ANovoUSLT then
492- ProximaUSLT(True)
485+ Proxima(True)
493486 else
494487 ExibirLetra(FIndice);
495488
@@ -696,7 +689,7 @@
696689 FTipoDeConteudo.Enabled := FSalvarSYLT.Enabled;
697690 end;
698691
699-procedure TSYLT.CarregarLetraDoArquivo(AArquivo: TFileName; ANovoSYLT: Boolean);
692+procedure TSYLT.Carregar(AArquivo: TFileName; ANovoSYLT: Boolean);
700693 var
701694 ArquivoSYLT: TFileStream;
702695 Header: PAnsiChar;
@@ -742,7 +735,7 @@
742735 end;
743736
744737 if ANovoSYLT then
745- ProximaSYLT(True)
738+ Proxima(True)
746739 else
747740 ExibirLetra(FIndice);
748741 finally
@@ -925,7 +918,7 @@
925918 end;
926919 end;
927920
928-procedure TSYLT.ProximaSYLT(AUltima: Boolean = False);
921+procedure TSYLT.Proxima(AUltima: Boolean = False);
929922 begin
930923 if (Count = 0) or (Succ(FIndice) = Count) then
931924 Exit;
@@ -941,7 +934,7 @@
941934 ExibirLetra(FIndice);
942935 end;
943936
944-procedure TSYLT.SalvarLetraAtualNoArquivo(AArquivo: TFileName);
937+procedure TSYLT.Salvar(AArquivo: TFileName);
945938 begin
946939 with TFileStream.Create(AArquivo,fmCreate or fmShareDenyWrite) do
947940 try
@@ -975,7 +968,7 @@
975968 inherited SetItem(AIndex, AValue);
976969 end;
977970
978-procedure TSYLT.SYLTAnterior(APrimeira: Boolean);
971+procedure TSYLT.Anterior(APrimeira: Boolean);
979972 begin
980973 if (Count = 0) or (FIndice = 0) then
981974 Exit;
@@ -1010,77 +1003,4 @@
10101003 FSYLT.ExibirVerso(BASSTempoDecorridoEmMilissegundos);
10111004 end;
10121005
1013-{ TStreamHelper }
1014-
1015-function TStreamHelper.GetTextoUnicode: String;
1016-var
1017- Byte1: Byte;
1018- Byte2: Byte;
1019-begin
1020- Result := '';
1021-
1022- if Position < Size then
1023- repeat
1024- Read(Byte1,1);
1025- Read(Byte2,1);
1026-
1027- if (Byte1 <> $FF) and (Byte2 <> $FE) and ((Byte1 + Byte2) <> 0) then
1028- // Parece errado, mas a ordem dos bytes na memória é little endian,
1029- // enquanto que no arquivo a ordem é big endian (ordem de leitura)
1030- Result := Result + Char(Byte2 shl 8 or Byte1);
1031- until ((Byte1 + Byte2) = 0) or (Position = Size);
1032-
1033-
1034-
1035-
1036-
1037-
1038-
1039-
1040-// repeat
1041-// // AIndiceInicial aponta para o primeiro caractere do BOM, logo, é
1042-// // necessário incrementar em dois a variável para que ela aponte para o
1043-// // primeiro caractere da string
1044-// Inc(AIndiceInicial,2);
1045-//
1046-// i := AIndiceInicial;
1047-//
1048-// // O loop varre o array de dois em dois e só para quando encontra 2 zeros
1049-// // consecutivos, que é o terminador unicode. O loop também termina, claro,
1050-// // quando não existem mais dados a serem lidos
1051-// while (ABytes[i] + ABytes[Succ(i)] <> 0) and (i < Length(ABytes)) do
1052-// Inc(i,2);
1053-//
1054-// // No fim do loop anterior, i estará apontando para o primeiro zero do par
1055-// // de zeros que termina a string UNICODE. De AIndiceInicial até i -
1056-// // AIndiceInicial está o texto do que eu chamo de verso.
1057-// Verso.Texto := TEncoding.Unicode.GetString(ABytes,AIndiceInicial,i - AIndiceInicial);
1058-//
1059-// // Como dito anteriormente, i está apontando para o terminador UNICODE,
1060-// // logo, i + 2 apontará para o primeiro dos 4 Bytes que representam o tempo
1061-// Inc(i,2);
1062-//
1063-// // Obtendo o tempo a partir da posição indicada em i
1064-// Verso.Tempo := SwapEndian32(PDWORD(@ABytes[i])^);
1065-//
1066-// // Adiciona o verso ao conteúdo
1067-// FConteudo.Add(Verso);
1068-//
1069-// // Ao incrementar i em 4, nos posicionamos exatamente no final do item SYLT
1070-// // e consequentemente no início do próximo
1071-// Inc(i,4);
1072-//
1073-// // Configura AIndiceInical como sendo i, para que o loop possa retornar ao
1074-// // início usando o mesmo algorítmo
1075-// AIndiceInicial := i;
1076-// until i > High(ABytes);
1077-
1078-
1079-
1080-
1081-
1082-
1083-
1084-end;
1085-
10861006 end.
--- trunk/V2/src/UClassesMediadoras.pas (revision 35)
+++ trunk/V2/src/UClassesMediadoras.pas (revision 36)
@@ -4,7 +4,7 @@
44
55 uses
66 System.SysUtils, System.Classes, Vcl.ExtCtrls, Vcl.StdCtrls, UPngImageList,
7- Vcl.ActnList, Vcl.ExtDlgs;
7+ Vcl.ActnList;
88
99 type
1010 TPNGImageCollection = class (UPngImageList.TPNGImageCollection)
@@ -26,9 +26,18 @@
2626 constructor Create(AOwner: TComponent); override;
2727 procedure ConfigurarComponentesDeSaida(AImagem: TImage; ADescricao: TLabeledEdit; ATipo: TComboBox; AProximaImagem: TAction; AImagemAnterior: TAction; ASalvarImagem: TAction; ARemoverImagem: TAction; ASubstituirImagem: TAction; AContador: TLabel; AContadorSombra: TLabel);
2828 function ExcluirAtual: Boolean;
29- procedure SalvarImagemComo(ACaixaDeDialogoParaSalvarImagem: TSavePictureDialog);
30- function AdicionarImagem(ACaixaDeDialogoParaAbrirImagem: TOpenPictureDialog): Boolean;
31- function SubstituirImagem(ACaixaDeDialogoParaAbrirImagem: TOpenPictureDialog): Boolean;
29+
30+ function Exportar(AArquivo: TFileName): Boolean;
31+ function Importar(AArquivo: TFileName; ANovoAPIC: Boolean): Boolean;
32+ procedure Salvar(AArquivo: TFileName);
33+ procedure Carregar(AArquivo: TFileName; ANovoAPIC: Boolean);
34+
35+
36+
37+ procedure AdicionarAPIC(AArquivo: TFileName);
38+ procedure SubstituirAPIC(AArquivo: TFileName);
39+
40+
3241 procedure Limpar;
3342 procedure ExibirImagem(AIndiceDaImagem: Word);
3443 procedure ProximaImagem(AUltima: Boolean = False);
@@ -40,7 +49,7 @@
4049 implementation
4150
4251 uses
43- Vcl.Forms, WinApi.Windows;
52+ Vcl.Forms, WinApi.Windows, UClassesAjudantes;
4453
4554 { TPNGImageCollectionItemsHelper }
4655
@@ -79,23 +88,28 @@
7988 ExibirImagem(FIndice);
8089 end;
8190
82-procedure TPNGImageCollection.SalvarImagemComo(ACaixaDeDialogoParaSalvarImagem: TSavePictureDialog);
91+function TPNGImageCollection.Exportar(AArquivo: TFileName): Boolean;
8392 begin
84- if ACaixaDeDialogoParaSalvarImagem.Execute then
85- Items[FIndice].PngImage.SaveToFile(ACaixaDeDialogoParaSalvarImagem.FileName);
93+ Result := False;
94+
95+ if (FIndice = -1) or (AArquivo = '') then
96+ Exit;
97+
98+ Items[FIndice].PngImage.SaveToFile(AArquivo);
99+ Result := True;
86100 end;
87101
88-function TPNGImageCollection.SubstituirImagem(ACaixaDeDialogoParaAbrirImagem: TOpenPictureDialog): Boolean;
102+procedure TPNGImageCollection.Salvar(AArquivo: TFileName);
89103 begin
90- Result := ACaixaDeDialogoParaAbrirImagem.Execute;
91104
92- if Result then
93- begin
94- Items[FIndice].PngImage.LoadFromFile(ACaixaDeDialogoParaAbrirImagem.FileName);
95- ExibirImagem(FIndice);
96- end;
97105 end;
98106
107+procedure TPNGImageCollection.SubstituirAPIC(AArquivo: TFileName);
108+begin
109+ Items[FIndice].PngImage.LoadFromFile(AArquivo);
110+ ExibirImagem(FIndice);
111+end;
112+
99113 procedure TPNGImageCollection.ImagemAnterior(APrimeira: Boolean = False);
100114 begin
101115 if (Items.Count = 0) or (FIndice = 0) then
@@ -112,15 +126,30 @@
112126 ExibirImagem(FIndice);
113127 end;
114128
129+function TPNGImageCollection.Importar(AArquivo: TFileName; ANovoAPIC: Boolean): Boolean;
130+var
131+ APIC: TPNGImageCollectionItem;
132+begin
133+ if ANovoAPIC or (FIndice = -1) then
134+ APIC := Items.Add
135+ else
136+ APIC := Items[FIndice];
115137
116-function TPNGImageCollection.AdicionarImagem(ACaixaDeDialogoParaAbrirImagem: TOpenPictureDialog): Boolean;
138+ APIC.PngImage.LoadFromFile(AArquivo);
139+ APIC.Name := ExtractFileName(AArquivo) + '¬image/png¬0';
140+
141+ if ANovoAPIC then
142+ ProximaImagem(True)
143+ else
144+ ExibirImagem(FIndice);
145+
146+ Result := True;
147+end;
148+
149+procedure TPNGImageCollection.AdicionarAPIC(AArquivo: TFileName);
117150 begin
118- Result := ACaixaDeDialogoParaAbrirImagem.Execute;
119- if Result then
120- begin
121- Items.Add.PngImage.LoadFromFile(ACaixaDeDialogoParaAbrirImagem.FileName);
122- ProximaImagem(True);
123- end;
151+ Items.Add.PngImage.LoadFromFile(AArquivo);
152+ ProximaImagem(True);
124153 end;
125154
126155 procedure TPNGImageCollection.AtualizarEstadoDosComponentesDeSaida;
@@ -143,6 +172,45 @@
143172 end;
144173 end;
145174
175+procedure TPNGImageCollection.Carregar(AArquivo: TFileName; ANovoAPIC: Boolean);
176+var
177+ ArquivoAPIC: TFileStream;
178+ Header: PAnsiChar;
179+ APIC: TPNGImageCollectionItem;
180+ AuxByte: Byte;
181+begin
182+ ArquivoAPIC := TFileStream.Create(AArquivo,fmOpenRead or fmShareDenyWrite);
183+ Header := AllocMem(10);
184+
185+ try
186+ if ANovoAPIC or (FIndice = -1) then
187+ APIC := Items.Add
188+ else
189+ APIC := Items[FIndice];
190+
191+ ArquivoAPIC.Read(Header^,10);
192+
193+ if Header <> 'Iv2EP!APIC' then
194+ raise Exception.Create('Arquivo APIC inválido');
195+
196+ APIC.Name := ArquivoAPIC.TextoUnicode + '¬image/png¬';
197+
198+ ArquivoAPIC.Read(AuxByte,1);
199+
200+ APIC.Name := APIC.Name + AuxByte.ToString;
201+
202+ concluir este método carregando diretamente do arquivo .apic
203+
204+ if ANovoAPIC then
205+ ProximaImagem(True)
206+ else
207+ ExibirImagem(FIndice);
208+ finally
209+ FreeMem(Header);
210+ ArquivoAPIC.Free;
211+ end;
212+end;
213+
146214 procedure TPNGImageCollection.ConfigurarComponentesDeSaida(AImagem: TImage; ADescricao: TLabeledEdit; ATipo: TComboBox; AProximaImagem: TAction; AImagemAnterior: TAction; ASalvarImagem: TAction; ARemoverImagem: TAction; ASubstituirImagem: TAction; AContador: TLabel; AContadorSombra: TLabel);
147215 begin
148216 FImagem := AImagem;
--- trunk/V2/src/UDAMOPrincipal.pas (revision 35)
+++ trunk/V2/src/UDAMOPrincipal.pas (revision 36)
@@ -61,6 +61,8 @@
6161 ACTNExportarTextoUSLT: TAction;
6262 SADIHTML: TSaveDialog;
6363 OPDIHTML: TOpenDialog;
64+ ACTNExportarPNGAPIC: TAction;
65+ ACTNImportarPNGAPIC: TAction;
6466 procedure TIMELetreiroTimer(Sender: TObject);
6567 procedure DataModuleCreate(Sender: TObject);
6668 procedure DataModuleDestroy(Sender: TObject);
@@ -100,6 +102,8 @@
100102 procedure ACTNProximaSYLTExecute(Sender: TObject);
101103 procedure ACTNImportarTextoUSLTExecute(Sender: TObject);
102104 procedure ACTNExportarTextoUSLTExecute(Sender: TObject);
105+ procedure ACTNImportarPNGAPICExecute(Sender: TObject);
106+ procedure ACTNExportarPNGAPICExecute(Sender: TObject);
103107 private
104108 { Private declarations }
105109 FID3v1Tag: TID3v1Tag;
@@ -136,6 +140,8 @@
136140 procedure AdicionarImagem;
137141 procedure RemoverImagem;
138142 procedure SubstituirImagem;
143+ procedure ExportarPNGAPIC;
144+ procedure ImportarPNGAPIC;
139145
140146 procedure AdicionarUSLT;
141147 procedure RemoverUSLT;
@@ -348,19 +354,22 @@
348354 procedure TDAMOPrincipal.SalvarSYLT;
349355 begin
350356 if SADISYLT.Execute then
351- FSYLT.SalvarLetraAtualNoArquivo(SADISYLT.FileName);
357+ FSYLT.Salvar(SADISYLT.FileName);
352358 end;
353359
354360 procedure TDAMOPrincipal.SalvarUSLT;
355361 begin
356362 if SADIUSLT.Execute then
357- FUSLT.SalvarLetraAtualNoArquivo(SADIUSLT.FileName);
363+ FUSLT.Salvar(SADIUSLT.FileName);
358364 end;
359365
360366 procedure TDAMOPrincipal.SubstituirImagem;
361367 begin
362- if PNICAPIC.SubstituirImagem(OPDIAPIC) then
368+ if OPDIAPIC.Execute then
369+ begin
370+ PNICAPIC.SubstituirAPIC(OPDIAPIC.FileName);
363371 DefinirStatusDeModificado(cId3v2);
372+ end;
364373 end;
365374
366375 procedure TDAMOPrincipal.SubstituirUSLT;
@@ -367,7 +376,7 @@
367376 begin
368377 if OPDIUSLT.Execute then
369378 begin
370- FUSLT.CarregarLetraDoArquivo(OPDIUSLT.FileName,False);
379+ FUSLT.Carregar(OPDIUSLT.FileName,False);
371380 DefinirStatusDeModificado(cId3v2);
372381 end;
373382 end;
@@ -376,7 +385,7 @@
376385 begin
377386 if OPDISYLT.Execute then
378387 begin
379- FSYLT.CarregarLetraDoArquivo(OPDISYLT.FileName,False);
388+ FSYLT.Carregar(OPDISYLT.FileName,False);
380389 DefinirStatusDeModificado(cId3v2);
381390 end;
382391 end;
@@ -516,10 +525,10 @@
516525 PNICAPIC.ImagemAnterior(True);
517526
518527 FID3v2Tag.ObterUSLT(FUSLT);
519- FUSLT.USLTAnterior(True);
528+ FUSLT.Anterior(True);
520529
521530 FID3v2Tag.ObterSYLT(FSYLT);
522- FSYLT.SYLTAnterior(True);
531+ FSYLT.Anterior(True);
523532 end;
524533 end;
525534
@@ -644,15 +653,26 @@
644653 Result := (Pos('*',TFORMPrincipal(Owner).TASHID3v1.Caption) > 0) or (Pos('*',TFORMPrincipal(Owner).TASHID3v2.Caption) > 0);
645654 end;
646655
656+procedure TDAMOPrincipal.ExportarPNGAPIC;
657+begin
658+ if SPIDAPIC.Execute and PNICAPIC.Exportar(SPIDAPIC.FileName) then
659+ Application.MessageBox('PNG da imagem atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
660+end;
661+
647662 procedure TDAMOPrincipal.ExportarUSLT;
648663 begin
649- if SADIHTML.Execute and FUSLT.ExportarTextoDaLetraAtual(SADIHTML.FileName) then
664+ if SADIHTML.Execute and FUSLT.ExportarTexto(SADIHTML.FileName) then
650665 Application.MessageBox('Texto da letra atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
651666 end;
652667
668+procedure TDAMOPrincipal.ImportarPNGAPIC;
669+begin
670+
671+end;
672+
653673 procedure TDAMOPrincipal.ImportarUSLT;
654674 begin
655- if OPDIHTML.Execute and FUSLT.ImportarTextoDaLetra(OPDIHTML.FileName,Application.MessageBox('Deseja adicionar uma nova letra? Se você responder "não", apenas o texto da letra atual será substituído','Nova letra?',MB_ICONQUESTION or MB_YESNO) = IDYES) then
675+ if OPDIHTML.Execute and FUSLT.ImportarTexto(OPDIHTML.FileName,Application.MessageBox('Deseja adicionar uma nova letra? Se você responder "não", apenas o texto da letra atual será substituído','Nova letra?',MB_ICONQUESTION or MB_YESNO) = IDYES) then
656676 Application.MessageBox('Texto da letra importado com sucesso!','Importação concluída',MB_ICONINFORMATION);
657677 end;
658678
@@ -754,6 +774,11 @@
754774 CopiarDadosDoID3v1;
755775 end;
756776
777+procedure TDAMOPrincipal.ACTNExportarPNGAPICExecute(Sender: TObject);
778+begin
779+ ExportarPNGAPIC;
780+end;
781+
757782 procedure TDAMOPrincipal.ACTNExportarTextoUSLTExecute(Sender: TObject);
758783 begin
759784 ExportarUSLT;
@@ -764,6 +789,11 @@
764789 PNICAPIC.ImagemAnterior;
765790 end;
766791
792+procedure TDAMOPrincipal.ACTNImportarPNGAPICExecute(Sender: TObject);
793+begin
794+ ImportarPNGAPIC;
795+end;
796+
767797 procedure TDAMOPrincipal.ACTNImportarTextoUSLTExecute(Sender: TObject);
768798 begin
769799 ImportarUSLT;
@@ -796,12 +826,12 @@
796826
797827 procedure TDAMOPrincipal.ACTNProximaSYLTExecute(Sender: TObject);
798828 begin
799- FSYLT.ProximaSYLT;
829+ FSYLT.Proxima;
800830 end;
801831
802832 procedure TDAMOPrincipal.ACTNProximaUSLTExecute(Sender: TObject);
803833 begin
804- FUSLT.ProximaUSLT;
834+ FUSLT.Proxima;
805835 end;
806836
807837 procedure TDAMOPrincipal.ACTNRemoverID3v1Execute(Sender: TObject);
@@ -858,7 +888,7 @@
858888
859889 procedure TDAMOPrincipal.ACTNSalvarImagemComoExecute(Sender: TObject);
860890 begin
861- PNICAPIC.SalvarImagemComo(SPIDAPIC);
891+ ShowMessage('Implemente o salvamento completo (Imagem + atributos)')
862892 end;
863893
864894 procedure TDAMOPrincipal.ACTNSalvarSYLTExecute(Sender: TObject);
@@ -893,7 +923,7 @@
893923
894924 procedure TDAMOPrincipal.ACTNSYLTAnteriorExecute(Sender: TObject);
895925 begin
896- FSYLT.SYLTAnterior;
926+ FSYLT.Anterior;
897927 end;
898928
899929 procedure TDAMOPrincipal.ACTNUltimaMusicaExecute(Sender: TObject);
@@ -903,13 +933,16 @@
903933
904934 procedure TDAMOPrincipal.ACTNUSLTAnteriorExecute(Sender: TObject);
905935 begin
906- FUSLT.USLTAnterior;
936+ FUSLT.Anterior;
907937 end;
908938
909939 procedure TDAMOPrincipal.AdicionarImagem;
910940 begin
911- if PNICAPIC.AdicionarImagem(OPDIAPIC) then
941+ if OPDIAPIC.Execute then
942+ begin
943+ PNICAPIC.AdicionarAPIC(OPDIAPIC.FileName);
912944 DefinirStatusDeModificado(cId3v2);
945+ end;
913946 end;
914947
915948 procedure TDAMOPrincipal.AdicionarUSLT;
@@ -916,7 +949,7 @@
916949 begin
917950 if OPDIUSLT.Execute then
918951 begin
919- FUSLT.CarregarLetraDoArquivo(OPDIUSLT.FileName,True);
952+ FUSLT.Carregar(OPDIUSLT.FileName,True);
920953 DefinirStatusDeModificado(cId3v2);
921954 end;
922955 end;
@@ -925,7 +958,7 @@
925958 begin
926959 if OPDISYLT.Execute then
927960 begin
928- FSYLT.CarregarLetraDoArquivo(OPDISYLT.FileName,True);
961+ FSYLT.Carregar(OPDISYLT.FileName,True);
929962 DefinirStatusDeModificado(cId3v2);
930963 end;
931964 end;
Show on old repository browser