• R/O
  • SSH
  • HTTPS

id3v2editorplus: Commit


Commit MetaInfo

Revision40 (tree)
Zeit2019-10-08 06:06:21
Autorderekwildstar

Log Message

Arqivos .apic e .uslt

adicionados, um para cada APIC e USLT do MP3

UClassesETipos.pas

Incluído um campo para referenciar o botão de exportação de imagem
Criada uma propriedade para retornar o tipo mime da imagem atualmente exibida
O tipo mime de cada imagem agora é utilizado e o programa agora é capaz de importar imagens jpeg e png

UDAMOPrincipal.pas

Componentes de abertura e salvamento de arquivos renomeados
Ao exportar o sistema agora veririfica o tipo mime da imagem e salva com a extensão correta automaticamente
Ao importar unma imagem o flag de modificado é alterado

UFORMPrincipal.pas

Como agora é possível carregar imagens JPEG, foi necessário incluir na cláusula uses do form principal a unit Vcl.imaging.jpeg

Roxette - How Do You Do.mp3

MP3 de exemplo com 3 APIC + 2 USLT + 1 SYLT

Ändern Zusammenfassung

Diff

Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
--- trunk/V2/bin/exe/Texto do USLT (en).html (revision 39)
+++ trunk/V2/bin/exe/Texto do USLT (en).html (nonexistent)
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
--- trunk/V2/bin/exe/Texto do USLT (pt-br).html (revision 39)
+++ trunk/V2/bin/exe/Texto do USLT (pt-br).html (nonexistent)
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
--- trunk/V2/src/UClassesETipos.pas (revision 39)
+++ trunk/V2/src/UClassesETipos.pas (revision 40)
@@ -185,6 +185,7 @@
185185 FSalvarImagem: TAction;
186186 FRemoverImagem: TAction;
187187 FSubstituirImagem: TAction;
188+ FExportarImagemAPIC: TAction;
188189 FContador: TLabel;
189190 FContadorSombra: TLabel;
190191
@@ -192,8 +193,9 @@
192193 function GetItem(AIndex: Integer): TAPICItem;
193194 procedure SetItem(AIndex: Integer; const AValue: TAPICItem);
194195 procedure Exibir(AIndice: Word);
196+ function GetTipoMimeDaImagemAtual: String;
195197 public
196- constructor Create(AImagem: TImage; ADescricao: TLabeledEdit; AMime: TLabeledEdit; ATipo: TComboBox; AProximaImagem: TAction; AImagemAnterior: TAction; ASalvarImagem: TAction; ARemoverImagem: TAction; ASubstituirImagem: TAction; AContador: TLabel; AContadorSombra: TLabel);
198+ constructor Create(AImagem: TImage; ADescricao: TLabeledEdit; AMime: TLabeledEdit; ATipo: TComboBox; AProximaImagem: TAction; AImagemAnterior: TAction; ASalvarImagem: TAction; ARemoverImagem: TAction; ASubstituirImagem: TAction; AExportarImagemAPIC: TAction; AContador: TLabel; AContadorSombra: TLabel);
197199
198200 procedure Limpar;
199201 procedure Proxima(AUltima: Boolean = False);
@@ -207,6 +209,7 @@
207209 procedure ConfirmarInformacoes;
208210
209211 property Items[AIndex: Integer]: TAPICItem read GetItem write SetItem; default;
212+ property TipoMimeDaImagemAtual: String read GetTipoMimeDaImagemAtual;
210213 end;
211214
212215 function SwapEndian32(AValue: DWORD): DWORD; register;
@@ -1103,6 +1106,7 @@
11031106 FSalvarImagem.Enabled := Count > 0;
11041107 FRemoverImagem.Enabled := FSalvarImagem.Enabled;
11051108 FSubstituirImagem.Enabled := FSalvarImagem.Enabled;
1109+ FExportarImagemAPIC.Enabled := FSalvarImagem.Enabled;
11061110 FContador.Caption := Succ(FIndice).ToString + ' / ' + Count.ToString;
11071111 FContadorSombra.Caption := FContador.Caption;
11081112 FDescricao.Enabled := FSalvarImagem.Enabled;
@@ -1166,11 +1170,10 @@
11661170 Exit;
11671171
11681172 Items[FIndice].Descricao := FDescricao.Text;
1169- Items[FIndice].TipoMime := 'image/png';
11701173 Items[FIndice].TipoDaImagem := FTipo.ItemIndex;
11711174 end;
11721175
1173-constructor TAPIC.Create(AImagem: TImage; ADescricao: TLabeledEdit; AMime: TLabeledEdit; ATipo: TComboBox; AProximaImagem, AImagemAnterior, ASalvarImagem, ARemoverImagem, ASubstituirImagem: TAction; AContador, AContadorSombra: TLabel);
1176+constructor TAPIC.Create(AImagem: TImage; ADescricao: TLabeledEdit; AMime: TLabeledEdit; ATipo: TComboBox; AProximaImagem, AImagemAnterior, ASalvarImagem, ARemoverImagem, ASubstituirImagem, AExportarImagemAPIC: TAction; AContador, AContadorSombra: TLabel);
11741177 begin
11751178 inherited Create(TAPICItem);
11761179
@@ -1184,6 +1187,7 @@
11841187 FSalvarImagem := ASalvarImagem;
11851188 FRemoverImagem := ARemoverImagem;
11861189 FSubstituirImagem := ASubstituirImagem;
1190+ FExportarImagemAPIC := AExportarImagemAPIC;
11871191 FContador := AContador;
11881192 FContadorSombra := AContadorSombra;
11891193 end;
@@ -1230,7 +1234,7 @@
12301234 FTipo.OnChange := nil;
12311235
12321236 FDescricao.Text := Items[AIndice].Descricao;
1233- FMime.Text := Items[AIndice].TipoMime;
1237+ FMime.Text := String(Items[AIndice].TipoMime);
12341238 FTipo.ItemIndex := Items[AIndice].TipoDaImagem;
12351239 finally
12361240 FDescricao.OnChange := OnChangeOriginal;
@@ -1248,10 +1252,6 @@
12481252 if (FIndice = -1) or (AArquivo = '') then
12491253 Exit;
12501254
1251- use esta informação para importar png ou jpg e para exportar de forma correta
1252- OutputDebugString(PChar(Items[FIndice].Imagem.Graphic.ClassName));
1253-
1254- // No futuro, verifique o tipo mime para salvar corretamente
12551255 Items[FIndice].Imagem.SaveToFile(AArquivo);
12561256
12571257 Result := True;
@@ -1262,6 +1262,11 @@
12621262 Result := TAPICItem(inherited GetItem(AIndex));
12631263 end;
12641264
1265+function TAPIC.GetTipoMimeDaImagemAtual: String;
1266+begin
1267+ Result := String(Items[FIndice].TipoMime);
1268+end;
1269+
12651270 function TAPIC.ImportarImagem(AArquivo: TFileName; ANovoAPIC: Boolean): Boolean;
12661271 var
12671272 APIC: TAPICItem;
@@ -1274,10 +1279,18 @@
12741279 else
12751280 APIC := Items[FIndice];
12761281
1277- APIC.TipoMime := 'image/png'; // no futuro detecte
1278-
12791282 APIC.Imagem.LoadFromFile(AArquivo);
12801283
1284+ if APIC.Imagem.Graphic.ClassNameIs('TPNGImage') then
1285+ APIC.TipoMime := 'image/png'
1286+ else if APIC.Imagem.Graphic.ClassNameIs('TJPEGImage') then
1287+ APIC.TipoMime := 'image/jpeg'
1288+ else
1289+ begin
1290+ Delete(APIC.Index);
1291+ raise Exception.Create('Imagem inválida. Apenas arquivos JPG/JPEG e PNG são suportados');
1292+ end;
1293+
12811294 if ANovoAPIC then
12821295 Proxima(True)
12831296 else
--- trunk/V2/src/UDAMOPrincipal.pas (revision 39)
+++ trunk/V2/src/UDAMOPrincipal.pas (revision 40)
@@ -58,8 +58,8 @@
5858 OPDIHTML: TOpenDialog;
5959 ACTNExportarPNGAPIC: TAction;
6060 ACTNImportarPNGAPIC: TAction;
61- SADIPNG: TSavePictureDialog;
62- OPDIPNG: TOpenPictureDialog;
61+ SADIPIC: TSavePictureDialog;
62+ OPDIPIC: TOpenPictureDialog;
6363 OPDIAPIC: TOpenDialog;
6464 SADIAPIC: TSaveDialog;
6565 procedure TIMELetreiroTimer(Sender: TObject);
@@ -589,6 +589,7 @@
589589 ,ACTNSalvarImagemComo
590590 ,ACTNRemoverImagem
591591 ,ACTNSubstituirImagem
592+ ,ACTNExportarPNGAPIC
592593 ,TFORMPrincipal(Owner).LABEImagens
593594 ,TFORMPrincipal(Owner).LABEImagensSombra);
594595
@@ -664,8 +665,21 @@
664665
665666 procedure TDAMOPrincipal.ExportarImagemAPIC;
666667 begin
667- if SADIPNG.Execute and FAPIC.ExportarImagem(SADIPNG.FileName) then
668- Application.MessageBox('PNG da imagem atual exportado com sucesso!','Exportação concluída',MB_ICONINFORMATION);
668+ if FAPIC.TipoMimeDaImagemAtual = 'image/png' then
669+ begin
670+ SADIPIC.Filter := 'Portable Network Graphics (*.png)|*.png';
671+ SADIPIC.DefaultExt := 'png';
672+ end
673+ else if FAPIC.TipoMimeDaImagemAtual = 'image/jpeg' then
674+ begin
675+ SADIPIC.Filter := 'Joint Photographic Experts Group (*.jpg, *.jpeg)|*.jpg;*.jpeg';
676+ SADIPIC.DefaultExt := 'jpg';
677+ end
678+ else
679+ raise Exception.Create('A imagem atual é de um tipo desconhecido. Não é possível exportar');
680+
681+ if SADIPIC.Execute and FAPIC.ExportarImagem(SADIPIC.FileName) then
682+ Application.MessageBox('Imagem atual exportada com sucesso!','Exportação concluída',MB_ICONINFORMATION);
669683 end;
670684
671685 procedure TDAMOPrincipal.ExportarTextoUSLT;
@@ -676,14 +690,20 @@
676690
677691 procedure TDAMOPrincipal.ImportarImagemAPIC;
678692 begin
679- if OPDIPNG.Execute and FAPIC.ImportarImagem(OPDIPNG.FileName,Application.MessageBox('Deseja adicionar uma nova imagem? Se você responder "não", apenas a imagem atual será substituída','Nova imagem?',MB_ICONQUESTION or MB_YESNO) = IDYES) then
693+ if OPDIPIC.Execute and FAPIC.ImportarImagem(OPDIPIC.FileName,(FAPIC.Count = 0) or (Application.MessageBox('Deseja adicionar uma nova imagem? Se você responder "não", apenas a imagem atual será substituída','Nova imagem?',MB_ICONQUESTION or MB_YESNO) = IDYES)) then
694+ begin
680695 Application.MessageBox('Imagem importada com sucesso!','Importação concluída',MB_ICONINFORMATION);
696+ DefinirStatusDeModificado(cId3v2);
697+ end;
681698 end;
682699
683700 procedure TDAMOPrincipal.ImportarTextoUSLT;
684701 begin
685- 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
702+ if OPDIHTML.Execute and FUSLT.ImportarTexto(OPDIHTML.FileName,(FUSLT.Count = 0) or (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
703+ begin
686704 Application.MessageBox('Texto da letra importado com sucesso!','Importação concluída',MB_ICONINFORMATION);
705+ DefinirStatusDeModificado(cId3v2);
706+ end;
687707 end;
688708
689709 procedure TDAMOPrincipal.LimparCamposDaAplicacao(ACamposALimpar: TContexto);
--- trunk/V2/src/UFORMPrincipal.pas (revision 39)
+++ trunk/V2/src/UFORMPrincipal.pas (revision 40)
@@ -6,7 +6,7 @@
66 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
77 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UDAMOPrincipal, Vcl.ComCtrls,
88 Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons, UPngSpeedButton, Vcl.Imaging.GIFImg,
9- Vcl.Imaging.pngimage, Vcl.ToolWin, Vcl.ActnMan, Vcl.ActnCtrls, Vcl.ActnMenus,
9+ Vcl.Imaging.pngimage, Vcl.Imaging.jpeg, Vcl.ToolWin, Vcl.ActnMan, Vcl.ActnCtrls, Vcl.ActnMenus,
1010 Vcl.OleCtrls, SHDocVw;
1111
1212 type
Show on old repository browser